📄 p23b-p.asm
字号:
jb f_sub,ke_o2
jnb f_n,ke_o0
lcall exp_add_aug
ke_o0: mov xb_add,#d_x3
mov yb_add,#d_y41
lcall disp_exp
sjmp ok_key
ke_o1: lcall exp_add_aug
jnc ok_key
ljmp in_err
ke_o2: lcall exp_sub_aug
jnb bit_c,ok_key
ljmp in_err
ok_key: mov r0,#sur_rm0
mov r1,#augend0
mov r2,#6
lcall copy_s
jnb f_a_s,k_kok
jnb f_m_p,ke_o3
ljmp in_err
ke_o3: lcall sur_sub_exp
jnb bit_c,ke_o6
ke_o5: mov r0,#augend0
mov r1,#sur_rm0
mov r2,#6
lcall copy_s
ljmp in_err
ke_o6: jb f_cny,kk_ok
mov r0,#lim_rm0
mov r1,#exp_rm0
mov r2,#6
lcall r0_comp_r1
jnb f0,ke_o5
sjmp kk_ok
k_kok: lcall sur_add_exp
jc ke_o5
kk_ok:
mov xb_add,#d_x2
mov yb_add,#d_y41
lcall disp_sur
keyok1:
mov xb_add,#d_x3
mov yb_add,#d_y41
lcall disp_exp
mov regt,#10
keyok2: lcall key_in
mov a,v_key
cjne a,#kb_cl,keyok3
mov r0,#augend0
mov r1,#sur_rm0
mov r2,#6
lcall copy_s
lcall clear_input
mov c,f_p_m
mov f_m_p,c
jb f_rat,keyok5
mov c,f_cny
cpl c
mov f_a_s,c
clr f0
ret
keyok3:
mov r4,#2
lcall d0lay
djnz regt,keyok2
mov r2,#7
mov xb_add,#d_x3
mov yb_add,#d_y41
ok_nul: mov hzc_h,#0
lcall disp_one
djnz r2,ok_nul
lcall card_test
jb rf_chk,keyok7
mov regt,#10
keyok4: mov r4,#2
lcall d0lay
djnz regt,keyok4
sjmp keyok1
keyok5: mov r4,#2
lcall d0lay
lcall card_test
jnb rf_chk,keyok5
sjmp keyok8
keyok7: mov r0,#exp_rm5
mov r1,#d_exp2
lcall dec2bin
mov r0,#d_exp0
cjne @r0,#0,keyok6
inc r0
cjne @r0,#0,keyok6
inc r0
cjne @r0,#0,keyok6
sjmp keyok8
keyok6: 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 c,f_a_s ;1--Sale
anl c,f_cny ;2--deposit
mov acc.4,c ;18--Fetch Money
mov @r0,a
lcall put_date
mov r0,#dadr_h
mov @r0,adr_h
inc r0
mov @r0,adr_l
lcall addsum
lcall w_sale
keyok8:
lcall lcd_clr
clr f_tj
lcall key_in
lcall key_in
setb f0
ret
;******************************
; Display Pos Name
;******************************
key_f1: mov xb_add,#d_x1
mov yb_add,#d_y00
lcall get_pos_name
;
kkf10: mov r7,#80
k_f20: lcall key_in
mov a,v_key
cjne a,#k_f1a,k_f21
mov v0_key,#0ffh
ret
k_f21: cjne a,#k_f1p,k_f23
mov v0_key,#0ffh
ret
k_f23: cjne a,#k_f1m,k_f24
mov v0_key,#0ffh
ret
k_f24: cjne a,#k_f2p,k_f25
mov v0_key,#0ffh
ret
k_f25: cjne a,#k_f2m,k_f26
mov v0_key,#0ffh
ret
k_f26: cjne a,#kb_cl,k_f29
sjmp k_f30
k_f29: djnz r7,k_f20
k_f30: mov r2,#16
mov xb_add,#d_x1
mov yb_add,#d_y00
lcall disp_null
ret
;*************************************
; Display Sale/Deposit/Fetch Sum
;*************************************
key_f2:
lcall sum_ds
jnb bit_c,kkf10
ret
;******************************
; Endter Fetch Money State
;******************************
key_b: setb f_a_s
lcall clrsum
mov r_err,#9
lcall get_code
sjmp kkf10
;******************************
; Return Deposit State
;******************************
key_a: clr f_a_s
lcall clrsum
mov r_err,#8
lcall get_code
ljmp kkf10
;******************************
; Clear Deposit State
;******************************
key_f1cl:
mov a,state
anl a,#0fh
cjne a,#2,kk_f1cl
jnb f_cny,kk_f1cl
clr f_cny
mov r_err,#17
mov xb_add,#d_x1
lcall get_code
ljmp kkf10
kk_f1cl:ret
;******************************
; Set Ration State
;******************************
key_f2en:
mov a,state
cjne a,#countfunc,kk_f3n
ret
kk_f1n: anl a,#0fh
cjne a,#2,kk_f2n
ret
kk_f3n: cjne a,#ratfunc,kk_f1n
mov r_err,#36
mov xb_add,#d_x3
lcall get_code
mov r0,#rat_2
mov r1,#exp_rm5
lcall bin2dec
mov xb_add,#d_x3
mov yb_add,#d_y41
lcall disp_exp
kk_f4n: lcall key_in
mov a,v_key
cjne a,#kb_en,kk_f4n
mov r2,#16
mov xb_add,#d_x3
mov yb_add,#d_y00
lcall disp_null
ret
kk_f2n: mov r_err,#15
mov xb_add,#d_x3
lcall get_code
mov r0,#rat_2
mov r1,#exp_rm5
lcall bin2dec
mov xb_add,#d_x3
mov yb_add,#d_y41
lcall disp_exp
lcall clr_bit
lcall clr_augend
kk_f5n: lcall key_in
mov a,v_key
cjne a,#kb_en,kk_f6n
jb f_n,kk_f55n
sjmp kk_f56n
kk_f55n:lcall clr_expense
lcall exp_add_aug
mov r0,#exp_rm5
mov r1,#rat_2
lcall dec2bin
kk_f56n:setb f_rat
mov r2,#16
mov xb_add,#d_x3
mov yb_add,#d_y00
lcall disp_null
ret
kk_f6n: cjne a,#kb_cl,kk_f7n
jb f_n,kkf79n
mov r2,#16
mov xb_add,#d_x3
mov yb_add,#d_y00
lcall disp_null
ret
kk_f7n: cjne a,#kb_p,kkf77n
kkf77n: jnc kk_f5n
kkf78n: jb f_n,kk_f8n
kkf79n: lcall clr_bit
lcall clr_expense
lcall clr_augend
mov xb_add,#d_x3
mov yb_add,#d_y41
lcall disp_aug
kk_f8n: lcall kb_deal
sjmp kk_f5n
;******************************
; Clear Ration State
;******************************
key_f2cl:
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,#16
mov xb_add,#d_x1
lcall get_code
ljmp kkf10
;******************************
err_in: mov r_err,#err_9
mov xb_add,#d_x1
lcall error_code
lcall clrbp
mov r4,#30
lcall d0lay
lcall setbp
mov r4,#50
lcall d0lay
mov r2,#16
mov xb_add,#d_x1
mov yb_add,#d_y00
lcall disp_null
jb f_cny,err_in0
ret
err_in0:mov r_err,#21
mov xb_add,#d_x3
lcall get_code
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
ret
;*******************************
clear_input:
lcall clr_expense
lcall clr_bit
lcall clr_augend
mov xb_add,#d_x2
mov yb_add,#d_y41
lcall disp_sur
mov xb_add,#d_x3
mov yb_add,#d_y41
lcall disp_aug
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,#6
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,#null
inc r0
djnz r2,cnw0
mov r0,#augend3
mov @r0,#0
ret
;*******************************
turn_aug:
mov r0,#augend0
mov r2,#6
t_aug0: mov a,@r0
cjne a,#null,t_aug2
mov @r0,#0
sjmp t_aug3
t_aug2: mov a,@r0
anl a,#0fh
mov @r0,a
t_aug3: inc r0
djnz r2,t_aug0
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_dd
clr f_add
clr f_sub
clr f_eq
ret
;*******************************
; Expense Add Augend
;===============================
exp_add_aug:
lcall turn_aug
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 turn_aug
mov r0,#exp_rm5
mov r1,#augend5
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
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
;*******************************
;===============================
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
;*******************************
; disp null
;*******************************
disp_null:
mov x_add,xb_add
mov y_add,#d_y00
mov dptr,#d_cs1
clr lcd_rw
clr lcd_di
mov a,x_add
movx @dptr,a
lcall d1lay
nop
nop
mov a,y_add
movx @dptr,a
lcall d1lay
nop
nop
clr lcd_rw
setb lcd_di
mov r2,#64
mov a,#0
ds_nu1: movx @dptr,a
lcall d1lay
nop
nop
nop
djnz r2,ds_nu1
clr lcd_rw
clr lcd_di
inc x_add
mov a,x_add
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -