;RB1=>RX
;RB2=>TX   



;A PC kuld egy bajtot. Ezt 1-el megnovelem es visszakuldom
;PORTB<0> villogasa jelzi, h jott-e adat
;Kulso 4 MHz-s kvarccal megy
;_____________________________________________________________________________________________________________

LIST p=16f628a
#INCLUDE<p16f628a.inc>
ERRORLEVEL -302
__CONFIG (_HS_OSC & _PWRTE_OFF & _MCLRE_OFF & _BODEN_OFF & _WDT_OFF &_LVP_OFF &_BOREN_OFF)		

CBLOCK 0x70				;ez a cim minden bankbol latszik
	W_SAVE
	STATUS_SAVE
	BEJOVO
	
ENDC

ORG 0x00
	GOTO MAIN
;___________________________________________________________________________________________________________
;MEGSZAKITASVEKTOR
;___________________________________________________________________________________________________________
ORG 0x04

	MOVWF W_SAVE			;W elmentese
	SWAPF STATUS,W			;STATUS swap-olasa es W-be mentese
	MOVWF STATUS_SAVE		;STATUS elmentese

	MOVF RCREG,W			;a bejovo adat W-be kerul
	MOVWF BEJOVO

	BTFSS PORTB,0			;LED invertalasa
	GOTO Alacsony
	GOTO Magas
	
Magas:
	BCF PORTB,0
	GOTO Villog_vege

Alacsony:
	BSF PORTB,0
	GOTO Villog_vege

Villog_vege: 

	BCF RCSTA,CREN			;OERR tulcsordulast jelzo bitet csak igy lehet torolni.
	NOP				;Ez ha jelez, akkor tiltja az RCREG-be az adat betoltodeset
	BSF RCSTA,CREN				

	BSF STATUS,RP0			;valtas BANK1-ra
	BSF TXSTA,TXEN			;TXREG kuldese a shift-regiszteren keresztul
	BCF STATUS,RP0			;visszavaltas BANK0-ra
	
	INCF BEJOVO,F			;a BEJOVO novelese	
	MOVF BEJOVO,W			;a BEJOVO W-be olvasasa
	MOVWF TXREG			;a kuldendo adat TXREG-be kerul
			
	BSF STATUS,RP0			;valtas BANK1-ra
	BTFSS TXSTA,TRMT		;ha magas(elkuldte) akkor kihagyom a kovetkezo ugrast
	GOTO $-1			;PC-1
	BCF TXSTA,TXEN			;Transfer modul kikapcsolasa
	BCF STATUS,RP0			;valtas BANK0-ra

	;BCF PIR1,RCIF			;NEM KELL (mivel nem irhato),MERT HARDVERESEN VAN MEGOLDVA A TORLESE,AMIKOR KIOLVASOM ES TORLOM AZ ADATOT AZ RCREG-BOL
	CLRF RCREG			;RCIF bit torlodik igy 
	SWAPF STATUS_SAVE,W		;akksiba swap-eljuk az elmentett STATUS-t
	MOVWF STATUS			;STATUS visszaallitasa
	SWAPF W_SAVE,F			;onmagaba swapolom a WORK_SAVE-t
	SWAPF W_SAVE,W			;W-be swapolom a WORK_SAVE-t
			
RETFIE

;___________________________________________________________________________________________________________
;FOPROGRAM
;___________________________________________________________________________________________________________
MAIN:
	BSF STATUS,RP0			;valtas BANK1-re
	MOVLW b'00000110'		;RB1/RX es RB2/TX bemenet
	MOVWF TRISB
	MOVLW 0x00
	MOVWF TRISA			;PORTA kimenet
	
	MOVLW 0x19			;25
	MOVWF SPBRG			;igy 9600 baudrate lesz
	MOVLW b'00000100'		;TXEN=0|HIGH BAUD<2>=1|aszinkron mod|
	MOVWF TXSTA
	BCF STATUS,RP0			;valtas BANK0-ra
	
	MOVLW b'00000111'		;komparatorok kikapcs
	MOVWF CMCON
	
	MOVLW b'1001000'		;kommunikacios port bekapcs|8 bites formatum|Folyamatos vetel bekapcs
	MOVWF RCSTA	
	
	CLRF RCREG
	CLRF TXREG
	CLRF BEJOVO
	
	;Megszakitasok engedelyezese
	BCF PIR1,RCIF
	BCF PIR1,TXIF			;flagek torlese
	
	BSF STATUS,RP0			;valtas BANK1-re ahol PIE1 regiszter van
	BSF PIE1,RCIE			;a bejovo adat megszakitast okozhat
	BCF STATUS,RP0			;valtas BANK0-ra
	
	BSF INTCON,PEIE			;periferikus int. bekapcs
	BSF INTCON,GIE			;gloalis int. bekapcs

START:
	GOTO START
	
END