ccs c ile ikili displayde 1 dakika ara ile geri sayma yardım

Katılım
25 Kas 2009
Mesajlar
34
Puanları
1
Sayın ustalar tek basamaklı geri sayma işleminde sorun yok ancak iki basamaklı olunca işler karışıyor 99dan geriye 10 veya 30nsaniye aralıklarla saydırma işlemi için ne yapmalıyım aşağıda kodları veriyorum şimdi çok hızlı geri sayıyor for döngüsüne delay_ms(10000) değerini girincede geri sayıyor ancak displayde tarama hızı kadar rakkamlar görünüyor yardımlarınızı bekliyorum
teşekkürler.

#use fast_io(a)
#use fast_io(b)
#define display_1 pin_a0
#define display_2 pin_a1
#define arttir pin_a2
#define azalt pin_a3

char birler=0,onlar=0,sayi=0;
const int digit[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6f};

void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
set_tris_a(0xfc);
set_tris_b(0x00);
output_low(display_1);
output_low(display_2);

while(true)

{

birler=sayi%10;
onlar=sayi/10;
output_high(display_2);
output_b(digit[birler]);
delay_ms(5);
output_low(display_2);
output_high(display_1);
output_b(digit[onlar]);
delay_ms(5);
output_low(display_1);

{
for(sayi=99;sayi<=99;sayi--)
{

birler=sayi%10;
onlar=sayi/10;

output_high(display_2);
output_b(digit[birler]);
delay_ms(10);
output_low(display_2);
output_high(display_1);
output_b(digit[onlar]);
delay_ms(10);
output_low(display_1);

}
}
 
https://www.kontrolkalemi.com/forum/pic-programlama/27221-ccs-c-display-uygulama-lutfen-yardim.html siz yazılanları dikkate almıyorsunuz. o zaman kimden yardım bekliyordunuz? Bir Allahın kulunun kodu istediğiniz şekilde çalıştırıp size teslim etmesini mi? Eğer öyleyse zamanı müsait olan birisi çıkıp size, düşündüğünüz anlamda, yardım etmesini bekleyeceksiniz. Tavsiyeleri dikkate almıyorsanız size yardım etmeye çalışanların zamanını öldürüyorsunuz demektir.
 
HOCAM DİKKATE ALMAZ OLURMUYUM tabiki sizin bana gönderdiğiniz yani yukarıdaki linkde ki tavsiyenizi dennedeim ancak olmadı bende size cevap yazmışım konu iki sayfa olmuş dikkatinizden kaçmış olmalı hemen sitem etmişsiniz sizin çalışmayan tavsiyeniz üzerine arttır ve azalt butonlarını çıkarıp sadece dakika geri saymasını istedim sizin dikkatinizden kaçmış bu mesajda ki sorun iki basamaklı geri veya ileri saymasını istemiştim yazılım sayıyor ancak istediğim zaman aralıklarında saymıyor ayrıca ben size mutlaka uğraşıp başaramadığım yerlerde yardım istedim hiçbir zman üzerinde çalışmadan bir kod yazmadım mesajlarımda. Sitem etmede haksızlık ettiğinizi düşünüyorum. Ayrıca sadece tavside de bulunsanız olur demeişim msjlaqrımda sizinde msjları pek dikkate aldığınızı ben düşünmedim.Haksızlık etmişsiniz bana neyse amacım polemik yaratmak değil yardım etmeniz veye etmemenz sizin tasarufunuzdur saygı duyarım

-----------------------------------------------------------------------

Değerli usta arkadaşlar ccs c ile sorun şudur ; 0-9 sayıcıda sorun yok istediğim zaman aralıklarında sayıyor.Ancak iki basamaklı olunca ortak katot 7 segment displayde geri veya ileri saydırmada zaman aralıkları tarama işlemi kadar oluyuor maksimum. Benim gibi yeni başlayan arkadaşlara tavsiyeleriniz oldukca yardımcı olacaktır.
Yapmak istediğim 99-0 sayarken birer dakika ara ile saymasını istiyorum . Yazdığım kodda birer dakika ara ile sayıyor ancak displayde tarama süresi kadar görünüyor 99 bir dakika displayde görünecek sonra 98 1 dakika görünecek ...... gibi
Timer1 kesmesimi kullanmalıyım veya ne yapmalıyım timer1 kesmesi ile uğraş veye başka bir kesme tavsiyesi alabilirmiyim yol göstermenizi rica ederim
 
Moderatör tarafında düzenlendi:
herhangi bir yerde 1 dakikalık bekleme ile ilgili birşey göremedim ya da 1 dakikanın geçip geçmediği ile ilgili herhangi bir yerde birşey yok. sadece displayde tarama işlemi var burada.
bir şekilde 1 dakika bekleme yapmanız gerekiyor. isterseniz timer0 kesmesi ile 1 dakikanın geçip geçmediğini saydırarak yeni sayı değerini ona göre ayarlarsınız çıkararak, ya da kesme kullanmadan, döngü içerisinde bir değişkeni artırıp dakika olup olmadığını anlamaya çalışmanız ve ondan sonra ilgili sayı değerini azaltmanız gerekmektedir.
 
hocam tarama gecikmesinin altına delay_ms(60000); koyunca 1 dakika bekliyr ancak displayde bir dakika görünmüyor tarama süresi kadar görünüyor.
Timer kesmesini sayıcı olarakmı yoksa zamanlayıcı olarkmı kullanmalıyım ilginize tşekkürler
 
bunu bu şekilde koyarsanız elbette o sürede görülür çünkü for döngüsü içerisinde 1 dakika geçip geçmediğini kontrol ettirmiyorsunuz. istediğiniz kadar geçikme yazın,

for(sayi=99;sayi<=99;sayi--)
{

birler=sayi%10;
onlar=sayi/10;

output_high(display_2);
output_b(digit[birler]);
delay_ms(10);
output_low(display_2);
output_high(display_1);
output_b(digit[onlar]);
delay_ms(10);
output_low(display_1);

}

kodun bu kısmını etkilemiyor o gecikme. zaten geriye sayma ve tarama işi burada yapılıyor.
bu kısım şu tarzda olmalı.

böyle bir değişken tanımlanabilir :
long dakika=0;

kod kısmıda şöyle değiştirilebilir yani yukarıda belirttiğim kısım sadece ( for'lu kısım )
while(true)
{


dakika=dakika+1;
if(dakika=3000){
dakika=0;
if(sayi!=0){
sayi=sayi-1;
}else{
sayi=0;
}
}


birler=sayi%10;
onlar=sayi/10;

output_high(display_2);
output_b(digit[birler]);
delay_ms(10);
output_low(display_2);
output_high(display_1);
output_b(digit[onlar]);
delay_ms(10);
output_low(display_1);

}

bu tarz bir kullanım çalışacaktır bana göre. denemedim şuan ancak çalışmalı.
burada for döngün 20ms ediyor. 3000 defa tarama sonunda sayı eksilmeli. onun için bir dakika değişkeni var bu her döngüde 1 artıyor. 3000 olduğunda sıfırlanıyor sayı bir azaltılıyor bu sayfa yeniden başlıyor.
basit olarak bu tarz birşeyler denemelisiniz.
 
Hocam yine tarama hızı kadar hızlı 99dan geriye sayıyor malesef olmadı başka tavsiyeniz varmı
hocam tarama işlemini 10 kez tekrar edince yavaşlıyor ancak oda rom un hepsini kullanıyor çok acemice bir yöntem ama hani anlamak amacı ile denedim toplam bir dakika için 65 kez tarama işlemini tekrar ettiriyorum oluyor ancak oda romu bitiriyor
 
Son düzenleme:

Yeni mesajlar

Forum istatistikleri

Konular
130,163
Mesajlar
933,854
Kullanıcılar
453,277
Son üye
zkan78

Yeni konular

Çevrimiçi üyeler

Geri
Üst