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

📄 终端机程序.asm

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

	lcall put_date		;write name,date,time

	mov r0,#dadr_h		;write address
	mov @r0,adr_h
	inc r0
	mov @r0,adr_l

	mov r0,#d_exp0		;write #0ff to expens addr and surplus addr
	mov r3,#6
llp:	mov @r0,#0ffh
	inc r0
	djnz r3,llp

	lcall w_sale		;
	lcall key_in
	lcall key_in
	ljmp mmain

;------------------------------
;       Illegal Pullout Card
;------------------------------
card_pullout:
	mov r_err,#err_8
	lcall error_code

	mov r2,#3

crd_0:  lcall clrbp

	mov r4,#15
	lcall d0lay

	lcall setbp

	lcall card_test

	mov r4,#8

	jnb rf_chk,crd_5         ;Card On

crd_1:  lcall disp

	djnz r4,crd_1

	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:  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                   ;F1功能键,显示机号


d_f_0:  cjne a,#kb_f2,d_f_1

	;ljmp key_f2			;屏蔽了F2功能键


d_f_1:  cjne a,#k_f15,d_f_3

	ljmp clear_idcode0;            


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 keyf1cl


d_ff7:  cjne a,#k_f11,d_f_8

	ljmp t_comm


d_f_8: cjne a,#k_f1equ,d_ff8

	ljmp keyf1equ


d_ff8: cjne a,#k_f1d,d_f_9

	ljmp keyf1d


d_f_9:  cjne a,#k_f2p,d_ff9             

	ljmp keyf2en


d_ff9:  cjne a,#k_f2m,d_f_10

	ljmp keyf2cl

d_f_10: cjne a,#k_f16,d_f_a

        ljmp keyf16

d_f_a:  ret


;*******************************
;*******************************
sale_counter:
	mov r0,#ddsp0
	mov r1,#ddsp1
	mov r2,#3
	lcall setnul

	mov @r0,lim_cnt
	mov @r1,lim_cnt

	mov r0,#ddsp04
	mov r1,#ddsp14

	mov r2,#3
	lcall setnul

	mov @r0,#0
	mov @r1,#0

	;
sl_cnt0:

        ljmp sl_cnt00
        ljmp   sale_d_0

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

	mov a,lim_cnt
	jnz sl_cnt3

	lcall err_in
	sjmp sale_counter


sl_cnt1:
        cjne    a,#kb_cl,sl_cnt0
        ;ljmp    mmain
	setb f_0		;将CLEAR键标志位值1
	ljmp sl_cnt9

sl_cnt3: mov r0,#ddsp03
	mov r1,#ddsp13

	dec @r0
	dec @r1

	mov r0,#ddsp07
	mov r1,#ddsp17

	inc @r0
	inc @r1

	mov r0,#ddsp04
	mov r1,#augend0
	mov r2,#4
	lcall copy_s

         mov r7,#6
sl_cnt5: mov regt,#10

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

	mov r0,#ddsp07
	mov r1,#ddsp17

	mov @r0,#0
	mov @r1,#0

	mov r0,#ddsp03
	mov r1,#ddsp13

	inc @r0
	inc @r1

	sjmp sl_cnt0


sl_cnt7: djnz regt,sl_cnt6


	mov r0,#ddsp04
	mov r1,#ddsp14
	mov r2,#4
	lcall setnul

	mov regt,#20

sl_cnt8:
	lcall disp

	djnz regt,sl_cnt8

	mov r0,#augend0
	mov r1,#ddsp04
	mov r2,#4
	lcall copy_s

	mov r0,#augend0
	mov r1,#ddsp14
	mov r2,#4
	lcall copy_s

	djnz   r7,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
	;
	jb f_0,xff		 
slcn99:	mov @r0,#0		 
	inc r0

	djnz r3,slcn99
	ljmp xyg

xff:	;clr f_0			 
	mov @r0,#0ffh		 
	inc r0
	djnz r3,xff	 

	MOV R0,#DFLAG
	MOV @R0,#3

xyg:	dec lim_cnt

	mov @r0,lim_cnt
	inc r0

	jb f_0,xygg		 

	lcall addsum
	ljmp xygg1

xygg:	clr f_0		 

xygg1:	mov dptr,#sum5
	movx a,@dptr

	mov @r0,a
	;
	lcall w_sale
	;
	lcall key_in
	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

	lcall clear_input

menu_loop:
        ;lcall  card_id
        ;jnb    f0,menu_loop0
        ljmp menu_loop0
        ljmp   sale_d_0

menu_loop0:

	lcall key_in

	mov a,v_key

	cjne a,#kb_dot,mu_loop0

mu_loop0: jc menu_wait

	cjne a,#kb_f1,mu_loop5

	ljmp sale_wait

mu_loop5:
        cjne a,#kb_cl,menu_loop
        ;ljmp mmain
	setb f_0			;将是CLEAR浆的标志为值1
	ljmp menu_ret			;如果是CLEAR键的话就跳转
	;-----------------------
	;-----------------------
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

	lcall surplus2disp

         mov    r7,#6
mu_wait5:
	lcall expense2disp

	mov r0,#ddsp0
	mov r1,#ddsp1

	mov r2,#8
	lcall copy_s


	mov regt,#10

mu_wait6: lcall key_in

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

	cjne a,#kb_cl,mu_wat67

	ljmp sale_menu

mu_wat67: djnz regt,mu_wait6


	mov r0,#ddsp04
	mov r1,#ddsp14

	mov r2,#4
	lcall setnul

        mov r2,#10
        mov r3,#0
mu_wait68:
        djnz r3,$
        djnz r2,mu_wait68

        djnz  r7,mu_wait55
        ljmp  menu_ret

;;	lcall card_test

;;	jb rf_chk,menu_ret

mu_wait55:
	mov regt,#20

mu_wait8:
	lcall disp

	djnz regt,mu_wait8

	sjmp mu_wait5


menu_ret:
	;----------------------
	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
	;-------------------0
	jb f_0,xyg1

	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
	sjmp xyg1

xyg1:	mov r0,#dflag
	mov @r0,#3

	mov r0,#d_exp0	 
	mov @r0,#0ffh
	inc r0
	mov @r0,#0ffh
	inc r0
	mov @r0,#0ffh


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
	;MOV @R0,#3

	lcall put_date

	mov r0,#dadr_h

	mov @r0,adr_h
	inc r0

	mov @r0,adr_l

	jb f_0,xyg2	 
	lcall addsum

	sjmp xyg2g

xyg2: 	clr f_0			 

xyg2g:	lcall w_sale

menu_r8:  clr f_tj

	lcall key_in
	lcall key_in

	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,#0,k_no0          ;Is 0

	jb f_n,k_0t9

	mov r0,#ddsp07

	cjne @r0,#0,k_0t9
	dec r0

	cjne @r0,#null,k_0t9

	ret


 k_no0: cjne a,#10,k_no1         ;Is 1-9

 k_no1: jnc kb_keya              ;>9

k_0t9:  mov b,a

	jnb f_equ,key_n1

	clr f_equ
	lcall clr_expense

key_n0: mov r1,#ddsp04
	mov r0,#ddsp04

	mov r2,#3
	lcall setnul
	mov @r1,b

	mov r0,#ddsp04
	mov r1,#ddsp14
	mov r2,#4
	lcall copy_s

	setb f_n

	ret


key_n1: jnb f_n,key_n0

	mov r1,#ddsp04

	cjne @r1,#null,key_nr

	jnb f_dot,key_n2

	inc r1

	mov a,@r1
	jb acc.7,key_nr

	lcall ddsmov

	mov @r1,b

	mov r0,#ddsp04
	mov r1,#ddsp14
	mov r2,#4
	lcall copy_s

	ret



key_n2: inc r1

	cjne @r1,#null,key_nr

	lcall ddsmov

	mov @r1,b

	mov r0,#ddsp04
	mov r1,#ddsp14
	mov r2,#4
	lcall copy_s

key_nr: ret


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

	jnb f_cny,key_ab

	jnb f_n,key_ab

	clr f_a_s

	mov r0,#ddsp04
	mov @r0,#null

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 r0,#ddsp04
	mov @r0,#18
	ret


	;
kb_keyd: cjne a,#kb_dot,kb_keyp

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

	jb f_dot,kb_dot1

	mov r0,#ddsp07

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

	setb f_n
	setb f_dot

kb_dot1: ret


kb_keyp: cjne a,#kb_p,kb_keym

	jb f_cny,kb_dot1

	jnb f_n,p_nokey

	jb f_add,kb_p_add

	jb f_sub,kb_p_sub

	lcall disp2expense

p_nokey:  clr f_dot
	clr f_n
	clr f_sub
	clr f_equ
	setb f_add
	ret


kb_p_add: lcall exp_add_aug
	jc keyb_err

	lcall expense2disp
	sjmp p_nokey


kb_p_sub: lcall exp_sub_aug
	jb bit_c,keyb_err

	lcall expense2disp
	sjmp p_nokey


keyb_err: lcall err_in

	lcall clear_input
	ret


kb_keym: cjne a,#kb_m,kb_keyequ

	jb f_cny,kb_dot1

	jnb f_n,m_nokey

	jb f_add,kb_m_add

	jb f_sub,kb_m_sub

	lcall disp2expense

m_nokey: clr f_n
	clr f_dot
	clr f_add
	clr f_equ
	setb f_sub
	ret


kb_m_add: lcall exp_add_aug
	jc keyb_err

	lcall expense2disp
	sjmp m_nokey


kb_m_sub: lcall exp_sub_aug
	jb bit_c,keyb_err

	lcall expense2disp
	sjmp m_nokey



kb_keyequ: cjne a,#kb_equ,kb_keycl      ;'='

	jb f_cny,kb_ret

	jnb f_n,equ_nokey

	jb f_add,equ_add

	jb f_sub,equ_sub

	lcall disp2expense

equ_nokey: clr f_n
	clr f_dot
	clr f_add
	clr f_sub
	setb f_equ
	ret


equ_add: lcall exp_add_aug
	jc keyb_err

⌨️ 快捷键说明

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