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

📄 p23b-p.asm

📁 一卡通源码程序是我公司的一卡通源码程序,绝对难得
💻 ASM
📖 第 1 页 / 共 5 页
字号:

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