2li 7segment displayde zaman sorunu(küçük bir problem için yardım)

Başlatan sercanblbn, 23 Mart 2014, 12:33:00

sercanblbn



merhaba arkadaşlar,

0-99 sayıcı devresi yapmak istedim. 2li 7 segmnet displayi 7448 yardımı ile B portunun 4 pini ile sürmeye çalıştım..  2 display i sıra ile söndürüp yakarken delay_ms(10) komutunu kullandım ki göz yanılması ile ikisi de sürekli yanıyormuş gibi gözüksün. Devre çalışıyor ama 1er saniye ara ile çalışmasını istedim yapamadım, bunun için de delay_ms(1000) kullandım. 1 saniyelik gecikme komutunu yazınca birler basamağını gösteren display 1sn sönüyor, displayde rakamı 10ms gösteriyor. delay_ms(1000) konutunu nereye koyacağımı bilemedim :) Yardımcı olabilirseniz sevinirim

kodlar:

#use fast_io(a)
#use fast_io(b)

#define digit_birler pin_a0
#define digit_onlar pin_a1

int sayi=0, birler=0, onlar=0;

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   // TODO: USER CODE!!
   
   set_tris_a(0x00);
   set_tris_b(0x00);
   
   while(1)
   {
      sayi++;
     
      output_low(digit_onlar);
      birler=sayi%10;
      output_high(digit_birler);
      output_b(birler);
      delay_ms(10);
     
      output_low(digit_birler);
      onlar=sayi/10;
      output_high(digit_onlar);
      output_b(onlar);
      delay_ms(10);
     
      delay_ms(1000);
     
      if(sayi==100)  sayi=0;     
     
   }
}



selimkoc

tarama yaparken bekleme olmaması gerekir. her saniyede bir arttırmak istiyorsan 1000ms/20ms=50 defa tarama yapıp 1 sayı arttır. Bu şekilde yapılabilir. Blogumda bu türden bir uygulama var.

sercanblbn

50 defa tarama yaptım düzgün gidiyor oldu teşekkür ederim. ama tarama sayısını 40 yapınca daha gerçeğe yakın oluyor. acaba her bir komut kaç sn de çalışıyor biliyor musun? onları da hesaba katarak tarama sayısını ayarlarsam gerçek zamandan geri kalmamış ya da ileri gitmemiş olur..

mesaj birleştirme:: 23 Mart 2014, 15:25:17

şimdi aklıma geldi de.. acaba osilatör frekansı(bnmki 4Mhz)'nı yükseltsem(mesela 20Mhz) komutları işleme süresi daha kısa olur mu? böylelikle de istediğim gerçekliğe baya yaklaşmış olur