;Program-38) USART arabirimi ile bilgisayardan gönderilen verinin
;PIC16F628A’dan alınması işlemine örnek program. Şekil 16-19’da 
;görülen devreye göre bilgisayar klavyesinden gönderilen karakterlerin 
;ASCII kodu karşılığı olan sayı Hyper terminal programı ile gönderilir. 
;Gönderilen bu sayı PIC16F628A’nın RX ucundan alınarak A port’unun alt 
;dört bit’ine ve B port’unun üst dört bit’ine bağlı olan LED’lerde binary olarak gösterilir.  

;===PROG38.ASM====14/09/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'
MOVLW	h'07'		;PortA’nın uçları sayısal I/O
MOVWF	CMCON		;CMCON saklayıcısına yaz
CLRF		PORTA		;PORTA uçlarını sıfırla
CLRF		PORTB		;PORTB uçlarını sıfırla
BANKSEL	TRISA		;BANK1’e geç
MOVLW	b'11110000'	;PORTA’nın alt dört bit’i çıkış
MOVWF	TRISA	
MOVLW	b'00000010'	;RB1/RX=giriş, RB2/TX=çıkış
MOVWF	TRISB		;PORTB’nin üst dört bit’i çıkış
MOVLW	d'25'		;9600 baud rate’lik hız için
MOVWF	SPBRG		;25 desimal sayısı yükle
MOVLW	b'00000100'	;SYNC=0(4.bit), BRGH=1(2.bit)
MOVWF	TXSTA
BANKSEL	PORTB		;BANK0’a geç
MOVLW	b'10010000'	;SPEN=1(7.bit),CREN=1(4.bit)
MOVWF	RCSTA
LED_GONDER	;----- Verileri PORTA’daki LED’lere gönder---
	CALL		VERI_AL
	MOVWF	PORTA		;W saklayıcıyı PORTA’ya gönder
	MOVWF	PORTB		;W saklayıcıyı PORTB’ye gönder
	GOTO		LED_GONDER
VERI_AL	;------RCREG’den veri okuma alt programı-------
	BTFSS	PIR1, RCIF	;RCIF bayrağı “1” mi?
	GOTO		VERI_AL		;Hayır, tekrar test et.
	MOVF		RCREG,W		;Evet, RCREG’i W’ye yükle
	RETURN				
	END
;-----------------------------------------------------------
