;PROGRAM-14) ANDLW ve XORWF komutlarının kullanılmasına örnek program. 
;PortA'nın 0. ve 4. bit'lerine bağlı olan RA0 ve RA4 butonlarının her 
;ikisi birden basılı olduğunda PortB'nin 0. bit'ine bağlı LED'i yakar.

;Şekil 9 – 14 : PROG14.ASM programının akış diyagramı.
;===PROG14.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
;----------------------------------------------------------
	CBLOCK	20h
SAYAC1,SAYAC2,MASKPORTA	;Değişken adreslerini atama bloğu
	ENDC
	ORG		h'00'		;Program kodlarının başlangıcı
	CLRF		PORTB		;PortB'yi sıfırla
	BANKSEL 	TRISB		;BANK1'e geç
	CLRF		TRISB		;PortB'nin tüm uçları çıkış
	MOVLW		H'FF'		;W <-- h'FF'
	MOVWF		TRISA		;PortA'nın tüm uçları giriş
	BANKSEL 	PORTB		;BANK0'a geç
	MOVLW		h'07'		;W saklayıcıya h’07’ yükle 
	MOVWF		CMCON		;PORTA girişleri dijital
TEST_PORTA
	MOVF		PORTA,W		;PORTA'yı W'ye kaydet
	ANDLW		b'00010001'	;0. ve 4. bit dışındakileri maskele
	MOVWF		MASKPORTA	;W'yi MASKPORTA'da sakla
	MOVLW		b'00000000'	;İki buton birlikte basılı olduğunda
	XORWF		MASKPORTA, W	;W <-- MASKPORTA  XOR  W
	BTFSS		STATUS, 2	;Z= 1 mi? (MASKPORTA=W mi?)
	GOTO		TEST_PORTA	;Hayır, PortA'yı tekrar test et
YAK
	MOVLW		h'01'		; Evet, W <-- h'01'
	MOVWF		PORTB		; PortB'nin 0. LED'ini yak
DONGU
	GOTO		DONGU
	END
;-----------------------------------------------------------
