⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p23b-p.asm

📁 一卡通源码程序是我公司的一卡通源码程序,绝对难得
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	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 + -