P16F877A ile Timer0 Kesmesi
timer0 8 bitlik sayıcıdır. timer0 zaman hesaplaması = timercounter*(256 -TMR0(baslangıc degeri))*Prescalerdegeri*(4/fosc) Tımer0 kesmesinde kullanılan registarlar OPTION_REG,INTCON registerlarıdır. Sayacsız maksimum kesmenın gelmesi için gecen zaman = (256-0)*256*(4/4)=65.536 µs ben burada timer0 baslangıc degerinı 6,sayacımı 50,frekansım 8Mhz formulu kullanırsak = 50*(256-6)*64*(4/8)=400000 µs =400 ms =0,4 sn programın kodlamasıda su sekildir : list p = 16F877A #include <P16F877A.inc> __CONFIG H'3F31' timercounter EQU 0X21 org 0X00 goto Start org 0X04 interrupt BCF INTCON,TMR0IF ;timer0 kesmesinin tasma oldugunu gösteren bitini sifirla MOVLW D'6' ;timer0'a (256-250)=6 degerini ver.250 saysin MOVWF TMR0 DECF timercounter,1 ;(SAYACI 1 AZALTIP TMR0SAYACI NA YAZAR) BTFSS STATUS,Z ;timer0 sayaci 0'lanmis mi? RETFIE MOVLW D'50' ;timer0 sayaci 0'lanmissa 50 degerini yeniden yükle MOVWF timercoun...