TIMER İLE SEVEN SEGMENT TARAMA

muratmert4

Usta Üye
Katılım
26 Eyl 2007
Mesajlar
1,107
Puanları
156
Yaş
50
Konum
ANTALYA
S.A
Sn. Arkadaşlar timer ile seven segment tarama programını paylaşıyorum. Program main kısmında devam ederken timer ile seven segment kendisi işlem yapıyor.

Kod:
#include <18F4520.h>




#fuses CCP2C1,INTRC_IO,NOPUT,PROTECT,BROWNOUT,NOLVP,NOMCLR,NOWDT




#device ADC=10




#use delay(clock=8000000)







#define SEG0COM PIN_D4

#define SEG1COM PIN_D5

#define SEG2COM PIN_D6

#define SEG3COM PIN_D7




int16 bir,on,yuz,bin;

unsigned int16 say,say1,s,oku;







byte const LED_MAP[10] = {0x3F,0x06,0x5B,0x4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};













#int_TIMER0

void  TIMER0_isr(void)  /// display timer ile sürekli burada taranır

{

disable_interrupts(INT_TIMER0);

say++;




switch (say)

{




  case 5:

   output_low (SEG3COM);

   output_high (SEG0COM); output_b (bir);

  break;

 

 

  case 10:

   output_low (SEG0COM);

   output_high (SEG1COM); output_b (on);

  break;

 

  case 15:

   output_low (SEG1COM);

   output_high (SEG2COM);output_b (yuz);

  break;

 

  case 20:

   output_low (SEG2COM);

   output_high (SEG3COM); output_b (bin);

say=0;

  //output_low (SEG3COM);

  break;

              

}




   //enable_interrupts(INT_TIMER0);

   set_timer0(99);

enable_interrupts(INT_TIMER0);

}













void yaz()  /// displaye yazılacak değer burada ayarlanır

{







      bir = (s % 10);

      on = (s / 10) % (10);

      yuz = (s / 100) % 10;

      bin = (s / 1000) % 10;




      bir = LED_MAP[bir];

      on = LED_MAP[on];

      yuz = LED_MAP[yuz];

      bin = LED_MAP[bin];   

     

    




      delay_us (500);




  

}




#ZERO_RAM

void main()

{




   setup_adc_ports(AN0_TO_AN6);

   setup_adc(ADC_CLOCK_DIV_2|ADC_TAD_MUL_2);

  

    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1|RTCC_8_bit);     

    enable_interrupts(INT_TIMER0);

    enable_interrupts(GLOBAL);

set_timer0(99);

    set_adc_channel(5);

   delay_ms(100);

    //s=1216;

    //yaz();

   WHILE (TRUE)

   {

 

 

 

  oku=read_adc();// adc oku

  ................

  ................

  ................

  s=oku;

yaz(); // displaye yazılacak değeri yolla







   







   }

}
 
Son düzenleme:

Yeni mesajlar

Forum istatistikleri

Konular
128,178
Mesajlar
915,645
Kullanıcılar
449,939
Son üye
sorunsuzşofben

Yeni konular

Geri
Üst