
;PROGRAM-11) RLF komutunun çalışmasını gösteren program. 
;PortB’ye bağlı 8 LED üzerindeki bir LED’in yanışını belirli 
;aralıklarla kaydırır (D0'dan D7'ye doğru). Yanarak kayan 
;LED en sona geldiğinde tüm LED'ler sönük kalır.

;Şekil 9 – 2 : PROG11.ASM programının akış diyagramı.

;===PROG11.ASM====16/05/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
;----------------------------------------------------------
SAYAC1	EQU	H'20'		;SAYAC1 saklayıcısının adresi
SAYAC2	EQU	H'21'		;SAYAC2 saklayıcısının adresi
CLRF	PORTB			;PortB'yi sıfırla
BCF	STATUS, 0			;Carry bayrağını sıfırla	 
BANKSEL TRISB			;BANK1'e geç
CLRF	TRISB			;PortB'nin tüm uçları çıkış
BANKSEL PORTB			;BANK0'a geç
MOVLW	h'01'		;b’00000001’ sayısını W’ye yükle
MOVWF	PORTB		;W saklayıcısını PortB’ye yükle
TEKRAR
CALL	GECIKME			;Gecikme yap
RLF		PORTB, F		;PortB’deki veriyi sola kaydır.
BTFSS	STATUS, 0		;Carry bayrağı 1 mi?
GOTO	TEKRAR			;Hayır, 
DONGU
GOTO	DONGU			;Evet, Sonsuz döngüye gir.
GECIKME					;Gecikme alt programı
MOVLW	h'FF'
MOVWF	SAYAC1
DONGU1
MOVLW	h'FF'
MOVWF	SAYAC2
DONGU2
DECFSZ	SAYAC2, F
GOTO	DONGU2
DECFSZ	SAYAC1, F
GOTO	DONGU1
RETURN
END
;----------------------------------------------------------
