;PROGRAM-28) TMR1 sayıcısının kullanılmasına örnek program. Prog26.asm’de ;TMR0 ile yaptığımız programı bu defa TMR1 zamanlayıcısıyla yapılması. ;Timer-1 16 bit’lik bir sayıcı olduğundan önceki programda yaptığımız ;sapma hatasını bu programda sıfıra indirebileceğimizi göreceksiniz. Şimdi ;10 mS’de bir kesme oluşması için TMR1’in hangi sayıdan başlatılacağını ;bulduktan sonra 8 bit’lik TMRH ve TMRL saklayıcılarına bu sayının program ;içerisinde nasıl yükleneceğini görelim. Programın akış diyagramı prog26.asm ile aynıdır. ;===PROG28.ASM====03/06/2005================================ LIST P=16F628A INCLUDE "P16F628A.INC" __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF ;----------------------------------------------------------- SAY_10mS EQU h'20' ;10 mS'leri sayma değişkeni ORG h'000' ;Reset veya gerilim verildiğinde GOTO BASLA ;Ana program başlangıcına git. ORG h'004' ;Kesme oluştuğunda GOTO KESME_ALT_PROG ;Kesme alt programına dallan BASLA ;Ana program başlangıcı CLRF PORTB ;PORTB'deki tüm LED'leri söndür BANKSEL TRISB ;BANK1'e geç CLRF TRISB ;PORTB'nin tüm uçları çıkış BSF PIE1,0 ;TMR1 kesmesini hazırla BANKSEL PORTB ;BANK0’a geç BSF INTCON,7 ;Tüm kesmeler izin ver. BSF INTCON,6 ;Çevresel kesmelere izin ver BCF T1CON,1 ;Timer-1 dahili saat işareti (Fosc/4) BSF T1CON,0 ;Timer-1'i çalıştır BSF PORTB,0 ;RB0 LED'ini yak BCF PORTB,1 ;RB1 LED'ini yak DONGU ;Ana program bu sonsuz döngü içerisinde GOTO DONGU ;devamlı olarak çalışır. KESME_ALT_PROG BCF PIR1,0 ;TMR1 kesmesini sonrakilere hazırla MOVWF h'D8' ;h’D8F0’ sayısını TMR1H ve TMR1L MOVWF TMR1H ;saklayıcılarına yükle MOVLW h'F0' MOVWF TMR1L INCF SAY_10mS,F ;10 mS'leri tutan sayacı 1 arttır MOVLW d'100' ; W ? d'100' SUBWF SAY_10mS,W ; W = SAY_10mS - W BTFSS STATUS,Z ; SAY_10mS=100 oldu mu? GOTO KESME_SONU ; Hayır, ana programa git. CLRF SAY_10mS ;Evet,10 mS'leri tutan sayacı sıfırla MOVLW b'00000011' ; Terslenecek bit’leri W'ye yükle XORWF PORTB,F ; RB0 ve RB1'i LED'leri terslendi KESME_SONU RETFIE ; ana programa dön. END ;-----------------------------------------------------------