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

📄 p23b-p.asm

📁 一卡通源码程序是我公司的一卡通源码程序,绝对难得
💻 ASM
📖 第 1 页 / 共 5 页
字号:
d_f_1:  cjne a,#k_f15,d_f_3
	ljmp upt_zh

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 key_f1cl


d_ff7:  cjne a,#k_f11,d_f_8

	ljmp t_comm


d_f_8:  cjne a,#kb_a,d_ff8

	ret

	jnb f_cny,d_f_a

	ljmp key_a


d_ff8:  cjne a,#kb_b,d_f_9

        ret

	jnb f_cny,d_f_a

	ljmp key_b

d_f_9:  cjne a,#k_f2p,d_ff9

	ljmp key_f2en


d_ff9:  cjne a,#k_f2m,d_f_a

	ljmp key_f2cl

d_f_a:  ret

;*******************************
sale_counter:
        mov r2,#16
        mov xb_add,#d_x1
        mov yb_add,#d_y00
        lcall disp_null

        mov r_err,#24
        mov xb_add,#d_x2
        lcall get_code

        mov r_err,#25
        mov xb_add,#d_x3
        lcall get_code

        mov a,lim_cnt
        add a,#30h
        mov hzc_h,a
        mov xb_add,#d_x2
        mov yb_add,#d_y41
        lcall disp_one

        mov r0,#augend0
        mov @r0,#0
        mov a,@r0
        add a,#30h
        mov hzc_h,a
        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_one


sl_cnt0: lcall key_in
	mov a,v_key
	cjne a,#kb_en,sl_cnt1

	mov a,lim_cnt
	jnz sl_cnt3

        mov r_err,#err_5
        mov xb_add,#d_x1
	lcall error_code

	lcall clrbp

	mov r4,#30
	lcall d0lay

	lcall setbp

	mov r4,#10
	lcall d0lay

        ;lcall err_in

	sjmp sale_counter

sl_cnt1:
	lcall card_test

	jnb rf_chk,sl_cnt0

	ljmp card_pullout


sl_cnt3:
        dec lim_cnt
        mov a,lim_cnt
        add a,#30h
        mov xb_add,#d_x2
        mov yb_add,#d_y41
        mov hzc_h,a
        lcall disp_one

        mov r0,#augend0
        inc @r0
        mov a,@r0
        add a,#30h
        mov hzc_h,a
        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_one


sl_cnt5: mov regt,#10

sl_cnt6: lcall key_in
	mov a,v_key
	cjne a,#kb_cl,sl_cnt7

        inc lim_cnt
        mov a,lim_cnt
        add a,#30h
        mov xb_add,#d_x2
        mov yb_add,#d_y41
        mov hzc_h,a
        lcall disp_one

        mov r0,#augend0
        dec @r0
        mov @r0,a
        add a,#30h
        mov hzc_h,a
        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_one

        ljmp sl_cnt0


sl_cnt7:mov r4,#2
        lcall d0lay
        djnz regt,sl_cnt6


	lcall card_test

	jb rf_chk,sl_cnt9

        mov xb_add,#d_x3
        mov yb_add,#d_y41
        mov hzc_h,#0
        lcall disp_one

	mov regt,#10

sl_cnt8:mov r4,#5
        lcall d0lay

	djnz regt,sl_cnt8

        mov r0,#augend0
        mov a,@r0
        add a,#30h
        mov hzc_h,a
        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_one

	sjmp 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
	;
slcn99: mov @r0,#0
	inc r0

	djnz r3,slcn99
	;
        ;dec lim_cnt

	mov @r0,lim_cnt
	inc r0
	;
	lcall addsum
	;
	mov dptr,#sum5
	movx a,@dptr

	mov @r0,a
	;
	lcall w_sale
	;

        lcall lcd_clr
	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

        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

menu_loop:
	lcall key_in

	mov a,v_key
	cjne a,#kb_dd,mu_loop0

mu_loop0: jc menu_wait

	cjne a,#kb_f1,mu_loop5

	ljmp sale_wait


mu_loop5:
	lcall card_test

	jnb rf_chk,menu_loop         ;Card On

	ljmp card_pullout


	;-----------------------
	;-----------------------
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

        mov xb_add,#d_x2
        mov yb_add,#d_y41
        lcall disp_sur

mu_wait5:
        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_exp

	mov regt,#10

mu_wait6: lcall key_in

	mov a,v_key
	cjne a,#kb_dd,mu_wat66
mu_wat66: jc menu_wait

	cjne a,#kb_cl,mu_wat67

	ljmp sale_menu


mu_wat67:
        mov r4,#3
        lcall d0lay

        djnz regt,mu_wait6

        mov r2,#7
        mov xb_add,#d_x3
        mov yb_add,#d_y41

mu_nul: mov hzc_h,#20h
        lcall disp_one
        djnz r2,mu_nul

	lcall card_test

	jb rf_chk,menu_ret

	mov regt,#10

mu_wait8:
        mov r4,#3
        lcall d0lay

	djnz regt,mu_wait8

	sjmp mu_wait5


menu_ret:
	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


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

	lcall put_date

	mov r0,#dadr_h

	mov @r0,adr_h
	inc r0

	mov @r0,adr_l

	lcall addsum

	lcall w_sale

menu_r8:  clr f_tj


	lcall key_in

        lcall lcd_clr

	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,#10,k_shu0
