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

📄 终端机程序.asm

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

        inc r0
        mov @r0,#15h

        inc r0
        mov @r0,#0dh

        mov r7,#12
        inc r0
keyf16_0:
        mov @r0,#12h
        inc r0
        djnz r7,keyf16_0
keyf16_1:

        lcall  card_id
        jb    rf_chk,keyf16_2
        ljmp  keyf16_3
keyf16_2:
        lcall   key_in
        mov     a,v_key
        cjne    a,#kb_cl,keyf16_1

        lcall   key_in
        lcall   key_in
        ret

keyf16_3:
        jnb    f0,keyf16err
        lcall  divsub

        lcall  clrbp
        mov    r2,#0
        mov    r3,#80
kf16_w:
        djnz   r2,$
        djnz   r3,kf16_w
        lcall  setbp

        mov    r2,#2
        mov    r0,#rf1ram
        mov    r1,#ddsp04
        lcall  ram2disp

        mov     r2,#4
        mov     r0,#rf0ram
        inc     r0
        mov     r1,#ddsp1
        lcall   ram2disp

        mov     r4,#1
        lcall   d0lay
        ljmp    keyf16_1


keyf16err:
        mov   r_err,#err_7
        ljmp  deal_error
        ret

ram2disp:
        mov    a,@r0
        mov    b,a
        anl    a,#0f0h
        swap   a
        mov    @r1,a
        inc    r1
        mov    a,b
        anl    a,#0fh
        mov    @r1,a
        inc    r0
        inc    r1
        djnz   r2,ram2disp
        ret

;******************************
;       Clear Deposit State
;******************************
keyf1cl:
	mov a,state
	anl a,#0fh

	cjne a,#2,kk_f1cl

	clr f_cny

	mov r_err,#11
	lcall get_code
	ljmp kkf10

kk_f1cl:ret


;******************************
;       Set Ration State
;******************************
keyf2en:
;	mov a,state
;	cjne a,#33,kk_f1n

;	ret


;kk_f1n: anl a,#0fh
;	cjne a,#2,kk_f2n

;	ret


kk_f2n: mov r_err,#12
	lcall get_code

	mov r0,#rat_2
	mov r1,#exp_rm5

	lcall bin2dec

	lcall expense2disp

	lcall clr_bit
	lcall clr_augend

kk_f5n: lcall key_in

	mov a,v_key
	cjne a,#kb_en,kk_f6n


        ;
	lcall disp2expense

	mov r0,#exp_rm5
	mov r1,#rat_2

	lcall dec2bin

        ;保存设置的消费费率
        MOV   R0,#RAT_0
        CLR   A
        MOV   @R0,A
        INC   R0
        MOV   @R0,A

        MOV DPTR,#D1_374
        MOV A,R1_374
        ANL A,#0FCH
        MOVX @DPTR,A            ;更改页地址

        MOV RICON,#3
        MOV R0,#RAT_0
        MOV DPTR,#D_RAT1
KK_1:   MOV A,@R0
        MOVX @DPTR,A
        INC R0
        INC DPTR
        DJNZ RICON,KK_1

        ;
        MOV RICON,#3
        MOV R0,#RAT_0
        MOV DPTR,#D_RAT
KK_2:
        MOV A,@R0
        MOVX @DPTR,A
        INC R0
        INC DPTR
        DJNZ RICON,KK_2

        MOV DPTR,#D1_374        ;复位页地址
        MOV A,R1_374
        MOVX @DPTR,A

	setb f_rat

	ret



kk_f6n: cjne a,#kb_cl,kk_f7n

	jb f_n,kkf79n

        lcall   key_in
        lcall   key_in
	ret


kk_f7n: cjne a,#kb_p,kkf77n

kkf77n: jnc kk_f5n

	mov a,state
	cjne a,#17,kkf78n

	sjmp kk_f5n


kkf78n: jb f_n,kk_f8n

kkf79n: lcall clr_bit
	lcall clr_expense
	lcall clr_augend

	mov r0,#ddsp04
	mov r1,#ddsp04

	mov r2,#3
	lcall setnul

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

kk_f8n: lcall kb_deal
	sjmp kk_f5n


;******************************
;       Clear Ration State
;******************************
keyf2cl:
	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,#13
	lcall get_code
	ljmp kkf10



;******************************
;******************************
err_in: mov r_err,#err_9
	lcall error_code

	lcall clrbp

	mov r4,#30
	lcall d0lay

	lcall setbp

	mov r4,#10
	lcall d0lay

	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
	ljmp xig5
	ret


