📄 hwspsb0613.asm
字号:
ANDLW 0X0E
MOVWF REICCOM
MOVLW 0X40
BTFSC ZBNO, 0
MOVLW 0XC0
MOVWF REICADDR
MOVLW 0X25
MOVWF READLENGTH
CALL WRITEIC
BSF PCLATH, 3
CALL DISNUM
BCF PCLATH, 3
GOTO PREPICEND
PREPICERR: BSF FLAG3, ICERR
PREPICEND: NOP
NOP
RETURN
;**********************************************************
;表号设置卡
;**********************************************************
SETNOIC: BTFSC FLAG4, INITFLAG
GOTO SETNOICERR
CALL READCARD
MOVF RECBUFFER+.3, 0
SUBLW 0X07
BTFSS STATUS, Z
GOTO SETNOICERR
MOVLW RECBUFFER+.4
MOVWF FSR
MOVLW ZBNUM
MOVWF READDRESS
MOVLW 0X1
MOVWF READLENGTH
CALL WR24C02
BSF PCLATH, 3
CALL DISNUM
BCF PCLATH, 3
SETNOICEND: NOP
NOP
RETURN
SETNOICERR: BSF FLAG3, ICERR
GOTO SETNOICEND
;**********************************************************
;返厂卡
;*****************************************************************
SPECCARD: CALL READCARD
CALL CHECKERR
BTFSC FLAG1, ICRWERR
GOTO SPECCARDERR
MOVF RECBUFFER+.3, 0
SUBLW 0X06
BTFSS STATUS, Z
GOTO SPECCARDERR
SPECCARD1: MOVLW 0X0F
MOVWF DEL1
MOVLW DISBUFFER
MOVWF FSR
SET2: CLRF INDF
INCF FSR
DECFSZ DEL1
GOTO SET2
MOVLW DISBUFFER+.2
MOVWF FSR
MOVLW WMNUMB
MOVWF READDRESS
MOVLW 0X05
MOVWF READLENGTH
CALL WR24C02
MOVLW DISBUFFER+.2
MOVWF FSR
MOVLW WMNUM
MOVWF READDRESS
MOVLW 0X05
MOVWF READLENGTH
CALL WR24C02
MOVLW DISBUFFER
MOVWF FSR
MOVLW WICMIMA
MOVWF READDRESS
MOVLW 0X06
MOVWF READLENGTH
CALL WR24C02
MOVLW DISBUFFER
MOVWF FSR
MOVLW WCISHU
MOVWF READDRESS
MOVLW 0X2
MOVWF READLENGTH
CALL WR24C02
MOVLW DISBUFFER
MOVWF FSR
MOVLW WWATER
MOVWF READDRESS
MOVLW 0XF
MOVWF READLENGTH
CALL WR24C02
MOVLW DISBUFFER+.2
MOVWF FSR
MOVLW WSKBFLAG
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL WR24C02
MOVLW DISBUFFER+.2
MOVWF FSR
MOVLW ZBNUM
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL WR24C02
MOVLW DISBUFFER+.2
MOVWF FSR
MOVLW WDCCS
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL WR24C02
MOVLW DISBUFFER
MOVWF FSR
MOVLW WSKBFLAG
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL WR24C02
BCF FLAG3, EMI
BCF FLAG2, EMIB
BCF FLAG4, INITFLAG
BCF FLAG3, BUYFLAG
BCF FLAG1, ICRWERR
BCF FLAG2, OVERWATER
;SPECCARERR: BSF FLAG3, ICERR
SPECCAR1: NOP
NOP
NOP
RETURN
SPECCARDERR: BSF FLAG3, ICERR
GOTO SPECCAR1
;******************************************************
CHECKERR: BCF FLAG1, ICRWERR
MOVLW RECBUFFER+.1
MOVWF FSR
MOVLW 0X1D
MOVWF READLENGTH
CLRW
MOVWF WBUFFER
SETICW1: MOVF INDF, 0
ADDWF WBUFFER
INCF FSR, 1
DECFSZ READLENGTH, 1
GOTO SETICW1
MOVF WBUFFER, 0
XORWF RECBUFFER+.30,0
BTFSS STATUS, Z
BSF FLAG1, ICRWERR
RETURN
;**********************************************************
READCARD: CALL DELAY256US
MOVLW 0XF4
MOVWF DEL2
MOVLW 0X10
MOVWF DEL3
MOVLW 0X08
MOVWF DEL4
MOVLW RECBUFFER
MOVWF FSR
BSF PORTC, CFE
CLRF WBUFFER
CLRF SHIFT
BCF STATUS, C
READ1: BTFSC PORTC, CLK
GOTO READ1
BTFSC PORTC, CLK
GOTO READ1
CALL DELAY8US
READ2: BCF STATUS, C
BTFSS PORTC, CLK
GOTO READ3
BSF STATUS, C
READ3: RLF WBUFFER, 1
MOVF SHIFT, 0
XORWF WBUFFER, 0
BTFSS STATUS, Z
GOTO READ4
GOTO READ2
BTFSC STATUS, Z
GOTO READ2
READ4: MOVF WBUFFER, 0
MOVWF SHIFT
BCF INTCON, T0IF
CLRF TMR0
READ5: BCF STATUS, C
BTFSS PORTC, CLK ;判断第一个跳变为高电平
GOTO READ6
BSF STATUS, C
READ6: RLF WBUFFER, 1
MOVF SHIFT, 0
XORWF WBUFFER, 0
BTFSS STATUS, Z
GOTO READ7
GOTO READ5
READ7: MOVF TMR0, 0
MOVWF DEL1
BCF STATUS, C
MOVLW 0X0F
SUBWF DEL1, 0
BTFSS STATUS, C
GOTO READERR1
BCF STATUS, C
MOVLW 0X11
SUBWF DEL1, 0
BTFSC STATUS, C
GOTO READERR1
MOVF WBUFFER, 0
MOVWF SHIFT
BCF INTCON, T0IF
CLRF TMR0
READ8: BCF STATUS, C
BTFSS PORTC, CLK ;判断(128us)第二个跳变为低电平
GOTO READ9
BSF STATUS, C
READ9: RLF WBUFFER, 1
MOVF SHIFT, 0
XORWF WBUFFER, 0
BTFSS STATUS, Z
GOTO READ10
GOTO READ8
READ10: MOVF TMR0, 0
MOVWF DEL1
BCF STATUS, C
MOVLW 0X2E
SUBWF DEL1, 0
BTFSS STATUS, C
GOTO READERR
BCF STATUS, C
MOVLW 0X30
SUBWF DEL1, 0
BTFSC STATUS, C
GOTO READERR
MOVF WBUFFER, 0
MOVWF SHIFT
BCF INTCON, T0IF
CLRF TMR0
READ11: BCF STATUS, C
BTFSS PORTC, CLK ;判断(384us)第三个跳变为高电平
GOTO READ12
BSF STATUS, C
READ12: RLF WBUFFER, 1
MOVF SHIFT, 0
XORWF WBUFFER, 0
BTFSS STATUS, Z
GOTO READ13
GOTO READ11
READ13: MOVF TMR0, 0
MOVWF DEL1
BCF STATUS, C
MOVLW 0X0F
SUBWF DEL1, 0
BTFSS STATUS, C
GOTO READERR
BCF STATUS, C
MOVLW 0X11
SUBWF DEL1, 0
BTFSC STATUS, C
GOTO READERR
MOVF WBUFFER, 0
MOVWF SHIFT
BCF INTCON, T0IF
CLRF TMR0
READ14: BCF STATUS, C
BTFSS PORTC, CLK ;判断(128us)第四个跳变为低电平
GOTO READ15
BSF STATUS, C
READ15: RLF WBUFFER, 1
MOVF SHIFT, 0
XORWF WBUFFER, 0
BTFSS STATUS, Z
GOTO READ16
GOTO READ14
READ16: MOVF TMR0, 0
MOVWF DEL1
BCF STATUS, C
MOVLW 0X20
SUBWF DEL1, 0
BTFSC STATUS, C
GOTO READ17
BCF STATUS, C
MOVLW 0X1E
SUBWF DEL1, 0
BTFSS STATUS, C
GOTO READERR
MOVF WBUFFER, 0
MOVWF SHIFT
BCF INTCON, T0IF
CLRF TMR0
GOTO READ18
READ17: BCF STATUS, C
MOV
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -