;PROGRAM-35) CCP biriminin karşılaştırma modunda çalıştırılmasına örnek program. 
;CCPR1H:CCPR1L saklayıcılarına h’F0F0’=d’61680’ sayısı yüklendikten sonra TMR1 
;sayıcısı çalıştırılır. TMR1 sayıcısı bu sayıya her ulaştığında oluşan kesme ile 
;PORTB’deki 8 LED belirli aralıklarla yakıp söndürülür.


;===PROG35.ASM====08/07/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
;-----------------------------------------------------------
LED_DURUM	  EQU	h'20'	;LED'in yanış durumunun_
					;saklandığı değişken.
	ORG	h'00'
	GOTO	BASLA
	ORG	h'0004'
	GOTO	KESME_ALT_PROG
BASLA
	CLRF	PORTB	
	BANKSEL	TRISB
	CLRF	TRISB		;PORTB'nin tüm uçları çıkış.
	BSF	PIE1,2		;CCP kesmelerine izin ver.
	BANKSEL	PORTB
	MOVLW	H'C0'		;GIE=1,PEIE=1, tüm kesmelere ve_
	MOVWF	INTCON		;çevresel kesmelere izin ver.
	MOVLW	H'F0'		;CCPR1 saklayıcısına d'61680' sayısının_
	MOVWF	CCPR1H		;heksadesimal karşılığını 8 bitlik_
	MOVLW	H'F0'		;iki saklayıcıya yükle.
	MOVWF	CCPR1L
	MOVLW	B'00001011'	;Eşitlik durumundaki kesmede_ 
	MOVWF	CCP1CON			;RB3 değişmez, TMR1 resetlenir.
	MOVLW	b'00110001'	;TMR1 çalışmaya başlar (bit0=1), 
	MOVWF	T1CON			;Dahili saat Fosc/4 (bit1=0), 
					;frekans bölme=1:8
	BSF	LED_DURUM,0	;LED_DURUM <-- b'xxxxxxx0'

SONSUZ_DONGU
	GOTO	SONSUZ_DONGU	;Kesme gelene kadar sonsuz_
					;döngüde bekle.
KESME_ALT_PROG
	BCF	INTCON,GIE		;Kesme alt programı bitmeden yeni_
 					;kesme kabul edilmesin.
	BCF	PIR1,2			;CCP1IF bayrağını yeni kesmeler_
					;için sıfırla. 
	BTFSC	LED_DURUM,0	;LED_DURUM 0. biti "0" mı?
	GOTO	SONDUR			;Hayır, SONDUR etiketine dallan.
YAK
	MOVLW	H'FF'			;PORTB'deki tüm LED'leri yak.
	MOVWF	PORTB
	BSF	LED_DURUM,0	;LED_DURUM <-- b'xxxxxxx1'
	BSF	INTCON,GIE		;Tüm kesmelere tekrar izin ver.
	RETFIE				;Ana programa dön.
SONDUR
	MOVLW	H'00'			;PORTB'deki tüm LED'leri söndür.
	MOVWF	PORTB
	BCF	LED_DURUM,0	;LED_DURUM <-- b'xxxxxxx0'
	BSF	INTCON,GIE		;Tüm kesmelere tekrar izin ver.
	RETFIE				;Ana programa dön.
	END
;-----------------------------------------------------------
