;PROGRAM-25) RB<4:7> lojik seviye değişiklik kesmesine örnek program. 
;Ana program içerisinde RA3 ucuna bağlı bir LED belirli aralıklarla 
;yakıp söndürülmektedir. RB4~RB7 uçlarına bağlı butonlardan birisine 
;basınca oluşan kesme alt programıyla PORTB’nin üst 4 bit’i okunmaktadır. 
;Okunan bu dört bit PORTB’nin alt dört bit’ine bağlı LED’lerde 
;gösterilmektedir. Böylece RA3’teki LED’in yanıp sönmesi devam ederken, 
;PORTB’nin üst 4 bit’i (RB<4:7>) okuyup, PORTB’nin alt 4 bit’ine gönderilerek 
;kesme oluşturma yoluyla PIC’in işlem yapma kapasitesi arttırılmış olur.

;===PROG25.ASM====23/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
;-----------------------------------------------------------
	ORG		h'00'	;Reset veya POR(Gerilim verildiğinde)
	GOTO		BASLA		;Ana program başlangıcına git.
	ORG	h'004'			;Kesme oluştuğunda
	GOTO	KESME_ALT_PROG		;Kesme alt programına dallan
BASLA			;********Ana program başlangıcı********
SAYAC1	EQU	h'20'
SAYAC2	EQU	h'21'
	CLRF		PORTB		;PORTB'ye bağlı LED'leri söndür
	CLRF		PORTA		;PORTA'ya bağlı LED'leri söndür
	BANKSEL	TRISB		;BANK1'e geç 
	MOVLW	h'F0'		;PORTB alt 4 bit çıkış
	MOVWF	TRISB		;üst 4 bit’i giriş
	CLRF		TRISA		;PORTA’nın tüm bit’leri giriş<<<<<ÇIKIŞ<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
	MOVLW	b'10001000'	;GIE ve RBIE aktif
	MOVWF	INTCON 		;INTCON saklayıcıyı kur
	BANKSEL	PORTB		;BANK0’a geç
YAK_SON
	BSF		PORTA, 3		;RB1 LED'ini yak<<<<<<<<<<<<<<<<RA3 LEDİ<<<<<<<<<<<<<<<<<<<
	CALL		GECIKME		;Bir süre yanık kal
	BCF		PORTA, 3		;RB1 LED'ini söndür<<<<<<<<<<<RA3 LEDİ<<<<<<<<<<<<<<<<<<<
	CALL 	GECIKME		;Bir süre sönük kal
	GOTO		YAK_SON		;Devamlı yak-söndür
KESME_ALT_PROG		;*******Kesme alt programı***********
	
	BCF		INTCON,0		;RBIF bayrağını sil
;	CALL	GECIKME
	SWAPF	PORTB,F		;Alt 4 le üst 4 bit yerini 
						;değiştir ve PORTB’ye gönder.

	RETFIE				;Alt program sonu
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
;-----------------------------------------------------------
