Académique Documents
Professionnel Documents
Culture Documents
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 ;
; 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
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
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
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
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