📄 auto10.asm
字号:
BSF CTRL
BSF KLED4
INT02D:
MOVFF BBSR,BSR ;restore BSR register
MOVFF BWREG,WREG ;restore working register
MOVFF BSTATUS,STATUS ;restore STATUS register
RETFIE FAST
;********************************************
;********************************************
INTTX:
BTFSS PIR1,TX1IF
GOTO INTRX
P1NT0: ; Transmit Programing
MOVFF STATUS,BSTATUS ;save STATUS register
MOVFF WREG,BWREG ;save working register
MOVFF BSR,BBSR
BCF PIR1,TX1IF
BTFSC FMK,0
GOTO TRAN1
BSF FMK,0
MOVFF MIN4,TXREG1
MOVFF MIN4,VEIL
MOVLW 0
MOVWF VEIH
GOTO P1NTD
TRAN1:
BTFSC FMK,1
GOTO TRAN2
BSF FMK,1
MOVFF TIME4,TXREG1
MOVFF TIME4,WREG
ADDWF VEIL,F
MOVLW 0
ADDWFC VEIH,F
GOTO P1NTD
TRAN2:
BTFSC FMK,2
GOTO TRAN3
BSF FMK,2
MOVFF FUN, TXREG1
MOVFF FUN,WREG
ADDWF VEIL,F
MOVLW 0
ADDWFC VEIH,F
GOTO P1NTD
TRAN3:
BTFSC FMK,3
GOTO TRAN4
BSF FMK,3
MOVFF LONL, TXREG1
MOVFF LONL,WREG
ADDWF VEIL,F
MOVLW 0
ADDWFC VEIH,F
GOTO P1NTD
TRAN4:
BTFSC FMK,4
GOTO TRAN5
BSF FMK,4
MOVLW 0
MOVWF RPT
MOVFF LONH, TXREG1
MOVFF LONH,WREG
ADDWF VEIL,F
MOVLW 0
ADDWFC VEIH,F
MOVFF LONL,WREG
SUBLW 0
BTFSC STATUS,Z
BSF FMK,5
GOTO P1NTD
TRAN5:
BTFSC FMK,5
GOTO TRAN6
MOVLW BUF0
ADDWF RPT,0
MOVFF WREG, FSR1L
MOVLW 0H
MOVFF WREG, FSR1H
MOVFF POSTINC1,WREG
MOVFF WREG,TXREG1
ADDWF VEIL,F
MOVLW 0
ADDWFC VEIH,F
INCF RPT,F
MOVFF LONL,WREG
CPFSEQ RPT
GOTO P1NTD
BSF FMK,5
GOTO P1NTD
TRAN6:
BTFSC FMK,6
GOTO TRAN7
BSF FMK,6
MOVFF VEIL, TXREG1
GOTO P1NTD
TRAN7:
BTFSC FMK,7
GOTO TRAN8
BSF FMK,7
MOVFF VEIH, TXREG1
GOTO P1NTD
TRAN8:
BTFSC FMK1,0
GOTO TRAN9
BSF FMK1,0
MOVLW 0AAH
MOVFF WREG,TXREG1
GOTO P1NTD
TRAN9:
BTFSC FMK1,1
GOTO TXEND
BSF FMK1,1
MOVLW 0AAH
MOVFF WREG,TXREG1
GOTO P1NTD
TXEND:
CLRF FMK
CLRF FMS
CLRF FMK1
CLRF LIMIT
BCF PIE1,TXIE ; Disable SCI Transmit interrupt
BSF PIE1,RCIE ; Enable SCI Recevice interrupt
MOVFF WREG,TXREG1 ; Clear TXIF
BCF TXSTA1,TXEN ; Disable Transmit
BCF RCSTA1,CREN ; Disable reception (Clear OERR FERR)
BSF RCSTA1,CREN ; Enable reception
BSF CTRL
BSF KLED4
P1NTD:
MOVFF BBSR,BSR ;restore BSR register
MOVFF BWREG,WREG ;restore working register
MOVFF BSTATUS,STATUS ;restore STATUS register
RETFIE FAST
;******************************************************
;******************************************************
INTRX:
BTFSS PIR1,RCIF
RETFIE FAST
INTRX0:
MOVFF STATUS,BSTATUS ;save STATUS register
MOVFF WREG,BWREG ;save working register
MOVFF BSR,BBSR
MOVFF R0,R0_TEMP
MOVFF R1,R1_TEMP
MOVFF R2,R2_TEMP
MOVFF H_BYTE, H_BYTT
MOVFF L_BYTE,L_BYTT
MOVFF TEMP,TEMPT
MOVFF COUNT,COUNTT
MOVFF FSR0L, FSR0LT
MOVFF FSR0H,FSR0HT
BCF PIR1,RCIF
MOVFF RCREG1,RBUF
BTFSC FMK,0
GOTO REC1 ; FMK.0=1
MOVLW 55H ; RECEIVE FIRST DATA IS 55H
CPFSEQ RBUF
GOTO RCEND ;
BSF FMK,0
BCF KLED4
MOVLW D'100'
MOVFF WREG,LIMIT ; 1.5 second
BSF FMS,4 ; Communation Start Flag
BTFSS FLAG3,0
GOTO P0NTD
BCF FLAG3,0
MOVLW 1
MOVWF DISID
MOVWF STTIME
GOTO P0NTD
REC1:
BTFSC FMK,1
GOTO REC2
MOVFF RBUF,WREG
CPFSEQ MIN4
GOTO RCEND
MOVFF RBUF,VEIL
MOVLW 0
MOVWF VEIH
BSF FMK,1
GOTO P0NTD
REC2:
BTFSC FMK,2
GOTO REC3
MOVFF RBUF,WREG
CPFSEQ TIME4
GOTO RCEND
MOVFF RBUF,WREG
ADDWF VEIL,F
MOVLW 0
ADDWFC VEIH,F
BSF FMK,2
GOTO P0NTD
REC3:
BTFSC FMK,3
GOTO REC4
MOVFF RBUF,FUN
MOVFF RBUF,WREG
ADDWF VEIL,F
MOVLW 0
ADDWFC VEIH,F
BSF FMK,3
GOTO P0NTD
REC4:
BTFSC FMK,4
GOTO REC5
MOVFF RBUF,LONL
MOVFF RBUF,WREG
ADDWF VEIL,F
MOVLW 0
ADDWFC VEIH,F
BSF FMK,4
GOTO P0NTD
REC5:
BTFSC FMK,5
GOTO REC6
MOVLW 0
MOVWF RPT
MOVFF RBUF,LONH
MOVFF LONL,WREG
SUBLW 0
BTFSC STATUS,Z ;=0 jump,have parameter
BSF FMK,6
MOVFF RBUF,WREG
ADDWF VEIL,F
MOVLW 0
ADDWFC VEIH,F
BSF FMK,5
GOTO P0NTD
REC6:
BTFSC FMK,6
GOTO REC7
MOVLW BUF0 ;rd command
ADDWF RPT,0
MOVFF WREG,FSR1L
MOVLW 00H
MOVFF WREG,FSR1H
MOVFF RBUF,POSTINC1
MOVFF RBUF,WREG
ADDWF VEIL,F
MOVLW 0
ADDWFC VEIH,F
INCF RPT,F
MOVFF LONL,WREG
CPFSEQ RPT
GOTO P0NTD
BSF FMK,6
GOTO P0NTD
REC7:
BTFSC FMK,7
GOTO REC8 ; FMK,6=1
MOVFF RBUF,WREG
CPFSEQ VEIL
GOTO RCEND
BSF FMK,7
GOTO P0NTD
REC8:
BTFSC FMK1,0
GOTO REC9
MOVFF RBUF,WREG
CPFSEQ VEIH
GOTO RCEND
BSF FMK1,0
GOTO P0NTD
REC9:
MOVLW 0AAH
CPFSEQ RBUF
GOTO RCEND
MOVLW 01H
CPFSEQ FUN
GOTO READD2
MOVLW 00H
CPFSEQ LONL
GOTO RCEND
MOVLW 00H
CPFSEQ LONH
GOTO RCEND
MOVLW 0A1H
MOVWF FUN
MOVFF DANG,BUF0
MOVFF TIME0,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+1
MOVFF MIN0,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+2
MOVFF ARMC010,WREG
CALL BCDTOB
MOVFF L_BYTE,BUF0+3
MOVLW 0FFH
MOVFF WREG,BUF0+4
MOVFF WREG,BUF0+5
MOVLW 06H
MOVFF WREG,LONL
MOVLW 00H
MOVFF WREG,LONH
GOTO RWOK
READD2:
MOVLW 02H
CPFSEQ FUN
GOTO READD3
MOVLW 00H
CPFSEQ LONL
GOTO RCEND
MOVLW 00H
CPFSEQ LONH
GOTO RCEND
MOVLW 0A2H
MOVWF FUN
MOVLW 00H
MOVFF WREG,BUF0
MOVFF TIME1,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+1
MOVFF MIN1,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+2
MOVFF ARMC010,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+3
MOVLW 0FFH
MOVFF WREG,BUF0+4
MOVFF WREG,BUF0+5
MOVLW 01H
MOVFF WREG, BUF0+6
MOVFF TIME2,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+7
MOVFF MIN2,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+8
MOVFF ARMC010,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+9
MOVLW 0FFH
MOVFF WREG,BUF0+0AH
MOVFF WREG,BUF0+0BH
MOVLW 02H
MOVFF WREG,BUF0+0CH
MOVFF TIME3,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+0DH
MOVFF MIN3,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+0EH
MOVFF ARMC010,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+0FH
MOVLW 0FFH
MOVFF WREG,BUF0+10H
MOVFF WREG,BUF0+11H
MOVLW 12H
MOVFF WREG,LONL
MOVLW 00H
MOVFF WREG,LONH
GOTO RWOK
READD3:
MOVLW 03H
CPFSEQ FUN
GOTO WRITD1
MOVLW 00H
CPFSEQ LONL
GOTO RCEND
MOVLW 00H
CPFSEQ LONH
GOTO RCEND
MOVLW 0A3H
MOVWF FUN
MOVFF TIME0,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+0
MOVFF MIN0,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+1
MOVFF ARMC010,WREG
CALL BCDTOB
MOVFF L_BYTE, BUF0+2
MOVLW 03H
MOVFF WREG,LONL
MOVLW 00H
MOVFF WREG,LONH
GOTO RWOK
;===============================
WRITD1:
MOVLW 11H
CPFSEQ FUN
GOTO WRITD2
MOVLW D'18'
CPFSEQ LONL
GOTO WRITD1N
MOVLW 00H
CPFSEQ LONH
GOTO WRITD1N
MOVFF BUF0+1,L_BYTE
CALL BINBCD
MOVFF R2, TIME1
MOVFF BUF0+2,L_BYTE
CALL BINBCD
MOVFF R2, MIN1
MOVFF BUF0+7,L_BYTE
CALL BINBCD
MOVFF R2, TIME2
MOVFF BUF0+8,L_BYTE
CALL BINBCD
MOVFF R2, MIN2
MOVFF BUF0+0DH,L_BYTE
CALL BINBCD
MOVFF R2, TIME3
MOVFF BUF0+0EH,L_BYTE
CALL BINBCD
MOVFF R2, MIN3
MOVLW 1
MOVWF LONL
MOVLW 0
MOVWF LONH
MOVLW 00H
MOVWF BUF0
MOVLW 0B1H
MOVWF FUN
GOTO RWOK
WRITD1N:
MOVLW 1
MOVWF LONL
MOVLW 0
MOVWF LONH
MOVLW 01H
MOVWF BUF0
MOVLW 0B1H
MOVWF FUN
GOTO RWOK
;================================
WRITD2:
MOVLW 12H
CPFSEQ FUN
GOTO WRITD3
MOVLW 00H
CPFSEQ LONH
GOTO WRITD2N
MOVLW 06H
CPFSEQ LONL
GOTO WRITD2N
MOVLW 00H
CPFSEQ BUF0
GOTO WRITD21
WRITD20:
MOVFF BUF0+1,L_BYTE
CALL BINBCD
MOVFF R2, TIME1
MOVFF BUF0+2,L_BYTE
CALL BINBCD
MOVFF R2, MIN1
MOVLW 1
MOVWF LONL
MOVLW 0
MOVWF LONH
MOVLW 00H
MOVWF BUF0
MOVLW 0B2H
MOVWF FUN
GOTO RWOK
WRITD21:
MOVLW 01H
CPFSEQ BUF0
GOTO WRITD22
MOVFF BUF0+1,L_BYTE
CALL BINBCD
MOVFF R2, TIME2
MOVFF BUF0+2,L_BYTE
CALL BINBCD
MOVFF R2, MIN2
MOVLW 1
MOVWF LONL
MOVLW 0
MOVWF LONH
MOVLW 00H
MOVWF BUF0
MOVLW 0B2H
MOVWF FUN
GOTO RWOK
WRITD22:
MOVLW 02H
CPFSEQ BUF0
GOTO WRITD2N
MOVFF BUF0+1,L_BYTE
CALL BINBCD
MOVFF R2, TIME3
MOVFF BUF0+2,L_BYTE
CALL BINBCD
MOVFF R2, MIN3
MOVLW 1
MOVWF LONL
MOVLW 0
MOVWF LONH
MOVLW 00H
MOVWF BUF0
MOVLW 0B2H
MOVWF FUN
GOTO RWOK
WRITD2N:
MOVLW 1
MOVWF LONL
MOVLW 0
MOVWF LONH
MOVLW 01H
MOVWF BUF0
MOVLW 0B2H
MOVWF FUN
GOTO RWOK
;================================
WRITD3:
MOVLW 13H
CPFSEQ FUN
GOTO WRITD4
MOVLW 00H
CPFSEQ LONH
GOTO WRITD3N
MOVLW 03H
CPFSEQ LONL
GOTO WRITD3N
MOVFF BUF0,L_BYTE
CALL BINBCD
MOVFF R2, STIME+2
MOVFF BUF0+1,L_BYTE
CALL BINBCD
MOVFF R2, STIME+1
MOVFF BUF0+2,L_BYTE
CALL BINBCD
MOVFF R2, STIME
BSF FAG0,7 ; WRITE SYSTEM TIME
MOVLW 1
MOVWF LONL
MOVLW 0
MOVWF LONH
MOVLW 00H
MOVWF BUF0
MOVLW 0B3H
MOVWF FUN
GOTO RWOK
WRITD3N:
MOVLW 1
MOVWF LONL
MOVLW 0
MOVWF LONH
MOVLW 01H
MOVWF BUF0
MOVLW 0B3H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -