Vous êtes sur la page 1sur 6

;****************************************************************** ;* CAVECOM - GARAGE OPENER FIRMWARE REV 4.1.

1 ;****************************************************************** LIST P=16F627, B=8, C= 102, N=71, T=ON, ST=OFF, F=INHX32 #INCLUDE ERRORLEVEL __CONFIG PTRL PTRH EQU EQU 0X20 0X21 <P16F627.INC> -302 _LVP_OFF&_CP_OFF&_WDT_OFF&_INTRC_OSC_NOCLKOUT&_BODEN_OFF ; ; ; PRTSTR ROUTINE PRTSTR ROUTINE TEMP REGISTERS F

D1 EQU 0X22 OR DELAY D2 EQU 0X23 D3 EQU 0X24 TEMP EQU 0X25 ISTER FOR SERIAL BYTE ORG 0X0000 STATUS EQU 0X03 ; Z EQU 0X02 ; ZERO FLAG VRESET CLRF ERAL CLRF CLRF MOVLW MOVWF BSF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF BCF MOVWF MOVF MOVF CALL STATUS PORTA PORTB H'07' CMCON STATUS,RP0 B'00000001' TRISA B'00000110' TRISB D'12' SPBRG B'00100110' TXSTA STATUS,RP0 MOVLW RCSTA RCREG,W RCREG,W DELAY ;

TEMP HOLDING REG

INITIALIZE PORTS AND SETUP RS-232 PERIPH

; TURN COMPARATOR OFF ; SELECT BANK 1 ; PORT A ALL OUTPUTS EXCEPT PIN 17 ; B1-B2 INPUTS FOR RS232 ; OTHER PINS OUTPUTS ; 25 = 9600KB / 12=19.2KB (4-MHZ CLOCK, BRGH=1) ; TXEN=1, SYNC=0, BRGH=1 ; SELECT BANK 0 B'10010000' ; SPEN=1, CREN=1 ; FLUSH RS232 RX BUFFER

;====================================================== ; INITIALIZE BLUETOOTH ;====================================================== ; \R\N+STWMOD=0\R\N\

MOVLW 0X0D CALL TX MOVLW 0X0A CALL TX MOVLW '+' CALL TX MOVLW 'S' CALL TX MOVLW 'T' CALL TX MOVLW 'W' CALL TX MOVLW 'M' CALL TX MOVLW 'O' CALL TX MOVLW 'D' CALL TX MOVLW '=' CALL TX MOVLW '0' CALL TX MOVLW 0X0D ; CR CALL TX MOVLW 0X0A ; LF CALL TX MOVLW 0X0D CALL TX MOVLW 0X0A CALL TX MOVLW '+' CALL TX MOVLW 'S' CALL TX MOVLW 'T' CALL TX MOVLW 'P' CALL TX MOVLW 'I' CALL TX MOVLW 'N' CALL TX MOVLW '=' CALL TX MOVLW '0' CALL TX MOVLW '0' CALL TX MOVLW '0' CALL TX MOVLW '0' CALL TX MOVLW 0X0D ; CR CALL TX MOVLW 0X0A ; LF CALL TX ; \R\N+STOAUT=1\R\N\

MOVLW 0X0D CALL TX MOVLW 0X0A CALL TX MOVLW '+' CALL TX MOVLW 'S' CALL TX MOVLW 'T' CALL TX MOVLW 'O' CALL TX MOVLW 'A' CALL TX MOVLW 'U' CALL TX MOVLW 'T' CALL TX MOVLW '=' CALL TX MOVLW '1' CALL TX MOVLW 0X0D ; CR CALL TX MOVLW 0X0A ; LF CALL TX MOVLW 0X0D CALL TX MOVLW 0X0A CALL TX MOVLW '+' CALL TX MOVLW 'S' CALL TX MOVLW 'T' CALL TX MOVLW 'A' CALL TX MOVLW 'U' CALL TX MOVLW 'T' CALL TX MOVLW 'O' CALL TX MOVLW '=' CALL TX MOVLW '1' CALL TX MOVLW 0X0D ; CR CALL TX MOVLW 0X0A ; LF CALL TX CALL DELAY CALL DELAY CALL DELAY CALL DELAY

