📄 hwspsb0613.asm
字号:
MOVLW DISBUFFER+.5 ;
MOVWF R1 ;
MOVLW 0X05 ;
MOVWF COUNT ;
CALL EQUALITY ;二者相待吗?
BTFSC STATUS, C ;不相等,则转移到读E2PROM错程序,
GOTO BUYIC10 ;
MOVLW RECBUFFER+.3 ;
MOVWF R0 ;
MOVLW DISBUFFER ;
MOVWF R1 ;
MOVLW 0X05 ;
MOVWF COUNT ;
CALL EQUALITY ;
BTFSC STATUS, C ;卡内表号与表内表号相等吗?
GOTO BUYICERR ; 不相等,转到错误处理
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 BUYICERR
MOVF RECBUFFER+.10, 1 ;
BTFSS STATUS, Z ;
GOTO BUYIC101 ;
MOVF RECBUFFER+.11, 1 ;
BTFSS STATUS, Z ;
GOTO BUYIC101 ;
MOVF RECBUFFER+.12, 1 ;
BTFSS STATUS, Z ;
GOTO BUYIC101
GOTO BUYIC102
BUYIC101: CALL CHECKERR
BTFSC FLAG1, ICRWERR
GOTO BUYIC102
MOVLW ICMIMA ;
MOVWF FSR ;
MOVLW WICMIMA ;
MOVWF READDRESS ;
MOVLW 0X03 ;
MOVWF READLENGTH ;
CALL READ24C02 ;
CALL ICVER ;较验卡的密码正确吗?
BTFSC FLAG1, ICV_ERR ;不正确,转到卡错处理
GOTO BUYICERR ;写购水量为零
; MOVLW 0XFF ;此处消除因购买次数与开户卡相同
; MOVWF DISBUFFER ;而抹去购买量的问题
; MOVWF DISBUFFER+.1
; MOVWF DISBUFFER+.2
; MOVLW DISBUFFER
; MOVWF FSR
; MOVF ZBNO, 0
; ANDLW 0X0E
; MOVWF REICCOM
; MOVLW 0X2A
; BTFSC ZBNO, 0
; MOVLW 0XAA
; MOVWF REICADDR
; MOVLW 0X3
; MOVWF READLENGTH
; CALL WRITEIC
CALL WRMATER
BUYIC102: CALL FRAMEICW
BSF FLAG3, BUYFLAG ;
BUYICEND: ;BCF FLAG4, INITFLAG ;
BCF FLAG4, INCARD ;
NOP
NOP
RETURN
BUYICERR: BSF FLAG3, ICERR
GOTO BUYICEND ;
;**********************************************************
;设置卡
;**********************************************************
SETIC: BTFSS FLAG4, INITFLAG ;是特殊初始化卡吗?
GOTO SETIC2
MOVLW DISBUFFER
MOVWF FSR
MOVLW WSKBFLAG
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL READ24C02
MOVF DISBUFFER, 0
ANDLW 0X10
BTFSS STATUS, Z
GOTO SETICERR
BCF FLAG4, INITFLAG
SETIC2: CALL READCARD
MOVF RECBUFFER+.3, 0
XORLW 0X05
BTFSS STATUS, Z
GOTO SETICERR
CALL CHECKERR
BTFSC FLAG1, ICRWERR
GOTO SETICERR
MOVLW RECBUFFER+.4
MOVWF FSR
MOVLW WWATER
MOVWF READDRESS
MOVLW 0X3
MOVWF READLENGTH
CALL WR24C02
MOVLW RECBUFFER+.4
MOVWF FSR
MOVLW WSYWATER
MOVWF READDRESS
MOVLW 0X3
MOVWF READLENGTH
CALL WR24C02
MOVLW RECBUFFER+.18
MOVWF FSR
MOVLW WMCONST
MOVWF READDRESS
MOVLW 0X1
MOVWF READLENGTH
CALL WR24C02
MOVLW RECBUFFER+.18
MOVWF FSR
MOVLW WMCONSTB
MOVWF READDRESS
MOVLW 0X1
MOVWF READLENGTH
CALL WR24C02
MOVLW RECBUFFER+.12
MOVWF FSR
MOVLW WBJWATER
MOVWF READDRESS
MOVLW 0X6
MOVWF READLENGTH
CALL WR24C02
MOVLW 0X09
MOVWF DEL1
MOVLW DISBUFFER
MOVWF FSR
SET1: CLRF INDF
INCF FSR
DECFSZ DEL1
GOTO SET1
MOVLW DISBUFFER
MOVWF FSR
MOVLW WLJYWATER
MOVWF READDRESS
MOVLW 0X9
MOVWF READLENGTH
CALL WR24C02
MOVLW DISBUFFER
MOVWF FSR
MOVLW WCISHU
MOVWF READDRESS
MOVLW 0X2
MOVWF READLENGTH
CALL WR24C02
MOVLW DISBUFFER
MOVWF FSR
MOVLW WSKBFLAG
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL WR24C02
MOVLW DISBUFFER
MOVWF FSR
MOVLW WDCCS
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
SETICEND: NOP
NOP
NOP
RETURN
SETICERR: BSF FLAG3, ICERR
GOTO SETICEND
;**********************************************************
;查询卡
;*********************************************************
CHECKIC: MOVLW RECBUFFER
MOVWF FSR
MOVLW 0X48
MOVWF INDF
INCF FSR, 1
MOVLW 0X92
MOVWF INDF
INCF FSR, 1
MOVLW 0X18
MOVWF INDF
MOVLW RECBUFFER+.3
MOVWF FSR
MOVLW WMNUM
MOVWF READDRESS
MOVLW 0X05
MOVWF READLENGTH
CALL READ24C02
MOVLW RECBUFFER+.8
MOVWF FSR
MOVLW ZBNUM
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL READ24C02
MOVLW RECBUFFER+.9
MOVWF FSR
MOVLW WCISHU
MOVWF READDRESS
MOVLW 0X02
MOVWF READLENGTH
CALL READ24C02
MOVLW RECBUFFER+.11
MOVWF FSR
MOVLW WBJWATER
MOVWF READDRESS
MOVLW 0X03
MOVWF READLENGTH
CALL READ24C02
MOVLW RECBUFFER+.14
MOVWF FSR
MOVLW WBJWATER
MOVWF READDRESS
MOVLW 0X03
MOVWF READLENGTH
CALL READ24C02
MOVLW RECBUFFER+.17
MOVWF FSR
MOVLW WXGWATER
MOVWF READDRESS
MOVLW 0X03
MOVWF READLENGTH
CALL READ24C02
MOVLW RECBUFFER+.20
MOVWF FSR
MOVLW WWATER
MOVWF READDRESS
MOVLW 0X0C
MOVWF READLENGTH
CALL READ24C02
MOVLW RECBUFFER+.32
MOVWF FSR
MOVLW WSKBFLAG
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL READ24C02
MOVLW RECBUFFER+.33
MOVWF FSR
MOVLW WDCCS
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL READ24C02
MOVLW RECBUFFER+.34
MOVWF FSR
MOVLW WMCONST
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL READ24C02
MOVLW RECBUFFER+.1
MOVWF FSR
MOVLW 0X22
MOVWF READLENGTH
CLRW
MOVWF WBUFFER
CHECKICW1: MOVF INDF, 0
ADDWF WBUFFER
INCF FSR, 1
DECFSZ READLENGTH, 1
GOTO CHECKICW1
MOVF WBUFFER, 0
MOVWF RECBUFFER+.35
MOVLW 0X57
MOVWF RECBUFFER+.36
MOVLW 0X25
MOVWF COUNT
CALL OPENPASSWORD
MOVLW RECBUFFER
MOVWF FSR
MOVF ZBNO, 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -