P16F877A ile Timer1 Kesmesi
timer1 16 bitlik sayıcıdır.
timer1'i 0'dan 65.536 arası saydırabilirsiniz
timer1 zaman hesaplaması = timercounter*(65.536 - TMR1(TMR1H+TMR1L)*Prescalerdegeri*(4/fosc)
Tımer1 kesmesinde kullanılan registarlar PIE1,PIR1,T1CON,INTCON registerlarıdır.
Sayacsız maksimum kesmenın gelmesi için gecen zaman = (65.636-0)*8*(4/4)=524288 µs
ben burada timer1 baslangıc degerinı 3CB0,sayacımı 5,frekansım 8 Mhz
formulu kullanırsak = 5*(65.536-15.536)*8*(4/8)=1000000 µs =1000 ms = 1 sn
programın kodlamasıda su sekildir :
list p = P16F877A
#include <P16F877A.inc>
sayac EQU 0X21
org 0X00
goto Start
org 0X04
interrupt
bcf PIR1,TMR1IF ;
movlw H'3C'
movwf TMR1H
movwf H'B0'
movwf TMR1L
DECF sayac,1
BTFSS STATUS,Z
retfie
movlw D'5'
movwf sayac
goto LED
LED
comf PORTD,1
retfie
Start
MOVLW B'11000000' ;GIE AKTIF -Cevresel Kesme Aktif
MOVWF INTCON
bsf STATUS,RP0
movlw b'00000001'
movwf PIE1 ;timer1 tasma kesmesine izin ver
movlw b'11111110'
movwf TRISD
bcf STATUS,RP0
movlw b'00100001' ;Timer kesmesini aktif et ve prescaler degeri 4
movwf T1CON
movlw D'5'
movwf sayac
movlw H'3C'
movwf TMR1H
movlw H'B0'
movwf TMR1L
clrf PORTD
DON
goto DON
end
timer1'i 0'dan 65.536 arası saydırabilirsiniz
timer1 zaman hesaplaması = timercounter*(65.536 - TMR1(TMR1H+TMR1L)*Prescalerdegeri*(4/fosc)
Tımer1 kesmesinde kullanılan registarlar PIE1,PIR1,T1CON,INTCON registerlarıdır.
Sayacsız maksimum kesmenın gelmesi için gecen zaman = (65.636-0)*8*(4/4)=524288 µs
ben burada timer1 baslangıc degerinı 3CB0,sayacımı 5,frekansım 8 Mhz
formulu kullanırsak = 5*(65.536-15.536)*8*(4/8)=1000000 µs =1000 ms = 1 sn
programın kodlamasıda su sekildir :
list p = P16F877A
#include <P16F877A.inc>
sayac EQU 0X21
org 0X00
goto Start
org 0X04
interrupt
bcf PIR1,TMR1IF ;
movlw H'3C'
movwf TMR1H
movwf H'B0'
movwf TMR1L
DECF sayac,1
BTFSS STATUS,Z
retfie
movlw D'5'
movwf sayac
goto LED
LED
comf PORTD,1
retfie
Start
MOVLW B'11000000' ;GIE AKTIF -Cevresel Kesme Aktif
MOVWF INTCON
bsf STATUS,RP0
movlw b'00000001'
movwf PIE1 ;timer1 tasma kesmesine izin ver
movlw b'11111110'
movwf TRISD
bcf STATUS,RP0
movlw b'00100001' ;Timer kesmesini aktif et ve prescaler degeri 4
movwf T1CON
movlw D'5'
movwf sayac
movlw H'3C'
movwf TMR1H
movlw H'B0'
movwf TMR1L
clrf PORTD
DON
goto DON
end
Yorumlar
Yorum Gönder