📄 p23b-p.asm
字号:
lcall mifs_load_key
jnb f0,ld_err
mov dptr,#d_sc6
inc r3
lcall mifs_load_key
jnb f0,ld_err
sjmp edit_pos_name
ld_err: mov xb_add,#d_x2
lcall error_code
lcall clrbp
;
mov r4,#bpnum
lcall d0lay
lcall setbp
mov r4,#15
lcall d0lay
;lcall check_battery
sjmp load_rf_key
;-----------------------
; Edit PosName
;-----------------------
edit_pos_name:
mov r4,#100
lcall d0lay
mov regt,#1
mov a,end_h
jnz ed_p0
mov a,end_l
jnz ed_p0
dec regt
ed_p0: mov xb_add,#d_x1
mov yb_add,#d_y00
lcall get_pos_name
ed_p1: lcall key_in
mov a,v_key
cjne a,#kb_cl,ed_p2
mov regt,#1
ed_p2: cjne a,#k_f12,ed_p8
lcall set_pn ;Edit PostName
mov regt,#1
ed_p8: ;lcall check_battery
djnz regt,ed_p1
lcall clrsum
;
mov scon,#11110000b ;sm0 sm1 sm2 ren tb8 rb8 ti ri
;------
mov tmod,#11h
mov tcon,#00000001b ;TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
;
mov th1,#dt1_h
mov tl1,#dt1_l
setb tr1
mov ip,#00010000b ; * * pt2 ps pt1 px1 pt0 px0
mov ie,#00011110b ; ea * et2 es et1 ex1 et0 ex0
setb ea
mov reg1,#dfcom
;=========================================
; Main Loop
;=========================================
lcall lcd_clr
mmain: lcall upd_disp
lcall auto_uzh
lcall write_sc ;Write ID && Sc
lcall upt_sl ;Send SaleData of Offline
jb f_pow,on_power
lcall clrsum ;Clear Sum
on_power:
mov a,state
anl a,#3
mov b,a
rl a
add a,b
mov dptr,#m_tab
jmp @a+dptr
m_tab: ljmp pos_wait ;Pos Waitting
ljmp pos_sale ;Pos Sale
ljmp pos_save ;Pos Save
ljmp card_server ;Card Server
;=========================================
; Pos Waitting
;=========================================
pos_wait:
lcall key_in
mov a,v_key
cjne a,#kb_f1,p_wl01
lcall key_f1 ;Disp PosName
sjmp pos_wait
p_wl01: cjne a,#k_f13,p_wl03
lcall tmdisp ;Disp Date && Time
sjmp pos_wait
p_wl03: cjne a,#k_f14,p_wl04
lcall key_zj ;Test Keyboard && DispCode
p_wl04: lcall check_battery
jb b_chk,p_wl08
mov a,state
jz pos_wait
ljmp mmain
p_wl08: ljmp bat_err ;Battery Error
;=========================================
; Pos Saling
;=========================================
pos_sale:
setb f_a_s
clr f_cny
mov regt,#dslep
pos_sl_loop:
lcall key_in
lcall deal_func_kb
;--------------------
; Read Card
;--------------------
lcall card_read
jnb rf_chk,sale_deal_card
djnz regt,pos_sl_loop
jb b_chk,sale_bat_err
jnb f_com,sale_no_comm
clr f_off
ljmp mmain
sale_no_comm:
setb f_pow
ljmp mmain
sale_bat_err:
ljmp bat_err
;-------------------
; Deal Card
;-------------------
sale_deal_card:
jb f0,sale_d_0
ljmp deal_error ;Read Err
;--------------
; Read Succ
;--------------
sale_d_0:
mov r2,#16
mov xb_add,#d_x1
mov yb_add,#d_y00
lcall disp_null
mov r0,#rf1ram
mov adr_h,@r0
inc r0
mov adr_l,@r0
jb f_com,sale_online ;OnLine
lcall get_accounts ;OffLine
sjmp sale_comp
;--------------
; Receie Zh
;--------------
sale_online:
mov sata,#0 ;
setb f_zh
clr f_pow
mov r2,#130
sale_comm_wait:
jnb f_zh,sale_comp
lcall card_test
jb rf_chk,sale_card_off
mov r4,#1
lcall d0lay
djnz r2,sale_comm_wait
clr f_zh
mov r_err,#err_13 ;Comm Err
setb f_pow
ljmp deal_error
;------------
sale_card_off:
setb f_pow
clr f_zh
ljmp card_pullout
;---------------------
; Comp ZH for Read && Receive
;---------------------
sale_comp:
setb f_pow
lcall comp_accounts
jb f0,sale_comp_succ
ljmp deal_error ;comp zh Err
sale_comp_succ:
mov r0,#r_buf
inc r0
inc r0
mov a,state
;----------------
;Sale Count
;----------------
cjne a,#countfunc,sale_d_3
jnb f_com,sale_err
clr f_rat
cjne @r0,#1,sale_err
ljmp sale_counter
;------------------
;Ration Expense
;------------------
sale_d_3: cjne a,#ratfunc,sale_d_5
setb f_rat
sjmp sale_normal
;-------------------
; Alrm Err 015
;-------------------
sale_err: mov r_err,#err_15
ljmp deal_error
;----------------
; Menu Sale
;----------------
sale_d_5: cjne a,#menufunc,sale_d_6
jb f_rat,sale_normal
jnb f_com,sale_normal
cjne @r0,#1,sale_err
ljmp sale_menu
;---------------
; Normal Sale
;---------------
sale_d_6: cjne a,#norsale,sale_err
sale_normal:
cjne @r0,#0ffh,sale_d_7
;----------------
; Offline Sale
;----------------
setb f_tj
clr f_m_p
clr f_p_m
lcall tj_t_x
sjmp sale_d_8
;----
;----
sale_d_7: cjne @r0,#1,sale_err
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
;----
;----
sale_d_8: jnb f_rat,sale_d_9
lcall clr_bit
lcall clr_expense
mov r0,#rat_2 ;Ration
mov r1,#exp_rm5
lcall bin2dec
mov r_err,#22
mov xb_add,#d_x2
lcall get_code
mov r_err,#23
mov xb_add,#d_x3
lcall get_code
lcall ok_key
ljmp mmain
sale_d_9:
mov r_err,#22
mov xb_add,#d_x2
lcall get_code
mov r_err,#23
mov xb_add,#d_x3
lcall get_code
lcall clear_input
;----------------
sale_wait:
lcall key_in
mov a,v_key
cjne a,#kb_en,sl_wait0
lcall key_ok
jnb f0,sale_wait
ljmp mmain
sl_wait0: jnc sl_wait5
lcall kb_deal
sl_wait5:
lcall card_test
jnb rf_chk,sale_wait ;Card On
ljmp card_pullout
;=========================================
; Pos Save
;=========================================
pos_save:
clr f_a_s
mov regt,#dslep
pos_sv_loop:
lcall key_in
lcall deal_func_kb
;--------------------
; Read Card
;--------------------
lcall card_read
jnb rf_chk,save_deal_card
;
djnz regt,pos_sv_loop
jb b_chk,save_bat_err
jnb f_com,save_no_comm
clr f_off
ljmp mmain
save_no_comm:
setb f_pow
;clr f_off
ljmp mmain
save_bat_err:
ljmp bat_err
;-------------------
; Deal Card
;-------------------
save_deal_card:
jb f0,save_d_0
ljmp deal_error ;Read Err
;--------------
; Read Succ
;--------------
save_d_0:
mov r2,#16
mov xb_add,#d_x1
mov yb_add,#d_y00
lcall disp_null
mov r0,#rf1ram
mov adr_h,@r0
inc r0
mov adr_l,@r0
jb f_com,save_online ;OnLine
lcall get_accounts ;OffLine
sjmp save_comp
;ljmp save_err
;ljmp mmain
;--------------
; Receie Zh
;--------------
save_online:
mov sata,#0 ;
setb f_zh
clr f_pow
mov r2,#130
save_comm_wait:
jnb f_zh,save_comp
lcall card_test
jb rf_chk,save_rf_off ;Card Off
mov r4,#1
lcall d0lay
djnz r2,save_comm_wait
clr f_zh
mov r_err,#err_13 ;Comm Err
setb f_pow
ljmp deal_error
;------------
save_rf_off:
setb f_pow
clr f_zh
ljmp card_pullout
;---------------------
; Comp ZH for Read && Receive
;---------------------
save_comp:
setb f_pow
lcall comp_accounts
jb f0,save_comp_succ
ljmp deal_error ;comp zh Err
save_comp_succ:
mov r0,#r_buf
inc r0
inc r0
mov a,state
;----------------
;Save Normal
;----------------
cjne a,#norsave,save_err
jb f_cny,save_normal
cjne @r0,#3,save_12_err
ljmp saver_card
;-------------------
; Alrm Err 012
;-------------------
save_12_err:
mov r_err,#err_12
ljmp deal_error
;-------------------
; Alrm Err 015
;-------------------
save_err: mov r_err,#err_15
ljmp deal_error
save_normal:
cjne @r0,#1,save_err
clr f_tj
clr f_rat
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 clr_expense
lcall clr_bit
lcall clr_augend
mov r_err,#22
mov xb_add,#d_x2
lcall get_code
mov xb_add,#d_x2
mov yb_add,#d_y41
lcall disp_sur
mov r_err,#21
mov xb_add,#d_x3
lcall get_code
mov xb_add,#d_x3
mov yb_add,#d_y41
lcall disp_aug
;----------------
save_wait:
lcall key_in
mov a,v_key
cjne a,#kb_en,sv_wait0
lcall key_ok
jnb f0,save_wait
ljmp mmain
sv_wait0: jnc sv_wait5
lcall kb_deal
sv_wait5:
lcall card_test
jnb rf_chk,save_wait ;Card On
ljmp card_pullout
;-------------------------------
; Saver Card Deal
;-------------------------------
saver_card:
mov r0,#madr_h
mov @r0,adr_h
inc r0
mov @r0,adr_l
;
mov r_err,#18
mov xb_add,#d_x1
lcall get_code
clr rf_chk
saver_loop:
mov r2,#30
jb rf_chk,saver_ret
saver_lp0:
mov r4,#5
lcall d0lay
djnz r2,saver_lp0
lcall card_test
mov r2,#2
mov r4,#0
mov r3,#0
jb rf_chk,saver_ret
saver_lp5:
djnz r3,saver_lp5
djnz r4,saver_lp5
djnz r2,saver_lp5
lcall card_test
sjmp saver_loop
saver_ret:
lcall key_in
lcall key_in
setb f_cny
clr f_a_s
ljmp mmain
;-------------------------------
; Error Alrm
;-------------------------------
deal_error:
mov xb_add,#d_x1
lcall error_code
dl_er0: lcall clrbp
mov r4,#bpnum
lcall d0lay
lcall setbp
lcall card_test
mov r2,#8
jb rf_chk,dl_er5
dl_er2: mov r4,#5
lcall d0lay
djnz r2,dl_er2
lcall card_test
jb rf_chk,dl_er5
mov r4,#0
mov r3,#0
dl_er4: djnz r3,dl_er4
djnz r4,dl_er4
sjmp dl_er0
dl_er5: lcall key_in
lcall key_in
lcall lcd_clr
ljmp mmain
;------------------------------
; Illegal Pullout Card
;------------------------------
card_pullout:
mov r_err,#err_8
mov xb_add,#d_x1
lcall error_code
mov r2,#3
crd_0: lcall clrbp
mov r4,#15
lcall d0lay
lcall setbp
lcall card_test
jnb rf_chk,crd_5 ;Card On
crd_1: mov r4,#5
lcall d0lay
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:
lcall lcd_clr
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
d_f_0: cjne a,#kb_f2,d_f_1
ljmp key_f2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -