;PROGRAM-12) RLF ve RRF komutlarını kullanılmasına örnek program. 
;PortB’ye bağlı olan 8 LED üzerinde bir LED’in yanışını 
;sürekli olarak sağa-sola kaydırır. 

;Şekil 9 – 4 : PROG12.ASM programının akış diyagramı.

;===PROG12.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ç
BASLA
MOVLW	h'01'		;b’00000001’ sayısını W’ye yükle
MOVWF	PORTB		;W saklayıcısını PortB’ye yükle
SOL
CALL	GECIKME		;Gecikme yap
RLF		PORTB, F		;PortB’deki veriyi sola kaydır.
BTFSS	PORTB, 7		;PortB 7. Bit 1 mi?
GOTO	SOL			;Hayır, sola kaydır. 
SAG
CALL	GECIKME		;Gecikme yap
RRF		PORTB, F		;PortB’deki veriyi sağa kaydır.
BTFSS	PORTB, 0		;PortB 0. Bit 1 mi?
GOTO	SAG			;Hayır, sağa kaydır
GOTO 	SOL			;Evet, sola kaydır.
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
;----------------------------------------------------------
