;PROGRAM-24) RB0/INT ucundan girilen bir sinyal ile kesme 
;oluşturulmasına örnek program. Akış diyagramında da görüldüğü 
;gibi RB1 ucuna bağlı olan bir LED ana program içerisinde belirli 
;aralıklarla yanıp söndürülmektedir. RB0/INT ucuna bağlı bir 
;butona basınca kesme oluşturulur. Kesme alt programı çalışarak 
;RB2 LED'inin yanma durumunu değiştirir (yanıksa söndürür, sönükse yakar.) 
;Bu da ana program normal olarak çalışırken harici bir kesme meydana 
;geldiğinde programın buna tepki verdiğini ve RB2 LED'nin durumunu değiştirdiğini gösterir.

;Şekil 12 – 5 : PROG24.ASM programının akış diyagramı.

;===PROG24.ASM====21/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'0000'	;Reset veya POR (Gerilim verildiğinde)
	GOTO	BASLA	;Ana program başlangıcına git.
	ORG	h'0004'		;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
	BANKSEL	TRISB		;BANK1'e geç 
	MOVLW	h'00000001'	;W ? h'01'
	MOVWF	TRISB		;RB0 giriş diğerleri çıkış
	MOVLW	b'10111111'	;W ? b'10111111', düşen kenar
	MOVWF	OPTION_REG	;W'yi OPTION saklayıcıya yükle
	BANKSEL	PORTB		; BANK0’a geç
	BCF		INTCON, 1	; INTF bayrağını sil, 
					; kesme sinyaline hazırla
	BSF		INTCON, 7	; Tüm kesmelere izin ver
	BSF		INTCON, 4	; RB0/INT kesmesine izin ver
YAK_SON
	BSF		PORTB, 1	;RB1 LED'ini yak
	CALL		GECIKME	;Bir süre yanık kal
	BCF		PORTB, 1	;RB1 LED'ini söndür
	CALL 	GECIKME	;Bir süre sönük kal
	GOTO		YAK_SON	;LED’i devamlı yak-söndür
KESME_ALT_PROG			;Kesme alt programı(RB2’yi tersle)
	BCF		INTCON,INTE	;Sonraki kesmelere izin verme
	MOVLW	b'00000100'	;Terslenecek bit'i W'ye yükle
	XORWF	PORTB,F	;RB2'yi tersle
	BCF		INTCON,INTF	;Kesme bayrağını sıfırla
	BSF		INTCON,INTE	;Yeni kesmelere izin ver. 
	RETFIE			;Kesme alt programından dön.
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
;----------------------------------------------------------
