📄 终端机程序.asm
字号:
mov @r0,#0ah
inc r0
mov @r0,#15h
inc r0
mov @r0,#0dh
mov r7,#12
inc r0
keyf16_0:
mov @r0,#12h
inc r0
djnz r7,keyf16_0
keyf16_1:
lcall card_id
jb rf_chk,keyf16_2
ljmp keyf16_3
keyf16_2:
lcall key_in
mov a,v_key
cjne a,#kb_cl,keyf16_1
lcall key_in
lcall key_in
ret
keyf16_3:
jnb f0,keyf16err
lcall divsub
lcall clrbp
mov r2,#0
mov r3,#80
kf16_w:
djnz r2,$
djnz r3,kf16_w
lcall setbp
mov r2,#2
mov r0,#rf1ram
mov r1,#ddsp04
lcall ram2disp
mov r2,#4
mov r0,#rf0ram
inc r0
mov r1,#ddsp1
lcall ram2disp
mov r4,#1
lcall d0lay
ljmp keyf16_1
keyf16err:
mov r_err,#err_7
ljmp deal_error
ret
ram2disp:
mov a,@r0
mov b,a
anl a,#0f0h
swap a
mov @r1,a
inc r1
mov a,b
anl a,#0fh
mov @r1,a
inc r0
inc r1
djnz r2,ram2disp
ret
;******************************
; Clear Deposit State
;******************************
keyf1cl:
mov a,state
anl a,#0fh
cjne a,#2,kk_f1cl
clr f_cny
mov r_err,#11
lcall get_code
ljmp kkf10
kk_f1cl:ret
;******************************
; Set Ration State
;******************************
keyf2en:
; mov a,state
; cjne a,#33,kk_f1n
; ret
;kk_f1n: anl a,#0fh
; cjne a,#2,kk_f2n
; ret
kk_f2n: mov r_err,#12
lcall get_code
mov r0,#rat_2
mov r1,#exp_rm5
lcall bin2dec
lcall expense2disp
lcall clr_bit
lcall clr_augend
kk_f5n: lcall key_in
mov a,v_key
cjne a,#kb_en,kk_f6n
;
lcall disp2expense
mov r0,#exp_rm5
mov r1,#rat_2
lcall dec2bin
;保存设置的消费费率
MOV R0,#RAT_0
CLR A
MOV @R0,A
INC R0
MOV @R0,A
MOV DPTR,#D1_374
MOV A,R1_374
ANL A,#0FCH
MOVX @DPTR,A ;更改页地址
MOV RICON,#3
MOV R0,#RAT_0
MOV DPTR,#D_RAT1
KK_1: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ RICON,KK_1
;
MOV RICON,#3
MOV R0,#RAT_0
MOV DPTR,#D_RAT
KK_2:
MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ RICON,KK_2
MOV DPTR,#D1_374 ;复位页地址
MOV A,R1_374
MOVX @DPTR,A
setb f_rat
ret
kk_f6n: cjne a,#kb_cl,kk_f7n
jb f_n,kkf79n
lcall key_in
lcall key_in
ret
kk_f7n: cjne a,#kb_p,kkf77n
kkf77n: jnc kk_f5n
mov a,state
cjne a,#17,kkf78n
sjmp kk_f5n
kkf78n: jb f_n,kk_f8n
kkf79n: lcall clr_bit
lcall clr_expense
lcall clr_augend
mov r0,#ddsp04
mov r1,#ddsp04
mov r2,#3
lcall setnul
mov @r0,#0
mov @r1,#0
kk_f8n: lcall kb_deal
sjmp kk_f5n
;******************************
; Clear Ration State
;******************************
keyf2cl:
mov a,state
cjne a,#33,kk_f2c
ret
kk_f2c: cjne a,#17,kk_f5c
ret
kk_f5c: anl a,#0fh
cjne a,#2,kk_f8c
ret
kk_f8c: clr f_rat
mov r_err,#13
lcall get_code
ljmp kkf10
;******************************
;******************************
err_in: mov r_err,#err_9
lcall error_code
lcall clrbp
mov r4,#30
lcall d0lay
lcall setbp
mov r4,#10
lcall d0lay
ret
;******************************
;******************************
in_err: lcall err_in
jb f_rat,iner0
lcall clear_input
clr f0
mov c,f_cny
cpl c
mov f_a_s,c
ret
iner0: lcall card_test
jnb rf_chk,in_err
clr f_tj
clr f0
ljmp xig5
ret
;*******************************
;*******************************
clear_input:
lcall clr_expense
lcall clr_bit
mov r0,#ddsp04
mov r1,#ddsp14
mov r2,#3
lcall setnul
mov @r0,#0
mov @r1,#0
lcall surplus2disp
mov r2,#4
mov r0,#ddsp0
mov r1,#ddsp1
lcall copy_s
ret
;*******************************
; Set Null
;*******************************
setnul: mov a,#null
setram: mov @r0,a
mov @r1,a
inc r0
inc r1
djnz r2,setram
ret
;*******************************
;*******************************
copy_s: mov a,@r0
mov @r1,a
inc r0
inc r1
djnz r2,copy_s
ret
;*******************************
; Clear Sum
;===============================
clrsum: mov r3,#8
mov dptr,#sum0
clr a
i_sum: movx @dptr,a
inc dptr
djnz r3,i_sum
ret
;*******************************
; Clear Augend
;===============================
clr_augend:
mov r0,#augend0
mov r2,#6
cnw0: mov @r0,#0
inc r0
djnz r2,cnw0
ret
;*******************************
; Clear Expense
;===============================
clr_expense:
mov r0,#exp_rm0
mov r2,#6
clr a
cnf0: mov @r0,a
inc r0
djnz r2,cnf0
ret
;*******************************
; Clear Bit Flag
;===============================
clr_bit:
clr f_n
clr f_dot
clr f_add
clr f_sub
clr f_equ
ret
;*******************************
; Expense Add Augend
;===============================
exp_add_aug:
lcall disp2augend
mov r0,#exp_rm5
mov r1,#augend5
mov r2,#6
clr c
lcall do_add
ret
;*******************************
;===============================
do_add: mov a,@r0
addc a,@r1
da a
mov c,acc.4
clr acc.4
mov @r0,a
dec r0
dec r1
djnz r2,do_add
ret
;*******************************
; Expense Subb Augend
;===============================
exp_sub_aug:
lcall disp2augend
mov r0,#exp_rm5
mov r1,#augend5
mov r2,#6
clr bit_c
lcall do_sub
ret
;====================================
; expense subb sur
;====================================
exp_sub_sur:
mov r0,#exp_rm5
mov r1,#sur_rm5
mov r2,#6
clr bit_c
lcall do_sub
ret
;*******************************
; Surplus Subb Expense
;===============================
sur_sub_exp:
jnb f_tj,ssb0
clr bit_c
ret
ssb0: mov r0,#sur_rm5
mov r1,#exp_rm5
mov r2,#6
clr bit_c
lcall do_sub
LJMP GOOGLE
MOV A,R_NME
JZ GOOGLE
JB F_SIGN,GOOGLE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov r0,#sur_rm0 ;判断剩余额千位
mov r1,#icard_sc2
mov a,@r0 ;剩余额千位
mov b,@r1 ;信用额千位
cjne a,b,gog1
ljmp go1 ;=
gog1: jnc google ;>
ljmp setb_bit_c ;<
go1: inc r0 ;剩余额百位
inc r1 ;信用额百位
mov a,@r0
mov b,@r1
cjne a,b,gog2
ljmp go2
gog2: jnc google
ljmp setb_bit_c
go2: inc r0
inc r1
mov a,@r0 ;十位
mov b,@r1
cjne a,b,gog3
ljmp go3
gog3: jnc google
ljmp setb_bit_c
go3: inc r0
inc r1
mov a,@r0 ;个位
mov b,@r1
cjne a,b,gog4
ljmp google
gog4: jnc google
setb_bit_c:
setb bit_c
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
google: ret
;*******************************
; Surplus Add Expense
;===============================
sur_add_exp:
jnb f_tj,sad0
clr c
ret
sad0: jb f_m_p,sadf0
mov r0,#sur_rm5
mov r1,#exp_rm5
mov r2,#6
clr c
lcall do_add
ret
sadf0: mov r0,#sur_rm0
mov r1,#exp_rm0
mov r2,#6
lcall r0_comp_r1
jb f0,sadf5
mov r0,#exp_rm0
mov r1,#lim_rm0
mov r2,#6
lcall copy_s
mov r0,#lim_rm5
mov r1,#sur_rm5
mov r2,#6
clr bit_c
lcall do_sub
mov r0,#lim_rm0
mov r1,#sur_rm0
mov r2,#6
lcall copy_s
clr f_m_p
ret
sadf5: mov r0,#sur_rm5
mov r1,#exp_rm5
mov r2,#6
clr bit_c
lcall do_sub
setb f_m_p
ret
;******************************
;******************************
er_ER: mov r_err,#err_7
lcall error_code
lcall clrbp
mov r4,#30
lcall d0lay
lcall setbp
mov r4,#10
lcall d0lay
ret
;*******************************
;===============================
do_sub: mov a,@r0
add a,#10
mov c,bit_c
subb a,@r1
cjne a,#10,do_sb0
do_sb0: jc do_sb1
subb a,#10
;
do_sb1: mov bit_c,c
mov @r0,a
dec r0
dec r1
djnz r2,do_sub
ret
;*******************************
; Expense Trans to DispCode
;===============================
expense2disp:
mov r0,#exp_rm0
mov r1,#ddsp04
jnb f_cny,fds_1
clr f0
mov r2,#3
fds00: mov a,@r0
jnz fds04
jb f0,fds05
mov a,#null
sjmp fds05
fds04: setb f0
fds05: mov @r1,a
inc r0
inc r1
djnz r2,fds00
mov a,@r0
mov @r1,a
jnb f_a_s,fds_0
mov r0,#ddsp04
mov @r0,#18
fds_0: ret
fds_1: mov a,@r0
jnz fds8
inc r0
mov a,@r0
jnz fds5
inc r0
mov a,@r0
jnz fds1
mov a,#null
fds1: mov @r1,a
inc r1
inc r0
mov a,@r0
orl a,#80h
mov @r1,a
mov r2,#2
inc r0
inc r1
lcall copy_s
ret
fds5: mov r2,#4
lcall copy_s
dec r1
dec r1
mov a,@r1
orl a,#80h
mov @r1,a
ret
fds8: mov r2,#4
fds9: lcall copy_s
ret
;=================================
; Surplus Trans to DispCode
;=================================
surplus2disp:
jnb f_tj,sds10
mov r0,#ddsp0
mov r2,#4
sds02: mov @r0,#18
inc r0
djnz r2,sds02
ret
sds10: mov r0,#sur_rm0
mov r1,#ddsp0
jnb f_m_p,fds_1
mov @r1,#18
inc r1
inc r0
mov a,@r0
jnz sds23
inc r0
mov a,@r0
jnz sds25
inc r0
mov a,@r0
orl a,#80h
mov @r1,a
inc r0
inc r1
mov r2,#2
sjmp fds9
sds23: mov r2,#3
sjmp fds9
sds25: mov @r1,a
inc r0
inc r1
mov a,@r0
orl a,#80h
mov @r1,a
inc r0
inc r1
mov a,@r0
mov @r1,a
ret
;*******************************
; Decimal Trans to Binary
; r0:source; r1:target
;===============================
bin2dec: mov a,@r0
mov b,#10
div ab
mov @r1,b
dec r1
mov @r1,a
dec r1
dec r0
bndec2: mov rcr0,r1
mov a,@r0
mov b,#100
div ab
dec r1
dec r1
mov @r1,a
dec r1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -