📄 waterm4.1.asm
字号:
mov dispbuf1,#0ah
mov dispbuf0,#0ah
ret
;******************************
;显示子程序
;******************************
disp: mov r6,#5
mov r0,#dispbuf4
disp0: mov a,@r0
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 b,rate
;mov a,#decmoney
;div ab
;mov rate,a
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,#50
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,#50,judge_expence1
judge_expence1:
jnc judge_expence0
clr c
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
;**************************************
;双字节相乘
;**************************************
mul22: mov r7,assic4
mov r6,assic5
mov r5,#03h
mov r4,#0e8h
mul1: mov r0,#dtr0
mov a,r6
mov b,r4
mul ab
mov @r0,a
mov r3,b
mul2: mov a,r7
mov b,r4
mul ab
add a,r3
mov r3,a
mov a,b
addc a,#00h
mov r2,a
mul3: mov a,r6
mov b,r5
mul ab
add a,r3
dec r0
mov @r0,a
mov a,r2
addc a,b
mov r2,a
jnc mul4
mov r1,#01h
mul4: mov a,r7
mov b,r5
mul ab
add a,r2
dec r0
mov @r0,a
mov a,b
addc a,r1
dec r0
mov @r0,a
ret
;************************************
;整数加小数
;************************************
addmoney:mov a,assic6
mov b,#10
mul ab
mov r0,#dtr1
mov @r0,a
inc r0
mov @r0,b
mov r0,#dtr0
mov b,@r0
add a ,b
mov r0,#dtr0
mov @r0,a
mov r0,#dtr2
mov a,@r0
mov r0,#dtr0
dec r0
mov b,@r0
addc a,b
mov @r0,a
dec r0
mov a,@r0
addc a,#0
mov @r0,a
mov r0,#dtr0
mov money_l,@r0
dec r0
mov money_x,@r0
dec
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -