;*********************************************
;**    RS232 és VFD párosírva               **
;**    Verzió: 1.0                          **
;**    Utolsó módosítás: 2010.01.27         **
;**    Bodnár Gábor                         **
;*********************************************
	LIST P=16F877
	#INCLUDE "P16F877.INC"
	__CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF
		CBLOCK	0x20
				KARAK
				DATAL
				T1
				T2
				SAVEK
		ENDC
		ORG		0
		GOTO	START

START	BSF 	STATUS,RP0	;BANK1
		BCF		STATUS,RP1
		MOVLW	0x06
		MOVWF	ADCON1		;PORTA DIGITÁLIS BEMENET
		MOVLW	0x3F		
		MOVWF	TRISA		;PORTA BEMENET (VEZÉRLŐ GOMBOK)
		MOVLW	b'10000000'
		MOVWF	TRISC		;RC7(RX) BEMENET, RC6(TX) KIMENET
		MOVLW	0x00
		MOVWF	TRISD		;PORTD KIMENET (VFD ADATBUSZ)
		MOVLW	0x00				
		MOVWF	TRISE		;PORTE KIMENET (KIJELZŐBE ÍRÁS ÉS RESET BIT)
;***************************;BAUD RATE BEÁLLÍTÁSA (9600 BAUD)
		MOVLW	d'25'
		MOVWF	SPBRG
		MOVLW	b'00100100'
		MOVWF	TXSTA
		BCF		STATUS,RP0	;VISSZA BANK0-BA
		CLRF	PORTD
		BCF		PORTE,1		;KIJELZŐ RESET
		MOVLW	b'10010000'
		MOVWF	RCSTA		;ASZINKRON VÉTEL ENGEDÉLYEZVE
;***************************;IDŐZÍTÉS A "BEÁLLÁSÉRT"
		CLRF	DATAL
SETTLE	DECFSZ	DATAL
		GOTO	SETTLE
		MOVF	RCREG,W
		MOVF	RCREG,W
		MOVF	RCREG,W		;RCREG "KIÖBLÍTÉSE"
;***************************;FŐPROGRAM
		CALL	MESSAGE		;KEZDŐ ÜZENET ELKÜLDÉSE A PC-NEK
		BSF		PORTE,1		;KIJELZŐ RESET FELOLDÁSA
		MOVLW	0x0D		;CR (KOCSIVISSZA)
		MOVWF	KARAK
		CALL	KIIR
ELEJE	CALL	RECEIVE
		MOVWF	KARAK		
		CALL	KIIR
		GOTO	ELEJE
;***************************;ADATFOGADÁS(RX)
RECEIVE	BTFSS	PIR1,RCIF	;MEGTELT-E AZ RCREG?
		GOTO	RECEIVE
		MOVFW	RCREG		;FOGADOTT BYTE A W-BE
		RETURN
;***************************;ADATKÜLDÉS(TX)
SEND	MOVWF	TXREG
		BSF		STATUS,RP0	;BANK1
ITT		BTFSS	TXSTA,TRMT
		GOTO	ITT
		BCF		STATUS,RP0
		RETURN
;***************************;KEZDŐ ÜZENET A PC-NEK
MESSAGE	MOVLW	0x47
		CALL	SEND
		MOVLW	0x61
		CALL	SEND
		MOVLW	0x42
		CALL	SEND
		MOVLW	0x6F
		CALL	SEND
		MOVLW	'P'
		CALL	SEND
		MOVLW	'I'
		CALL	SEND
		MOVLW	'C'
		CALL	SEND
		MOVLW	0x43
		CALL	SEND
		MOVLW	0x0D		;SOR ELEJÉRE
		CALL	SEND
		MOVLW	0x0A		;ÚJ SOR
		CALL	SEND
		RETURN
;***************************
KIIR	MOVFW	KARAK		;KARAKTER KIÍRÁSA
		MOVWF	PORTD		;KIÍRÁS PORTD-RE
		NOP
		NOP
		BSF		PORTE,0		;KIJELZŐ BEMENET NYIT
		NOP
		NOP	
		NOP
		BCF		PORTE,0		;KIJELZŐ BEMENET ZÁR
		NOP
		CLRF	PORTD		;PORTD TÖRLÉS
		RETURN
;***************************
END