;*******************************
;*******************************
clear_input:
	lcall clr_expense
	lcall clr_bit

	mov r0,#ddsp04
	mov r1,#ddsp14

	mov r2,#3
	lcall setnul

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

	lcall surplus2disp

	mov r2,#4
	mov r0,#ddsp0
	mov r1,#ddsp1
	lcall copy_s

	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,#8

	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,#0
	inc r0

	djnz r2,cnw0

	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_dot
	clr f_add
	clr f_sub
	clr f_equ
	ret


;*******************************
;       Expense Add Augend
;===============================
exp_add_aug:
	lcall disp2augend

	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 disp2augend

	mov r0,#exp_rm5
	mov r1,#augend5

	mov r2,#6
	clr bit_c

	lcall do_sub
	ret

;====================================
;	expense subb sur
;====================================
exp_sub_sur:
	mov r0,#exp_rm5
	mov r1,#sur_rm5

	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
        LJMP GOOGLE
	MOV A,R_NME
	JZ GOOGLE

	JB F_SIGN,GOOGLE
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	mov r0,#sur_rm0		;判断剩余额千位
	mov r1,#icard_sc2

	mov a,@r0		;剩余额千位
	mov b,@r1		;信用额千位
	cjne a,b,gog1

	ljmp go1		;=

gog1:	jnc google		 ;>
	ljmp setb_bit_c		;<
go1:	inc r0			;剩余额百位
	inc r1			;信用额百位
	mov a,@r0
	mov b,@r1
	cjne a,b,gog2

	ljmp go2

gog2:	jnc google
	ljmp setb_bit_c
go2:	inc r0
	inc r1
	mov a,@r0		;十位
	mov b,@r1
	cjne a,b,gog3

	ljmp go3

gog3:	jnc google
	ljmp setb_bit_c
go3:	inc r0
	inc r1
	mov a,@r0		;个位
	mov b,@r1
	cjne a,b,gog4

	ljmp google
gog4:	jnc google

setb_bit_c:
	setb bit_c
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

;******************************
;******************************
er_ER: mov r_err,#err_7
	lcall error_code

	lcall clrbp

	mov r4,#30
	lcall d0lay

	lcall setbp

	mov r4,#10
	lcall d0lay

	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


;*******************************
;      Expense Trans to DispCode
;===============================
expense2disp:
	mov r0,#exp_rm0
	mov r1,#ddsp04

	jnb f_cny,fds_1

	clr f0

	mov r2,#3

fds00:  mov a,@r0
	jnz fds04

	jb f0,fds05

	mov a,#null
	sjmp fds05

fds04:  setb f0

fds05:  mov @r1,a

	inc r0
	inc r1

	djnz r2,fds00

	mov a,@r0
	mov @r1,a

	jnb f_a_s,fds_0

	mov r0,#ddsp04
	mov @r0,#18

fds_0:  ret

fds_1:  mov a,@r0
	jnz fds8

	inc r0

	mov a,@r0
	jnz fds5

	inc r0

	mov a,@r0
	jnz fds1

	mov a,#null


fds1:   mov @r1,a

	inc r1
	inc r0

	mov a,@r0
	orl a,#80h

	mov @r1,a

	mov r2,#2

	inc r0
	inc r1

	lcall copy_s

	ret


 fds5:  mov r2,#4

	lcall copy_s

	dec r1
	dec r1

	mov a,@r1
	orl a,#80h

	mov @r1,a
	ret


 fds8:  mov r2,#4

 fds9:  lcall copy_s
	ret


;=================================
;       Surplus Trans to DispCode
;=================================
surplus2disp:

	jnb f_tj,sds10

	mov r0,#ddsp0
	mov r2,#4

sds02:  mov @r0,#18
	inc r0
	djnz r2,sds02

	ret



sds10:  mov r0,#sur_rm0
	mov r1,#ddsp0

	jnb f_m_p,fds_1

	mov @r1,#18

	inc r1
	inc r0

	mov a,@r0
	jnz sds23

	inc r0

	mov a,@r0
	jnz sds25

	inc r0

	mov a,@r0
	orl a,#80h

	mov @r1,a

	inc r0
	inc r1

	mov r2,#2
	sjmp fds9


sds23:  mov r2,#3
	sjmp fds9


sds25:  mov @r1,a

	inc r0
	inc r1

	mov a,@r0
	orl a,#80h

	mov @r1,a

	inc r0
	inc r1

	mov a,@r0
	mov @r1,a
	ret


;*******************************
;       Decimal Trans to Binary
;       r0:source; r1:target
;===============================
bin2dec: mov a,@r0

	mov b,#10
	div ab

	mov @r1,b

	dec r1

	mov @r1,a

	dec r1
	dec r0

bndec2: mov rcr0,r1

	mov a,@r0
	mov b,#100
	div ab

	dec r1
	dec r1

	mov @r1,a

	dec r1

⌨️ 快捷键说明

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