LIST P=16F628A
INCLUDE "P16F628A.INC"
__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF
;----------------------------------------------------------
SAYAC EQU h'20' ;SAYAC saklayıcısını tanımla
SAYAC1 EQU h'21' ;SAYAC saklayıcısını tanımla
SAYAC2 EQU h'22' ;SAYAC saklayıcısını tanımla
BANKSEL TRISB ;BANK1'e geç
CLRF TRISB ;PORTB uçları çıkış
BANKSEL PORTB ;BANK0'a geç
CLRF PORTB ;PortB'deki LED'leri söndür.
BASLA
CLRF PORTB ;portB'yi sil
CLRF SAYAC ;SAYAC'ı sil
TEKRAR
CALL GECIKME
COMF PORTB,F ;W saklayıcıyı PortB'ye gönder
CALL GECIKME
MOVF SAYAC, W ;SAYAC'ı W'ye yükle(sıfırla)
INCF SAYAC, F ;SAYAC <-- SAYAC+1
MOVLW h'13' ;W saklayıcıya h'13' (desimal 19) yükle.
SUBWF SAYAC, W ;W <-- SAYAC-W
BTFSS STATUS, 2 ;STATUS bit2=1 mi? (Zero flag)
GOTO TEKRAR ;Hayır, TEKRAR'a git
DONGU
GOTO DONGU
GECIKME ;Alt program başlangıcı
MOVLW h'FF' ;Dış döngü (M sayısı)
MOVWF SAYAC1
DONGU1
MOVLW h'FF' ;İç döngü (Nsayısı)
MOVWF SAYAC2
DONGU2
DECFSZ SAYAC2, F
GOTO DONGU2
DECFSZ SAYAC1, F
GOTO DONGU1
RETURN