;PROGRAM-3) PIC16F628A’nın 16 ucunu I/O ucu olarak kullanmaya örnek program. 
;A port’unun tüm uçlarından (RA3 hariç) girilen gerilim “0” olduğu (butonlar
; basılı tutulduğunda) sürece, B port’unda o butona karşılık gelen LED'i
; söndüren program. B port’unun RB3 ucuna bağlı buton basılı tutulduğu 
;sürece de RA3’e bağlı LED’i yakar.
;PROG2.ASM’de A port’unu devamlı olarak okumak için programı yeniden başlatmak 
;amacıyla RESET butonuna basmak gerekiyordu. Programın bu eksikliğini gidermek
;için programın akışını "BASLA" etiketine gönderip, sonsuz döngüyü buraya kurmak
; gerekiyor. Akış diyagramını yeniden çizelim.

;===PROG3.ASM====29/04/2005=================================
	LIST	P=16F628A
	INCLUDE	"P16F628A.INC"
	__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
;-----------------------------------------------------------
	ORG		h'0000'
	CLRF		PORTB		;PORTB'ye bağlı LED'leri söndür
	BANKSEL	TRISB		;BANK1'e geç 
	MOVLW	b'00001000'	;W saklayıcıya h'08' yükle
	MOVWF	TRISB		;RB3 giriş diğerleri çıkış
	MOVLW	b'11110111'	;W saklayıcıya h'A7' yükle
	MOVWF	TRISA		;RA3 çıkış diğerleri giriş
	BANKSEL	PORTB		;BANK0'a geç
	MOVLW	h'07'		;W saklayıcıya h’07’ yükle 
	MOVWF	CMCON		;PORTA girişleri dijital I/O
BASLA
	MOVF		PORTA,W		;PortA'yı oku, sonucu W'ye yaz
	MOVWF	PORTB	;Butonların durumunu PortB'de göster
	MOVF		PORTB,W		;PortB'yi oku, sonucu W'ye yaz
	MOVWF	PORTA	;Butonların durumunu PortA'da göster
	GOTO		BASLA		;Port’ları tekrar okumaya git.
	END					;Program sonu
;-----------------------------------------------------------

