📄 hwspsb0613.asm
字号:
BTFSS STATUS, Z
GOTO ICPRO9
CALL SPECCARD
GOTO ICPROEND
ICPRO9: MOVF RECBUFFER+.1, 0
XORLW 0X07
BTFSS STATUS, Z
GOTO ICPROERR
CALL SETNOIC
GOTO ICP38
ICPROEND: BTFSC FLAG3, ICERR
GOTO ICPROERR
ICPROEND1: BSF PORTC, DYK
BSF PCLATH, 3
CALL WATERCHECK
BCF PCLATH, 3
BCF FLAG3, PASS
BTFSC FLAG2, ZERO
GOTO ICPROEND2
BSF FLAG3, PASS
ICPROEND2: BTFSC FLAG3, PASS
GOTO ICP23
GOTO ICP34
ICP23: BTFSC FLAG3, FLAG
GOTO ICP33
ICP34: BSF PCLATH, 3
CALL VALVE
BCF PCLATH, 3
ICP33: BSF FLAG2, ENBLEDIS
BSF PCLATH, 3
CALL DISPLCD
BCF PCLATH, 3
ICP38: BCF FLAG1, INCARD
RETURN
ICPROERR: BSF FLAG3, ICERR
MOVLW DISBUFFER
MOVWF FSR
MOVLW WFFCARD
MOVWF READDRESS
MOVLW 0X02
MOVWF READLENGTH
CALL READ24C02
MOVLW 0X00
MOVWF DISBUFFER+.2
MOVLW 0X01
MOVWF DISBUFFER+.3
MOVLW DISBUFFER
MOVWF R0
MOVLW DISBUFFER+.2
MOVWF R1
MOVLW 0X02
MOVWF COUNTADD
CALL BCDADD
MOVLW DISBUFFER
MOVWF FSR
MOVLW WFFCARD
MOVWF READDRESS
MOVLW 0X02
MOVWF READLENGTH
CALL WR24C02
GOTO ICPROEND1
;******************************************************
;初始化卡(开户卡)
;******************************************************
INITIAIC: BTFSC FLAG4, INITFLAG
GOTO INITIAICERR
CALL READCARD
CALL CHECKERR
BTFSC FLAG1, ICRWERR
GOTO INITIAICERR
MOVF RECBUFFER+.13, 0
XORLW 0X00
BTFSS STATUS, Z
GOTO INITIAICERR
MOVF RECBUFFER+.14, 0
XORLW 0X01
BTFSS STATUS, Z
GOTO INITIAICERR
MOVLW DISBUFFER
MOVWF FSR
MOVLW WSYWATER
MOVWF READDRESS
MOVLW 0X03
MOVWF READLENGTH
CALL READ24C02
MOVLW DISBUFFER+.3
MOVWF FSR
MOVLW WXGWATER
MOVWF READDRESS
MOVLW 0X03
MOVWF READLENGTH
CALL READ24C02
MOVLW DISBUFFER ;
MOVWF R0 ;
MOVLW DISBUFFER+3 ;
MOVWF R1 ;
MOVLW 0X03 ;
MOVWF COUNTADD ;
CALL BDCSUB
BTFSC STATUS, C
GOTO INITIAICERR
MOVF ZBNO, 0
ANDLW 0XFE
MOVWF REICCOM
MOVLW 0X40
BTFSC ZBNO, 0
MOVLW 0XC0
MOVWF REICADDR
MOVLW 0X1
MOVWF READLENGTH ;data number
MOVLW DISBUFFER ;store address
MOVWF FSR
CALL READIC
MOVF DISBUFFER, 0
XORLW 0XDE ;;;;
BTFSC STATUS, Z
GOTO INITIAICERR
MOVLW DISBUFFER
MOVWF FSR
MOVLW WSKBFLAG
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL READ24C02
BTFSC DISBUFFER, 4
GOTO INITIAICERR
MOVF DISBUFFER, 0
IORLW 0X10
MOVWF DISBUFFER
MOVLW DISBUFFER
MOVWF FSR
MOVLW WSKBFLAG
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL WR24C02
; GOTO INITIAIC2
INITIAIC1: BSF FLAG4, INITFLAG
INITIAIC2: MOVLW RECBUFFER+.3
MOVWF FSR
MOVLW WMNUMB
MOVWF READDRESS
MOVLW 0X05
MOVWF READLENGTH
CALL WR24C02
MOVLW RECBUFFER+.3
MOVWF FSR
MOVLW WMNUM
MOVWF READDRESS
MOVLW 0X05
MOVWF READLENGTH
CALL WR24C02
MOVLW RECBUFFER+.27
MOVWF FSR
MOVLW RANDOMPASS
MOVWF READDRESS
MOVLW 0X03
MOVWF READLENGTH
CALL WR24C02
COMF RECBUFFER+.27, 0
MOVWF DISBUFFER
COMF RECBUFFER+.28, 0
MOVWF DISBUFFER+.1
COMF RECBUFFER+.29, 0
MOVWF DISBUFFER+.2
MOVLW DISBUFFER
MOVWF FSR
MOVLW WICMIMA
MOVWF READDRESS
MOVLW 0X03
MOVWF READLENGTH
CALL WR24C02
MOVLW DISBUFFER
MOVWF FSR
MOVLW WICMIMA1
MOVWF READDRESS
MOVLW 0X03
MOVWF READLENGTH
CALL WR24C02
BSF FLAG5, INCD
CALL WRMATER
CALL FRAMEICW
BSF FLAG4, INITFLAG
;GOTO INITIAICERR
GOTO INITIAICEND
INITIAICERR: BSF FLAG3, ICERR
INITIAICEND: NOP
NOP
NOP
RETURN
;**********************************************************
;退量卡
;***********************************************************
MENDIC: BTFSS FLAG4, INITFLAG
GOTO MENDIC2
MOVLW DISBUFFER
MOVWF FSR
MOVLW WSKBFLAG
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL READ24C02
BTFSS DISBUFFER, 4
GOTO MENDICERR
BSF FLAG4, INITFLAG
MENDIC2: CALL READCARD
CALL CHECKERR
BTFSC FLAG1, ICRWERR
GOTO MENDICERR
MOVF RECBUFFER+.9, 0
XORLW 0X03
BTFSS STATUS, Z
GOTO MENDICERR
MOVLW DISBUFFER ;读表内备份表号和表内表号
MOVWF FSR ;
MOVLW WMNUM ;
MOVWF READDRESS ;
MOVLW 0X05 ;
MOVWF READLENGTH ;
CALL READ24C02
MOVLW RECBUFFER+.3 ;
MOVWF R0 ;
MOVLW DISBUFFER ;
MOVWF R1 ;
MOVLW 0X05 ;
MOVWF COUNT ;
CALL EQUALITY
BTFSC STATUS, C ;不相等,则转移到读E2PROM错程序,
GOTO MENDICERR
CALL FRAMEICW
BTFSC FLAG1, ICRWERR
GOTO MENDICERR
CALL SPECCARD1
BCF FLAG4, INITFLAG
MENDIC1: NOP
NOP
RETURN
MENDICERR: BSF FLAG3, ICERR
GOTO MENDIC1
;**********************************************************
;用户卡
;***********************************************************
BUYIC: BTFSS FLAG4, INITFLAG ;是特殊初始化卡吗?
GOTO BUYICERR ;是则转移执行特殊初始化卡程序
BCF FLAG1, MEMERR
CALL READCARD
;BTFSC FLAG2, OVERWATER ;表内水量大于限购水量吗?
;GOTO BUYICERR ;是的,置卡错标志,转到写返写帧程序
BUYIC1: MOVLW DISBUFFER ;读表内备份密码和密码进行核对,
MOVWF FSR ;
MOVLW WICMIMA ;
MOVWF READDRESS ;
MOVLW 0X06 ;
MOVWF READLENGTH ;
CALL READ24C02 ;
MOVLW DISBUFFER ;
MOVWF R0 ;
MOVLW DISBUFFER+.3 ;
MOVWF R1 ;
MOVLW 0X03 ;
MOVWF COUNT ;
CALL EQUALITY ;核对正确吗?
BTFSS STATUS, C ;
GOTO BUYIC2 ;正确,继续正常执行程序
BUYIC10: BSF FLAG1, MEMERR ;不下确,则置E2PROM内的状态字为读定E2PROM中出错
MOVLW DISBUFFER ;然后执行返写帧程序,返回表内数据
MOVWF FSR ;
MOVLW WSKBFLAG ;
MOVWF READDRESS ;
MOVLW 0X01 ;
MOVWF READLENGTH ;
CALL READ24C02 ;
MOVF DISBUFFER, 0 ;
IORLW 0X02 ;
MOVWF DISBUFFER ;
MOVLW DISBUFFER ;
MOVWF FSR ;
MOVLW WSKBFLAG ;
MOVWF READDRESS ;
MOVLW 0X01 ;
MOVWF READLENGTH ;
CALL WR24C02 ;
GOTO BUYICERR ;
BUYIC2: MOVLW DISBUFFER ;读表内备份表号和表内表号
MOVWF FSR ;
MOVLW WMNUM ;
MOVWF READDRESS ;
MOVLW 0X05 ;
MOVWF READLENGTH ;
CALL READ24C02 ;
MOVLW DISBUFFER+.5 ;
MOVWF FSR ;
MOVLW WMNUMB ;
MOVWF READDRESS ;
MOVLW 0X05 ;
MOVWF READLENGTH ;
CALL READ24C02 ;
MOVLW DISBUFFER ;
MOVWF R0 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -