?? jxiao.asm
字號:
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
;=========================================
mmain: setb f_f
lcall shift
no_shift:
lcall write_sc ;Write ID && Sc
lcall upt_sl ;Send SaleData of Offline
;=========================================
;=========================================
; Pos Saling
;=========================================
pos_sale:
setb rf_chk
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
mov reg1,#dfcom
inc reg0
clr f_off
ljmp mmain
sale_no_comm:
setb f_pow
jnb f_off,sale_plus_disp
mov reg1,#nfcom
inc reg0
setb f_f ;news
ljmp mmain
sale_plus_disp:
mov r_err,#4 ;"+"
lcall get_code
clr f_f ;news
ljmp no_shift
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:
jb f_typ,sale_d_00
lcall divsub
setb f_id
sale_d_00:
mov r0,#rf1ram
mov adr_h,@r0
inc r0
mov adr_l,@r0
;****************
lcall search_idcode
JNB F0,JIESHU
KAISHI:;
LJMP SALE_ONLINE
JIESHU:;
LCALL CLEAR_IDCODE
LCALL GET_ACCOUNTS
JNB F0,GET_SUC
MOV R_ERR,#10
LJMP DEAL_ERROR ;
GET_SUC:
MOV R0,#R_BUF+6
MOV R1,#D_EXP0
MOV R2,#3
R_YE:
MOV A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ R2,R_YE
MOV R0,#R_BUF+9
MOV A,@R0
MOV B,#60
MUL AB
INC R0
ADD A,@R0
MOV R3,A
MOV A,B
ADDC A,#0
MOV R2,A
;;
MOV R0,#HOUR
MOV A,@R0
MOV B,#60
MUL AB
INC R0
ADD A,@R0
MOV R5,A
MOV A,B
ADDC A,#0
MOV R4,A
MOV A,R5
CLR C
SUBB A,R3
MOV R5,A
MOV A,R4
SUBB A,R2
MOV R4,A
MOV A,RAT_2
;*******************
MOV R3,A
MOV B,R5
MUL AB
MOV R7,A
PUSH B
MOV A,R3
MOV B,R4
MUL AB
POP B
ADD A,B
MOV R6,A
LCALL HB2
MOV A,R5
LCALL BCDH
MOV R5,A
MOV A,R3
MOV R2,A
MOV A,R4
MOV R3,A
LCALL BH2
MOV A,R3
MOV R4,A
MOV A,R2
MOV R3,A
MOV R3,#0
MOV A,R4
CLR C
SUBB A,#30
JC PPP
MOV R4,#3
PPP: ;代碼:
;**********************
MOV R0,#D_EXP2
MOV R1,#SUR_RM5
LCALL BIN2DEC
MOV C,BIT_C
MOV F_M_P,C
MOV F_P_M,C
LCALL CLR_BIT
LCALL CLR_EXPENSE
MOV R0,#05H
MOV R1,#EXP_RM5
LCALL BIN2DEC
LCALL OK_KEY
LJMP MMAIN
;********************
;******************
;********************
jb f_com,sale_online ;聯機
lcall get_accounts ;脫機
sjmp salecomp ;; old:sjmp sale_comp
;--------------
; Receie Zh
;--------------
sale_online:
mov sata,#0 ;
setb f_zh
clr f_pow
mov r2,#255 ;old 130
sale_comm_wait:
jnb f_zh,salecomp
lcall disp
djnz r2,sale_comm_wait
clr f_id
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
clr f_id
ljmp card_pullout
;---------------------
; Comp ZH for Read && Receive
;---------------------
salecomp: jb f_typ,sale_comp
mov r0,#r_buf ; date_format:addr(2)+flag+身份+card code(5)+surplus(3)
; +limit(3)+surplus counter+credit(2)+last addr(2) CHKSUM
mov r1,#rf1ram
mov adr_h,@r0
mov @r1,adr_h
inc r0
inc r1
mov adr_l,@r0
mov @r1,adr_l
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_JISHI:
MOV R0,#R_BUF+9
MOV A,@R0
ANL A,#10000000B
JZ SALE_1
MOV R_ERR,#9
LJMP DEAL_ERROR
SALE_1:
LCALL WRITE_IDCODE
JB F0,S_ERR
MOV ADR_H,#0
MOV ADR_L,R2
LCALL WRITE_XIAOFEI
LCALL CLRBP
MOV R4,#50
LCALL D0LAY
LCALL SETBP
LJMP MMAIN
S_ERR:
MOV R_ERR,#5
LJMP DEAL_ERROR ;ERR 005 無空地址
;代碼:
;*************************
;----------------
;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_3
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
MOV R0,#ICARD_SC1 ; credit
MOV R1,#ICARD_adr ;
;
LCALL BNDEC2 ;
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
lcall ok_key
ljmp mmain
sale_d_9: lcall clear_input
;----------------
;++++++++++++++++
;mov r5,#0bh
;mov r6,#0b8h
;++++++++++++++++
sale_wait:
;lcall card_id
;jnb f0,sl_wait8
ljmp sl_wait8
ljmp sale_d_0
sl_wait8:
lcall key_in
mov a,v_key
jb f_n,sl_wait7
cjne a,#kb_cl,sl_wait7
;ljmp mmain
;if "clear" then set f_0
setb f_0 ;
ljmp keyok7 ;
sl_wait7:
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:jnb f_typ,sl_wait6
lcall card_test
jnb rf_chk,sale_wait ;Card On
ljmp card_pullout
sl_wait6:
ljmp sale_wait
;=========================================
;=========================================
; 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
mov reg1,#dfcom
inc reg0
clr f_off
ljmp mmain
save_no_comm:
setb f_pow
jnb f_off,save_plus_disp
mov reg1,#nfcom
inc reg0
ljmp mmain
save_plus_disp:
;;;;;;;;clr mifs_rst
mov r_err,#4
lcall get_code
ljmp no_shift
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:
jb f_typ,save_d_00
lcall divsub
setb f_id
save_d_00:
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
;--------------
; Receie Zh
;--------------
save_online:
mov sata,#0 ;
setb f_zh
clr f_pow
mov r2,#255 ;old 130
save_comm_wait:
jnb f_zh,savecomp
lcall disp
djnz r2,save_comm_wait
clr f_id
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
clr f_id
ljmp card_pullout
;---------------------
; Comp ZH for Read && Receive
;---------------------
savecomp: jb f_typ,save_comp
mov r0,#r_buf
mov r1,#rf1ram
mov adr_h,@r0
mov @r1,adr_h
inc r0
inc r1
mov adr_l,@r0
mov @r1,adr_l
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 clear_input
;----------------
save_wait:
lcall key_in
mov a,v_key
jb f_n,sv_wait7
cjne a,#kb_cl,sv_wait7 ;
LJMP LLL
;ljmp mmain
sv_wait7:
cjne a,#kb_en,sv_wait0
LLL: lcall key_ok
jnb f0,save_wait
ljmp mmain
sv_wait0: jnc sv_wait5
lcall kb_deal
sv_wait5:
jnb f_typ,sv_wait6
lcall card_test
jnb rf_chk,save_wait ;Card On
ljmp card_pullout
sv_wait6:ljmp save_wait
;-------------------------------
; Saver Card Deal
;-------------------------------
testt: ;;
saver_card:
mov r0,#madr_h
mov @r0,adr_h
inc r0
mov @r0,adr_l
;
mov r_err,#2
lcall get_code
mov r0,#ddsp05
mov r1,#ddsp15
lcall call_pos_name
saver_loop:
mov r7,#2
saver_lp4:
mov r2,#100
saver_lp0:
lcall key_in
mov a,v0_key
cjne a,#kb_cl,saver_lp3
ljmp saver_ret
saver_lp3:
djnz r2,saver_lp0
djnz r7,saver_lp3
lcall clrbp
mov r4,#0
saver_lp5:
mov r3,#0
djnz r3,$
djnz r4,saver_lp5
lcall setbp
saver_ret:
setb f_cny
clr f_a_s
lcall key_in
lcall key_in
ljmp mmain
;-------------------------------
; Error Alrm
;-------------------------------
deal_error:
lcall error_code
mov r7,#3
dl_er0: lcall clrbp
mov r4,#15
lcall d0lay
lcall setbp
mov r2,#8
dl_er2: lcall disp
djnz r2,dl_er2
mov r4,#0
mov r3,#0
dl_er4: djnz r3,dl_er4
djnz r4,dl_er4
djnz r7,dl_er0
dl_er5: ;;lcall key_in
;;lcall key_in
mov a,r_err ;
cjne a,#0ch,qiu1 ; 判斷是不是ERR 012 報警,是的話就自動回傳數據
ljmp fuwei ; 關閉管理器中的帳戶,以便下一次可以正確的靠卡
qiu1: cjne a,#9,qiu
ljmp fuwei
qiu: mov a,r_err
cjne a,#16,rett ;判斷剛才的告警是不是016告警
mov r7,#100
lp: lcall key_in ;是的話就調用判鍵子程序
mov a,v_key
cjne a,#kb_en,pl
ljmp fuwei ;是按下的ENTER鍵就跳
pl: djnz r7,lp
rett: ljmp mmain ;不是的話就直接返回主程序
fuwei: mov r0,#dflag ;write flag
mov a,state
mov c,f_com
mov acc.7,c
MOV A,#3 ;
mov @r0,a
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -