 list	p=16F690           ; list directive to define processor
 #include <p16F690.inc>        ; processor specific variable definitions
 
 errorlevel  -302              ; suppress message 302 from list file
 

 __CONFIG   _CP_OFF & _CPD_OFF & _BOR_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _FCMEN_OFF & _IESO_OFF
 
; CBLOCK 0x70
;   RESULTLO 
;   RESULTHI        
; ENDC
  CBLOCK 0x20             ; Declare variable addresses starting at 0x20
         dataL
      ENDC
 
  	ORG 0x5
;
; --------------------------------
; SET ANALOG/DIGITAL INPUTS PORT A
; --------------------------------
;
  
  	GOTO    START              ; go to beginning of program
 
START 
;BCF  STATUS,5                 ;Go to Bank 1 (BSF STATUS,5)
;	  MOVLW 0x06   
 ;     MOVWF ADCON1   ;Mindegyik PORTA digitális 
	BSF  STATUS,5
;  MOVLW   b'00000000'               ;Put 00000 into W
 ; MOVWF   TRISA            ;Move 00000 onto TRISA
  MOVLW   b'01111111'      ;Put 01010000 into W
  MOVWF   TRISB     ;Move 01010000 onto TRISB
  ;MOVLW   b'01100111'        ;Put 01100111 into W
  ;MOVWF   TRISC            ;Move 01100111 onto TRISC
  BCF  	STATUS,5  ;Come back to Bank 0 (BCF STATUS,5)
  MOVLW b'10000000'
  MOVWF PORTB           
  ;MOVLW b'00000000'       ; set up portA
 ; MOVWF PORTA
  BSF   STATUS,5 
  MOVLW 0x19                ;0x19=9600 bps (165 oldali táblázatból 4Mhz
  MOVWF SPBRG
  MOVLW b'00100110'      ;TXEN=1, SYNC=0, BRGH=1 (high speed)
  MOVWF TXSTA        ;enable Async Transmission, set brgh
  BCF   STATUS,5        ;Come back to Bank 0 (BCF STATUS,5)           
  MOVLW b'10010000'      ;SPEN=1 (Serial port enabled, konfigurálja a
  MOVWF RCSTA  
 
;
; ------------------------------------
; PROVIDE A SETTLING TIME FOR START UP
; ------------------------------------
;
        clrf dataL
settle  decfsz dataL,2
       goto settle
 
        movf RCREG,W
        movf RCREG,W
        movf RCREG,W            ; flush receive buffer
 
; ---------
; MAIN LOOP
; ---------
;
        call ASend            ; send "AT"
loop    call receive            ; wait for a char
        call Send               ; send the char
        goto loop
;
; -------------------------------------------
; RECEIVE CHARACTER FROM RS232 AND STORE IN W
; -------------------------------------------
; This routine does not return until a character is received.
;
receive btfss PIR1,RCIF         ; (5) check for received data
        goto receive
        movf RCREG,W            ; save received data in W
        return
 
 
 
  CALL ASend
  GOTO START
 
ASend BCF  STATUS,5
  	 MOVLW "A" ; MOVLW 0x41  ;„A” karakter küldése
     CALL Send;   
     MOVLW  0x54  ;„T” karakter küldése
     CALL  Send
  	 MOVLW  0Dh   ;Ezzel jelezzük, hogy vége az AT parancsnak (CR_LF)
     CALL  Send
	 MOVLW 0Ah   ;Ezzel jelezzük, hogy vége az AT parancsnak (CR_LF)
     CALL  Send
  	 RETURN
 
Send MOVWF TXREG      ;W tartalmának (szenzorok adatai) küldése
  	 BSF  STATUS,5       ;Go to Bank 1 (BSF STATUS,5)
  	 BTFSS TXSTA,TRMT    ;TXSTA 1-es bitjét figyeli (TRMT ami ha 1-es
  	 GOTO $-1        ;amíg nincs transmission complete addig mindig             ;visszaugrik a BTFSS TXSTA,1 lépésre
  	 BCF  STATUS,5     ;Come back to Bank 0 (BCF STATUS,5)      
     RETURN
 
  	 END