k_shu0: jnc kb_keya

        jb f_n,k_shu5
        jnb f_eq,k_sh4

        clr f_eq
        lcall clr_expense

k_sh4:  lcall clr_augend

        mov r0,#augend3
        mov a,v_key
        mov @r0,a
        setb f_n
        sjmp k_dspaug


k_shu5: jb f_dd,k_shu1

        mov r0,#augend0
        cjne @r0,#null,k_dspaug
        cjne a,#0,k_shu8
                                ;is 0
        inc r0
        cjne @r0,#null,k_0t9
        inc r0
        cjne @r0,#null,k_0t9
        inc r0
        cjne @r0,#0,k_0t9

        sjmp k_dspaug

k_shu2: cjne @r0,#0,k_0t9
        dec r0
        cjne @r0,#null,k_0t9
        sjmp k_dspaug

k_shu1: mov r0,#augend5
        cjne @r0,#null,k_dspaug
        dec r0
        cjne @r0,#null,k_shu9
        mov @r0,a
        sjmp k_dspaug

k_shu8: mov r0,#augend3
        cjne @r0,#0,k_0t9
        dec r0
        cjne @r0,#null,k_0t9
        inc r0
        mov @r0,a
        sjmp k_dspaug

k_shu9: inc r0
        mov @r0,a

k_dspaug:
        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_aug
        ret

k_0t9:  mov r2,#3

        mov r0,#augend3
        mov a,@r0
        mov c,acc.7
        anl a,#0fh
        mov @r0,a

        mov r0,#augend1
key_n2: mov a,@r0
        dec r0
        mov @r0,a
        inc r0
        inc r0
        djnz r2,key_n2

        mov r0,#augend3
        mov @r0,v_key
        mov a,@r0
        mov acc.7,c

        setb f_n

        sjmp k_dspaug

	;--------------------------------
kb_keya:  cjne a,#kb_a,kb_keyb

	jnb f_cny,key_ab

	jnb f_n,key_ab

	clr f_a_s

        mov xb_add,#d_x3
        mov yb_add,#d_y00
        mov hzc_h,#0b4h
        mov hzc_l,#0e6h
        lcall disp_one


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 xb_add,#d_x3
        mov yb_add,#d_y00
        mov hzc_h,#0c8h
        mov hzc_l,#0a1h
        lcall disp_one

	ret

kb_keyd: cjne a,#kb_dd,kb_keyp

	jb f_cny,kb_dot          ;Save/Fetch Must Be Only Integer

	jb f_dd,kb_dot

        mov r0,#augend3
        mov a,@r0
	orl a,#80h
	mov @r0,a

kb_kd1: setb f_n
	setb f_dd
        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_aug

kb_dot: ret


kb_keyp: cjne a,#kb_p,kb_keym

	jb f_cny,kb_dot

	jnb f_n,p_nokey

	jb f_add,kb_p_add

	jb f_sub,kb_p_sub

        lcall exp_add_aug
        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_exp

p_nokey:  clr f_dd
	clr f_n
	clr f_sub
	clr f_eq
	setb f_add
	ret


kb_p_add:

        lcall exp_add_aug
	jc keyb_err

        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_exp
	sjmp p_nokey


kb_p_sub: lcall exp_sub_aug
	jb bit_c,keyb_err

        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_exp
	sjmp p_nokey


keyb_err: lcall err_in

	lcall clear_input
	ret


kb_keym: cjne a,#kb_m,kb_keyy

	jb f_cny,kb_dot

	jnb f_n,m_nokey

	jb f_add,kb_m_add

	jb f_sub,kb_m_sub

        lcall exp_add_aug
        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_exp

m_nokey: clr f_n
	clr f_dd
	clr f_add
	clr f_eq
	setb f_sub
	ret


kb_m_add: lcall exp_add_aug
	jc keyb_err

        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_exp
	sjmp m_nokey


kb_m_sub: lcall exp_sub_aug
	jb bit_c,keyb_err

        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_exp
	sjmp m_nokey


kb_keyy: cjne a,#kb_eq,kb_keycl      ;'='

	jb f_cny,kb_ret

	jnb f_n,equ_nokey

	jb f_add,equ_add

	jb f_sub,equ_sub

        lcall exp_add_aug
        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_exp

equ_nokey: clr f_n
	clr f_dd
	clr f_add
	clr f_sub
	setb f_eq
	ret

equ_add: lcall exp_add_aug
	jc keyb_err

        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_exp
	sjmp equ_nokey


equ_sub:lcall turn_aug
        lcall exp_sub_aug
        jb bit_c,keyb_errr

        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_exp
	sjmp equ_nokey

keyb_errr:ljmp in_err

kb_keycl: cjne a,#kb_cl,kb_ret

	lcall clr_bit
	lcall clr_expense
	lcall clr_augend

        mov xb_add,#d_x3
        mov yb_add,#d_y41
        lcall disp_aug

	mov c,f_cny
	cpl c
	mov f_a_s,c

        jnb f_cny,kb_ret
        mov xb_add,#d_x3
        mov yb_add,#d_y00
        mov hzc_h,#0b4h
        mov hzc_l,#0e6h
        lcall disp_one

kb_ret:
	ret

;******************************
;       Keyok deal
;******************************
key_ok: jb f_eq,ok_key

        jb f_add,ke_o1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -