📄 waterm2.asm
字号:
lcall decode
lcall write_595
dec r0
djnz r6,disp0
setb rrclk
nop
nop
nop
nop
nop
nop
clr rrclk
nop
nop
nop
nop
nop
nop
setb rrclk
nop
nop
nop
nop
nop
nop
ret
;*********************************
;错误信息处理
;*********************************
erro_del: mov a,error
clr f_erra
rl a
add a,error
mov dptr,#ritab2
jmp @a+dptr
ritab2: ljmp erro_del0
ljmp erro_del1
ljmp erro_del2
ljmp erro_del3
ljmp erro_del4
ljmp erro_del5
ljmp erro_del6
ljmp erro_del7
ljmp erro_del8
ljmp erro_del9
ljmp erro_del10
ljmp erro_del11
ljmp erro_del12
ljmp erro_del13
ljmp erro_del14
ljmp erro_del15
ljmp erro_del16
erro_del0: clr beep
;错误信息未定义
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#00h
mov dispbuf0,#00h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del1: clr beep ;错误信息未定义
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#00h
mov dispbuf0,#01h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del2: clr beep ;错误信息未定义
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#00h
mov dispbuf0,#02h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del3: clr beep ;错误信息未定义
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#00h
mov dispbuf0,#03h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del4: clr beep ;错误信息未定义
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#00h
mov dispbuf0,#04h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del5: clr beep ;错误信息未定义
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#00h
mov dispbuf0,#05h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del6: clr beep ;错误信息未定义
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#00h
mov dispbuf0,#06h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del7: clr beep ;错误信息未定义
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#00h
mov dispbuf0,#07h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del8: clr beep ;错误信息未定义
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#00h
mov dispbuf0,#08h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del9: clr beep ;卡中余额不足
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#00h
mov dispbuf0,#09h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del10: clr beep ;未注册卡
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#01h
mov dispbuf0,#00h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del11: clr beep ;挂失卡
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#01h
mov dispbuf0,#01h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del12: clr beep ;卡号比较错误
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#01h
mov dispbuf0,#02h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del13: clr beep ;请求数据超时
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#01h
mov dispbuf0,#03h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del14: clr beep
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#01h
mov dispbuf0,#04h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del15: clr beep
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#01h
mov dispbuf0,#05h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
erro_del16: clr beep
mov dispbuf4,#0ch
mov dispbuf3,#0dh
mov dispbuf2,#0dh
mov dispbuf1,#01h
mov dispbuf0,#06h
lcall disp
lcall delay_1500ms
setb beep
lcall disp_name
ret
;************************************
;count处理帐户信息
;************************************
acounts: lcall judgeflagid
jb f_erra,acounts0
mov sicon0,#0a7h
mov r0,sicon0
mov a,@r0
mov money_h,a
inc r0
mov a,@r0
mov money_x,a
inc r0
mov a,@r0
mov money_l,a
inc r0
mov a,@r0
mov rate,a
;==========================
;==========================
mov dptr,#sal_rate
mov icadd_h,dph
mov icadd_l,dpl
mov icdata,rate
lcall irwrbyte
mov expence_h,#0
mov expence_x,#0
mov expence_l,#0
mov liuliang_h,#0
mov liuliang_x,#0
mov liuliang_l,#0
lcall disp_money
acounts0: ret
;************************************
;收集消费数据
;************************************
collect_saledata:
mov r0,#salbuf
mov @r0,#41h
inc r0
mov @r0,address
inc r0
mov @r0,idnum0
inc r0
mov @r0,idnum1
inc r0
mov @r0,idnum2
inc r0
mov @r0,idnum3
inc r0
mov @r0,idnum4
inc r0
lcall judge_expence
jnb f_expence,collect_saledata0
clr f_expence
mov @r0,#0
inc r0
mov @r0,#0
inc r0
mov @r0,rate
inc r0
mov @r0,#0
inc r0
mov @r0,#0
inc r0
mov @r0,#1
inc r0
mov @r0,salecount
inc salecount
ljmp collect_saledata1
collect_saledata0:
mov @r0,liuliang_h
inc r0
mov @r0,liuliang_x
inc r0
mov @r0,liuliang_l
inc r0
mov @r0,expence_h
inc r0
mov @r0,expence_x
inc r0
mov @r0,expence_l
inc r0
mov @r0,salecount
inc salecount
collect_saledata1:
ret
;************************************
;判断消费是否为0
;************************************
judge_expence:
clr f_expence
mov a,expence_h
cjne a,#0,judge_expence0
mov a,expence_x
cjne a,#0,judge_expence0
mov a,expence_l
cjne a,#0,judge_expence0
setb f_expence
judge_expence0:
ret
;************************************
;判断卡的合法性
;************************************
judgeflagid: clr f_erra
mov sicon0,#recievebuf
mov r0,sicon0
inc r0
mov a,@r0
mov b,a
inc sicon0
inc sicon0
rl a
add a,b
mov dptr,#ritab4
jmp @a+dptr
ritab4: ljmp judge0
ljmp judge1
ljmp judge2
ljmp judge3
;**************************************
;写未注册代码
;**************************************
judge0: mov error,#err10
setb f_erra
ljmp judge8
;**************************************
;合法卡
;**************************************
judge1: ljmp judge4
;**************************************
;写挂失卡
;**************************************
judge2: mov error,#err11
setb f_erra
ljmp judge8
judge3:
judge4: ;jb f_erra,judge6
mov r0,sicon0
mov a,@r0
cjne a,idnum0,judge5
inc sicon0
mov r0,sicon0
mov a,@r0
cjne a,idnum1,judge5
inc sicon0
mov r0,sicon0
mov a,@r0
cjne a,idnum2,judge5
inc sicon0
mov r0,sicon0
mov a,@r0
cjne a,idnum3,judge5
inc sicon0
mov r0,sicon0
mov a,@r0
cjne a,idnum4,judge5
ljmp judge6
judge5: mov error,#err14
setb f_erra
ljmp judge8
judge6: inc sicon0
mov r0,sicon0
mov a,@r0
clr c
cjne a,#80h,judge7
judge7: jc judge8
mov error,#err9
setb f_erra
judge8:
ret
;************************************
;定时器0中断服务函数
;************************************
del_timer0:
push psw
push acc
clr tr0
mov th0,#15h
mov tl0,#9fh
setb f_60ms
mov a,disp_time
inc a
mov disp_time,a
cjne a,#12,del_timer00
cpl f_time
mov disp_time,#0
del_timer00: jnb f_card,del_timer01
jb f_kguan2,del_timer01
mov a,sal_time
inc a
mov sal_time,a
cjne a,#17,del_timer01
mov sal_time,#0
;setb f_updata
del_timer01: mov a,Inline_Or_Offline_Count
inc a
cjne a,#17,del_timer1
clr f_com
ljmp del_timer2
del_timer1:
mov inline_or_offline_count,a
del_timer2: mov a,Request_Information_Count
jz del_timer3
dec a
mov Request_Information_Count,a
del_timer3: mov a,Card_On_Or_Off_Count
dec a
mov Card_On_Or_Off_Count,a
jnz del_timer4
clr f_card
del_timer4: setb tr0
pop acc
pop psw
reti
;****************************************************
;定时器1中断服务函数
;****************************************************
_timer11:
push psw
push acc
clr tr1
mov th1,#0fch
mov tl1,#00h
cpl send
jnb f_card,_timer119
setb recieve
jb f_kguan0,_timer118
jb recieve,_timer119
inc rcount
mov a,rcount
cjne a,#2,_timer119
mov rcount,#0
setb f_kguan0
_timer118: setb recieve
jnb recieve,_timer119
inc kgcount
setb f_kguan1
clr f_kguan0
_timer119: setb tr1
pop acc
pop psw
reti
;***************************************************
;2051 read the idnumber
;***************************************************
int_1: push psw
push acc
push dph
push dpl
mov a,rimod2
rl a
add a,rimod2
mov dptr,#ritab3
jmp @a+dptr
ritab3: ljmp r_2051_0
ljmp r_2051_1
ljmp r_2051_2
ljmp r_2051_5
r_2051_0: setb r2051
nop
nop
nop
nop
nop
clr r2051
nop
nop
nop
nop
nop
setb r2051
inc rimod2
mov rrx4,#8
mov ricon2,#assic0
ljmp r_2051_5
r_2051_1: push 01h
mov a,p0
mov r1,ricon2
mov @r1,a
inc ricon2
pop 01h
djnz rrx4,r_2051_2
mov rimod2,#0
jb f_card,r_2051_3
mov a,assic0
cjne a,#02h,r_2051_5
mov a,assic7
cjne a,#0dh,r_2051_5
setb f_id
mov idnum0,assic1
mov idnum1,assic2
mov idnum2,assic3
mov idnum3,assic4
mov idnum4,assic5
ljmp r_2051_5
r_2051_2: setb r2051
nop
nop
nop
nop
clr r2051
ljmp r_2051_5
r_2051_3: mov Card_On_Or_Off_Count,#50
r_2051_5:
pop dpl
pop dph
pop acc
pop psw
reti
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -