;PROGRAM-34) Bar LED frekans sayıcı uygulaması. Bu program CCP1 biriminin ;yakalama moduna örnektir. RB3 ucuna bağlı bir osilatörün ürettiği kare ;dalga sinyalinin belirli aralıklardaki frekansını PORTB’deki LED’lerde gösterir. ;===PROG34.ASM====04/07/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 ;----------------------------------------------------------- LEDLER EQU H'20' ORG h'00' GOTO BASLA ORG h'0004' GOTO KESME_ALT_PROG BASLA CLRF PORTB BANKSEL TRISB MOVLW B'00001000' ;RB3/CCP1 ucu giriş MOVWF TRISB BSF PIE1,2 ;CCP kesmelerine izin ver. BANKSEL PORTB MOVLW B'00000101' ;Her yükselen kenarda_ MOVWF CCP1CON ;yakalama modu =0101 MOVLW b'00000001' ;TMR1 çalışmaya başlar (bit0=1), MOVLW T1CON ;dahili saat Fosc/4 (bit1=0), frekans ;bölme oranı=1:1(bit5-4=0) MOVLW H'C0' ;GIE=1,PEIE=1, tüm kesmelere ve_ MOVWF INTCON ;çevresel kesmelere izin ver. CLRF LEDLER ;PORTB'ye veri gönderme değişkenini ;sıfırla SONSUZ_DONGU GOTO SONSUZ_DONGU ;Kesme gelene kadar sonsuz döngüde_ ;bekle. KESME_ALT_PROG CLRF TMR1L ;16 bitlik TMR1 sayıcısını "0"'dan başlat CLRF TMR1H BCF INTCON,GIE ;Kesme alt programı bitmeden yeni_ ;kesme kabul edilmesin. MOVLW b'00000000' ;RB3 frekansı 39,06 Hz'den küçük. MOVWF LEDLER ;bilgisini LEDLER değişkenine yükle. MOVLW d'100' ; W= 39,06 Hz SUBWF CCPR1H,W ; W=CCPR1H-W BTFSC STATUS,C ; CCPR1H<100 mü? (doğruysa C=0'dır.) GOTO ANA_PROG_DON ; Hayır, 0 97,65 Khz MOVWF LEDLER ;bilgisini PORTB'de göster ve ana ;programa dön. ANA_PROG_DON MOVF LEDLER,W ;W<-- LEDLER MOVWF PORTB ;LEDLER--> PORTB BCF PIR1,2 ;CCP1IF bayrağını yeni kesmeleri_ ;algılayabilmesi için sıfırla. BSF INTCON,GIE ;Tüm kesmelere izin ver. RETFIE ;Kesme alt programından ana_ ;programa dön. END ;-----------------------------------------------------------