MOVLW 0X0D CALL TX MOVLW 0X0A CALL TX MOVLW '+' CALL TX MOVLW 'I' CALL TX MOVLW 'N' CALL TX MOVLW 'Q' CALL TX MOVLW '=' CALL TX MOVLW '0' CALL TX MOVLW 0X0D ; CR CALL TX MOVLW 0X0A ; LF CALL TX CALL DELAY CALL DELAY CALL DELAY

;====================================================== ; MAIN PROGRAM LOOP ;====================================================== LOOP ORKING!) BTFSS GOTO BTFSS GOTO BTFSS GOTO BTFSS GOTO STATUS,Z NEXT1 CALL XORLW STATUS,Z NEXT1 CALL XORLW STATUS,Z NEXT1 CALL XORLW STATUS,Z NEXT1 CALL XORLW BTFSS GOTO LOOP BSF CALL PORTA,1 ; PIN 18 HIGH DELAY ; DELAY FOR 1 SECOND RXTX 0X0D STATUS,Z RXTX "r" RXTX "o" RXTX "o" CALL RXTX XORLW "d" ; AUTHENTICATE DOOR COMMAND (W

BCF GOTO NEXT1 XORLW CALL GOTO RX GOTO BTFSC CALL BTFSC CALL 0X0D

PORTA,1 LOOP

; PIN 18 BACK LOW CALL OK

BTFSS GOTO OK LOOP BTFSS RX RCSTA,OERR ERR1 RCSTA,FERR ERR2

STATUS,Z LOOP

PIR1,RCIF

; RCVD CHARACTER?

; NO, BRANCH ; IF OVERRUN ERROR OCCURRED ; THEN GO HANDLE ERROR ; IF FRAMING ERROR OCCURRED ; THEN GO HANDLE ERROR ; GET CHARACTER

MOVF RCREG,W RETURN TX GOTO TX MOVWF TXREG RETURN ERR1 BCF RCSTA,4 BSF RCSTA,4 RETURN MOVF RCREG,W RETURN CALL RX CALL TX BTFSS

PIR1,TXIF ; NO, BRANCH ; SEND CHARACTER ; ; ; ;

; TRANSMIT BUFFER EMPTY?

RESET THE RECEIVER LOGIC ENABLE RECEPTION AGAIN DISCARD RECEIVED DATA THAT HAS ERROR

ERR2 RXTX

RETURN WAIT NDS MOVLW 0X47 MOVWF MOVLW MOVWF MOVLW MOVWF DELAY_0 DECFSZ GOTO DECFSZ GOTO DECFSZ GOTO GOTO GOTO GOTO RETURN DELAY D1, F $+2 D2, F $+2 D3, F DELAY_0 $+1 $+1 $+1 D1 0X71 D2 0X12 D3 ;7999990 CYCLES = 8 SECO

;999990 CYCLES MOVLW 0X07 MOVWF D1

MOVLW MOVWF MOVLW MOVWF DELAY_1 DECFSZ GOTO DECFSZ GOTO DECFSZ GOTO GOTO GOTO GOTO RETURN OK

0X2F D2 0X03 D3 D1, F $+2 D2, F $+2 D3, F DELAY_1 ;6 CYCLES $+1 $+1 $+1 ;4 CYCLES (INCLUDING CALL)

MOVLW 0X0D CALL TX MOVLW 0X0A CALL TX MOVLW "O" CALL TX MOVLW "K" CALL TX MOVLW 0X0D CALL TX MOVLW 0X0A CALL TX RETURN END

Vous aimerez peut-être aussi