;**********************************************************************
;                                                                     *
;    RS-232 INTERFÉSZ KEZELÉSE A USART PORTTAL                        *
;    -----------------------------------------                        *
;    A program a 00h...FFh értékek között változó Temp regiszter      *
;    tartalmát küldi ki a soros porton 9600 baud sebességgel.         *
;    A PIC16F87x USART portját (HW) használja.                        *
;    Az RS232 kommunikáció adatformátuma: 9600-1-8-N-1.               *
;                                                                     *
;**********************************************************************
;
;
	list      p=16F877            
	#include <p16F877.inc>         
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _LVP_OFF
;----------------------------------------------------------------------
;
Timer1		equ	32
Bit_Cntr	equ	33
Temp		equ	34
;----------------------------------------------------------------------
; PORTC bitek
;
TxData	equ	6
RxData	equ	7
;----------------------------------------------------------------------
;
;
;
;----------------------------------------------------------------------
;----------------------------- FŐPROGRAM ------------------------------
;----------------------------------------------------------------------
;
		org     0             	; reset vektor
		nop			; MPLAB-ICD miatt szükséges
;----------------------------------------------------------------------
	

; I/O port konfigurálás
;
		bsf		STATUS,RP0	
		bcf		STATUS,RP1	; bank1 kiválasztás
		movlw	14
		movwf	ADCON1		; RA0 analóg bemenet !!!
		movlw	1	      	; RA0 bemenet, RA1..5 kimenet
		movwf	TRISA
		movlw	B'10111111'	; RC6 kimenet (TxD)
		movwf	TRISC
		movwf 	B'00000000'
		movwf	TRISD
;----------------------------------------------------------------------
; USART port programozása aszinkron módban
;
		
		movlw	B'10000000'
		movwf	PORTD

		movlw	129 ;9600, 20MHz, async
		movwf	SPBRG
		movlw	B'00100100'	; TXEN=1, SYNC=0, BRGH=1
		movwf	TXSTA		;
		bcf		STATUS,RP0	; bank0 kiválasztás
		movlw	B'10010000'	; SPEN=1, CREN=1
		movwf	RCSTA		;
;----------------------------------------------------------------------
		clrf	Temp
Loop
		incf	Temp,1
		movf	Temp,0		; Temp másolása a USART port	

		;movlw 	a'!' ;! külese
		movwf	TXREG		; TXREG adás regiszterébe
Wait		
		btfss	PIR1,TXIF
		goto	Wait		; vár az adás befejeződésére
;----------------------------------------------------------------------
		bcf		PIR1,TXIF	; megszakítás jelzőbit törlése
		movlw	B'01000000'
		movwf	PORTD
		  
stop
		goto 	stop
		;goto	Loop
;----------------------------------------------------------------------
		


		end

