📄 终端机程序.asm
字号:
lcall put_date ;write name,date,time
mov r0,#dadr_h ;write address
mov @r0,adr_h
inc r0
mov @r0,adr_l
mov r0,#d_exp0 ;write #0ff to expens addr and surplus addr
mov r3,#6
llp: mov @r0,#0ffh
inc r0
djnz r3,llp
lcall w_sale ;
lcall key_in
lcall key_in
ljmp mmain
;------------------------------
; Illegal Pullout Card
;------------------------------
card_pullout:
mov r_err,#err_8
lcall error_code
mov r2,#3
crd_0: lcall clrbp
mov r4,#15
lcall d0lay
lcall setbp
lcall card_test
mov r4,#8
jnb rf_chk,crd_5 ;Card On
crd_1: lcall disp
djnz r4,crd_1
lcall card_test
mov r4,#0
mov r3,#0
jnb rf_chk,crd_5 ;Card On
crd_3: djnz r3,crd_3
djnz r4,crd_3
djnz r2,crd_0
crd_5: setb rf_chk
lcall key_in
lcall key_in
ljmp mmain
;------------------------------
;功能键处理
;------------------------------
deal_func_kb:
mov a,v_key
cjne a,#kb_f1,d_f_0
ljmp key_f1 ;F1功能键,显示机号
d_f_0: cjne a,#kb_f2,d_f_1
;ljmp key_f2 ;屏蔽了F2功能键
d_f_1: cjne a,#k_f15,d_f_3
ljmp clear_idcode0;
d_f_3: cjne a,#k_f13,d_f_4
ljmp tmdisp
d_f_4: cjne a,#k_f14,d_f_5
ljmp key_zj
d_f_5: cjne a,#k_f1p,d_f_7
jb f_com,d_f_6
cpl f_off
ret
;-----------------------
;-----------------------
d_f_6: clr f_off
ret
d_f_7: cjne a,#k_f1m,d_ff7
ljmp keyf1cl
d_ff7: cjne a,#k_f11,d_f_8
ljmp t_comm
d_f_8: cjne a,#k_f1equ,d_ff8
ljmp keyf1equ
d_ff8: cjne a,#k_f1d,d_f_9
ljmp keyf1d
d_f_9: cjne a,#k_f2p,d_ff9
ljmp keyf2en
d_ff9: cjne a,#k_f2m,d_f_10
ljmp keyf2cl
d_f_10: cjne a,#k_f16,d_f_a
ljmp keyf16
d_f_a: ret
;*******************************
;*******************************
sale_counter:
mov r0,#ddsp0
mov r1,#ddsp1
mov r2,#3
lcall setnul
mov @r0,lim_cnt
mov @r1,lim_cnt
mov r0,#ddsp04
mov r1,#ddsp14
mov r2,#3
lcall setnul
mov @r0,#0
mov @r1,#0
;
sl_cnt0:
ljmp sl_cnt00
ljmp sale_d_0
sl_cnt00:
lcall key_in
mov a,v_key
cjne a,#kb_en,sl_cnt1
mov a,lim_cnt
jnz sl_cnt3
lcall err_in
sjmp sale_counter
sl_cnt1:
cjne a,#kb_cl,sl_cnt0
;ljmp mmain
setb f_0 ;将CLEAR键标志位值1
ljmp sl_cnt9
sl_cnt3: mov r0,#ddsp03
mov r1,#ddsp13
dec @r0
dec @r1
mov r0,#ddsp07
mov r1,#ddsp17
inc @r0
inc @r1
mov r0,#ddsp04
mov r1,#augend0
mov r2,#4
lcall copy_s
mov r7,#6
sl_cnt5: mov regt,#10
sl_cnt6: lcall key_in
mov a,v_key
cjne a,#kb_cl,sl_cnt7
mov r0,#ddsp07
mov r1,#ddsp17
mov @r0,#0
mov @r1,#0
mov r0,#ddsp03
mov r1,#ddsp13
inc @r0
inc @r1
sjmp sl_cnt0
sl_cnt7: djnz regt,sl_cnt6
mov r0,#ddsp04
mov r1,#ddsp14
mov r2,#4
lcall setnul
mov regt,#20
sl_cnt8:
lcall disp
djnz regt,sl_cnt8
mov r0,#augend0
mov r1,#ddsp04
mov r2,#4
lcall copy_s
mov r0,#augend0
mov r1,#ddsp14
mov r2,#4
lcall copy_s
djnz r7,sl_cnt5
sl_cnt9: mov r0,#dflag
mov a,state
mov c,f_com
mov acc.7,c
mov @r0,a
;
lcall put_date
;
mov r0,#dadr_h
mov @r0,adr_h
inc r0
mov @r0,adr_l
;
mov r0,#d_exp0
mov r3,#5
;
jb f_0,xff
slcn99: mov @r0,#0
inc r0
djnz r3,slcn99
ljmp xyg
xff: ;clr f_0
mov @r0,#0ffh
inc r0
djnz r3,xff
MOV R0,#DFLAG
MOV @R0,#3
xyg: dec lim_cnt
mov @r0,lim_cnt
inc r0
jb f_0,xygg
lcall addsum
ljmp xygg1
xygg: clr f_0
xygg1: mov dptr,#sum5
movx a,@dptr
mov @r0,a
;
lcall w_sale
;
lcall key_in
lcall key_in
ljmp mmain
;*******************************
;*******************************
sale_menu:
clr f_tj
mov r0,#d_exp2
mov r1,#sur_rm5
lcall bin2dec
mov c,bit_c
mov f_m_p,c
mov f_p_m,c
mov r0,#d_sur2
mov r1,#lim_rm5
lcall bin2dec
lcall clear_input
menu_loop:
;lcall card_id
;jnb f0,menu_loop0
ljmp menu_loop0
ljmp sale_d_0
menu_loop0:
lcall key_in
mov a,v_key
cjne a,#kb_dot,mu_loop0
mu_loop0: jc menu_wait
cjne a,#kb_f1,mu_loop5
ljmp sale_wait
mu_loop5:
cjne a,#kb_cl,menu_loop
;ljmp mmain
setb f_0 ;将是CLEAR浆的标志为值1
ljmp menu_ret ;如果是CLEAR键的话就跳转
;-----------------------
;-----------------------
menu_wait:
mov r0,#d_exp2
mov r1,#sur_rm5
lcall bin2dec
mov c,bit_c
mov f_m_p,c
mov f_p_m,c
jb f_m_p,menu_err
lcall menu_add
jnc mu_wait0
menu_err:
lcall in_err
ljmp sale_menu
mu_wait0:
mov r0,#lim_rm0
mov r1,#exp_rm0
mov r2,#6
lcall r0_comp_r1
jnb f0,menu_err
lcall sur_sub_exp
jb bit_c,menu_err
lcall surplus2disp
mov r7,#6
mu_wait5:
lcall expense2disp
mov r0,#ddsp0
mov r1,#ddsp1
mov r2,#8
lcall copy_s
mov regt,#10
mu_wait6: lcall key_in
mov a,v_key
cjne a,#kb_dot,mu_wat66
mu_wat66: jc menu_wait
cjne a,#kb_cl,mu_wat67
ljmp sale_menu
mu_wat67: djnz regt,mu_wait6
mov r0,#ddsp04
mov r1,#ddsp14
mov r2,#4
lcall setnul
mov r2,#10
mov r3,#0
mu_wait68:
djnz r3,$
djnz r2,mu_wait68
djnz r7,mu_wait55
ljmp menu_ret
;; lcall card_test
;; jb rf_chk,menu_ret
mu_wait55:
mov regt,#20
mu_wait8:
lcall disp
djnz regt,mu_wait8
sjmp mu_wait5
menu_ret:
;----------------------
mov c,f_m_p
mov acc.7,c
mov @r1,a
mov r0,#dflag
mov a,state
anl a,#0fh
mov c,f_com
mov acc.7,c
mov @r0,a
;-------------------0
jb f_0,xyg1
mov r0,#exp_rm5
mov r1,#d_exp2
lcall dec2bin
mov r0,#d_exp0
cjne @r0,#0,menu_r6
inc r0
cjne @r0,#0,menu_r6
inc r0
cjne @r0,#0,menu_r6
;sjmp menu_r8
sjmp xyg1
xyg1: mov r0,#dflag
mov @r0,#3
mov r0,#d_exp0
mov @r0,#0ffh
inc r0
mov @r0,#0ffh
inc r0
mov @r0,#0ffh
menu_r6: mov r0,#sur_rm5
mov r1,#d_sur2
lcall dec2bin
;mov c,f_m_p
;mov acc.7,c
;mov @r1,a
;mov r0,#dflag
;mov a,state
;anl a,#0fh
;mov c,f_com
;mov acc.7,c
;mov @r0,a
;MOV @R0,#3
lcall put_date
mov r0,#dadr_h
mov @r0,adr_h
inc r0
mov @r0,adr_l
jb f_0,xyg2
lcall addsum
sjmp xyg2g
xyg2: clr f_0
xyg2g: lcall w_sale
menu_r8: clr f_tj
lcall key_in
lcall key_in
ljmp mmain
;*******************************
;*******************************
menu_add:
mov a,v_key
rl a
mov dptr,#d_menu
add a,dpl
mov dpl,a
clr a
addc a,dph
mov dph,a
mov r1,#augend0
mov @r1,#0
inc r1
movx a,@dptr
mov b,#100
div ab
mov @r1,a
inc r1
mov a,b
mov b,#10
div ab
mov @r1,a
inc r1
mov @r1,b
inc r1
inc dptr
movx a,@dptr
mov b,#10
div ab
mov @r1,a
inc r1
mov @r1,b
mov r0,#exp_rm5
mov r2,#6
clr c
lcall do_add
ret
;*******************************
;*******************************
; Sale && Save Keybord Deal
; KeyVale: 0-9,+,-,=,a,b,cl
;===============================
kb_deal: mov a,v_key
cjne a,#0,k_no0 ;Is 0
jb f_n,k_0t9
mov r0,#ddsp07
cjne @r0,#0,k_0t9
dec r0
cjne @r0,#null,k_0t9
ret
k_no0: cjne a,#10,k_no1 ;Is 1-9
k_no1: jnc kb_keya ;>9
k_0t9: mov b,a
jnb f_equ,key_n1
clr f_equ
lcall clr_expense
key_n0: mov r1,#ddsp04
mov r0,#ddsp04
mov r2,#3
lcall setnul
mov @r1,b
mov r0,#ddsp04
mov r1,#ddsp14
mov r2,#4
lcall copy_s
setb f_n
ret
key_n1: jnb f_n,key_n0
mov r1,#ddsp04
cjne @r1,#null,key_nr
jnb f_dot,key_n2
inc r1
mov a,@r1
jb acc.7,key_nr
lcall ddsmov
mov @r1,b
mov r0,#ddsp04
mov r1,#ddsp14
mov r2,#4
lcall copy_s
ret
key_n2: inc r1
cjne @r1,#null,key_nr
lcall ddsmov
mov @r1,b
mov r0,#ddsp04
mov r1,#ddsp14
mov r2,#4
lcall copy_s
key_nr: ret
;--------------------------------
;--------------------------------
kb_keya: cjne a,#kb_a,kb_keyb
jnb f_cny,key_ab
jnb f_n,key_ab
clr f_a_s
mov r0,#ddsp04
mov @r0,#null
key_ab: ret
kb_keyb: cjne a,#kb_b,kb_keyd
jnb f_cny,key_ab
jnb f_n,key_ab
setb f_a_s
mov r0,#ddsp04
mov @r0,#18
ret
;
kb_keyd: cjne a,#kb_dot,kb_keyp
jb f_cny,kb_dot1 ;Save/Fetch Must Be Only Integer
jb f_dot,kb_dot1
mov r0,#ddsp07
mov a,@r0
orl a,#80h
mov @r0,a
setb f_n
setb f_dot
kb_dot1: ret
kb_keyp: cjne a,#kb_p,kb_keym
jb f_cny,kb_dot1
jnb f_n,p_nokey
jb f_add,kb_p_add
jb f_sub,kb_p_sub
lcall disp2expense
p_nokey: clr f_dot
clr f_n
clr f_sub
clr f_equ
setb f_add
ret
kb_p_add: lcall exp_add_aug
jc keyb_err
lcall expense2disp
sjmp p_nokey
kb_p_sub: lcall exp_sub_aug
jb bit_c,keyb_err
lcall expense2disp
sjmp p_nokey
keyb_err: lcall err_in
lcall clear_input
ret
kb_keym: cjne a,#kb_m,kb_keyequ
jb f_cny,kb_dot1
jnb f_n,m_nokey
jb f_add,kb_m_add
jb f_sub,kb_m_sub
lcall disp2expense
m_nokey: clr f_n
clr f_dot
clr f_add
clr f_equ
setb f_sub
ret
kb_m_add: lcall exp_add_aug
jc keyb_err
lcall expense2disp
sjmp m_nokey
kb_m_sub: lcall exp_sub_aug
jb bit_c,keyb_err
lcall expense2disp
sjmp m_nokey
kb_keyequ: cjne a,#kb_equ,kb_keycl ;'='
jb f_cny,kb_ret
jnb f_n,equ_nokey
jb f_add,equ_add
jb f_sub,equ_sub
lcall disp2expense
equ_nokey: clr f_n
clr f_dot
clr f_add
clr f_sub
setb f_equ
ret
equ_add: lcall exp_add_aug
jc keyb_err
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -