;PROGRAM-9)  Çift döngülü zaman geciktirme alt programına örnek program. 
;PortB’ye bağlı olan tüm LED’leri belirli zaman aralıklarıyla yakıp-söndürür.

;===PROG9.ASM====05/05/2005================================
	LIST	P=16F628A
	INCLUDE	"P16F628A.INC"
	__CONFIG _XT_OSC & _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
	BANKSEL TRISB	;BANK1'e geç
	CLRF	TRISB	;PortB'nin tüm uçları çıkış
	BANKSEL PORTB	;BANK0'a geç
TEKRAR
	MOVLW	h'00'
	MOVWF	PORTB
	CALL	GECIKME
	MOVLW	h'FF'
	MOVWF	PORTB
	CALL	GECIKME
	GOTO	TEKRAR
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
	END
;----------------------------------------------------------

