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

📄 p23b-p.asm

📁 一卡通源码程序是我公司的一卡通源码程序,绝对难得
💻 ASM
📖 第 1 页 / 共 5 页
字号:
          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_nu2:   movx      @dptr,a
          lcall     d1lay
          nop
          nop
          nop
          djnz      r2,ds_nu2


          mov       dptr,#d_cs2
          clr       lcd_rw
          clr       lcd_di
          mov       x_add,xb_add
          mov       a,x_add
          movx      @dptr,a
          lcall     d1lay
          nop
          nop

          mov       y_add,#d_y00
          mov       a,y_add
          movx      @dptr,a
          lcall     d1lay
          nop
          nop

          clr       lcd_rw
          setb      lcd_di

          mov       r2,#64
          mov       a,#0
ds_nu3:   movx      @dptr,a
          lcall     d1lay
          nop
          nop
          nop
          djnz      r2,ds_nu3

          clr       lcd_rw
          clr       lcd_di
          inc       x_add
          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_nu4:   movx      @dptr,a
          lcall     d1lay
          nop
          nop
          nop
          djnz      r2,ds_nu4

          ret

;*******************************
;       disp augend
;*******************************
disp_aug:
        mov r2,#6
        mov r0,#augend5
        cjne @r0,#null,d_aug00
        mov hzc_h,#0
        lcall disp_one
        dec r2

d_aug00:dec r0
        cjne @r0,#null,d_aug01
        mov hzc_h,#0
        lcall disp_one
        dec r2

d_aug01:dec r0
        mov a,@r0
        jb acc.7,d_aug02
        mov hzc_h,#0
        lcall disp_one

d_aug02:mov r0,#augend0
d_aug0: mov a,@r0
        cjne a,#null,d_aug3

        mov hzc_h,#0
d_aug2: lcall disp_one

	inc r0
        djnz r2,d_aug0
        ret

d_aug3: cjne a,#2dh,d_aug4      ;  "-"
        mov hzc_h,a
        sjmp d_aug2


d_aug4: jb acc.7,d_aug5
        add a,#30h
        mov hzc_h,a
        sjmp d_aug2

d_aug5: clr acc.7
        add a,#30h
        mov hzc_h,a
        lcall disp_one

        mov hzc_h,#2eh          ;  "."
        sjmp d_aug2
        ret

;*******************************
;      disp Expense
;===============================
disp_exp:
	mov r0,#exp_rm0

;        jnb f_cny,fds_1
;
;        clr f0
;
;        mov r2,#3
;
;fds00:  mov a,@r0
;        jnz fds04
;
;        jb f0,fds05
;
;        mov hzc_h,#0
;        lcall disp_one
;        inc r0
;        djnz r2,fds00
;
;fds04:  setb f0
;
;fds05:  mov a,@r0
;        add a,#30h
;        mov hzc_h,a
;        lcall disp_one
;
;        inc r0
;
;        djnz r2,fds00
;
;        mov a,@r0
;        mov @r1,a
;
;        jnb f_a_s,fds_0
;
;        mov hzc_h,#2dh          ;disp"-"
;        lcall disp_one
;
;
;fds_0:  ret


fds_1:  mov a,@r0
        jnz fds14
        mov hzc_h,#0
        lcall disp_one

	inc r0

	mov a,@r0
        jnz fds13
        mov hzc_h,#0
        lcall disp_one


	inc r0

	mov a,@r0
        jnz fds12

        mov hzc_h,#0
        lcall disp_one

        inc r0
        mov r2,#1

fds1:   mov a,@r0
        add a,#30h
        mov hzc_h,a
        lcall disp_one
        inc r0
        djnz r2,fds1

        mov hzc_h,#2eh        ;disp"."
        lcall disp_one

        mov r2,#2
fds2:   mov a,@r0
        add a,#30h
        mov hzc_h,a
        lcall disp_one
        inc r0
        djnz r2,fds2

        ret


fds14:  mov r2,#4
        sjmp fds1

fds13:  mov r2,#3
        sjmp fds1

fds12:  mov r2,#2
        sjmp fds1

;=================================
;       Surplus Trans to DispCode
;=================================
disp_sur:

	jnb f_tj,sds10

        mov r2,#7               ;disp"------"
sds02:  mov hzc_h,#2dh
        lcall disp_one
        djnz r2,sds02

	ret

sds_1:  mov a,@r0
        jnz sds26
        mov hzc_h,#0
        sjmp sds20

sds10:  mov r0,#sur_rm0

        jnb f_m_p,sds_1

        mov hzc_h,#2dh               ;-
sds20:  lcall disp_one

	inc r0
	mov a,@r0
	jnz sds23
        mov hzc_h,#0
        lcall disp_one

	inc r0
	mov a,@r0
        jnz sds25
        mov hzc_h,#0
        lcall disp_one

	inc r0
        mov r2,#1

sds9:   mov a,@r0
        add a,#30h
        mov hzc_h,a
        lcall disp_one
        inc r0
        djnz r2,sds9

        mov hzc_h,#2eh               ;disp"."
        lcall disp_one

        mov r2,#2
sds9r:  mov a,@r0
        add a,#30h
        mov hzc_h,a
        lcall disp_one
        inc r0
        djnz r2,sds9r
        ret

sds23:  mov r2,#3
        sjmp sds9

sds25:  mov r2,#2
        sjmp sds9

sds26:  mov r2,#4
        sjmp sds9

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

	clr a
	mov @r1,a

	inc r1
	inc r1

	mov a,b
	mov b,#10
	div ab

	mov @r1,a

	inc r1

	mov @r1,b

	mov r1,#augend0

	mov @r1,#0
	inc r1

	mov @r1,#2
	inc r1

	mov @r1,#5
	inc r1

	mov @r1,#6

	dec r0

	mov a,@r0

	mov c,acc.7
	mov bit_c,c

	anl a,#3fh
	mov r3,a

	jnz bndec0
	ret

bndec0: mov r2,#4

	mov r0,rcr0
	mov r1,#augend3

	clr c

	lcall do_add

	djnz r3,bndec0
	ret
;===============================
adr_aug:

        lcall clr_augend

        mov r0,#augend3

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

        dec r0
        dec r0

        mov @r0,a

        dec r0

	clr a
        mov @r0,a

        inc r0
        inc r0

	mov a,b
	mov b,#10
	div ab

        mov @r0,a
        inc r0
        mov @r0,b


        dec r1
        mov a,@r1

	mov c,acc.7
	mov bit_c,c

	anl a,#3fh
	mov r3,a

        jnz adr_aug0
	ret

adr_aug0:
        mov r0,#augend3
        mov a,@r0
        addc a,#6
	da a
	mov c,acc.4
	clr acc.4
        mov @r0,a

        dec r0
        mov a,@r0
        addc a,#5
	da a
	mov c,acc.4
	clr acc.4
        mov @r0,a

        dec r0
        mov a,@r0
        addc a,#2
	da a
	mov c,acc.4
	clr acc.4
        mov @r0,a

        dec r0
        mov a,@r0
        addc a,#0
	da a
	mov c,acc.4
	clr acc.4
        mov @r0,a

        djnz r3,adr_aug0
        ret

;===============================
put_date:
	mov r1,#d_nme
	mov @r1,r_nme
	inc r1

	mov dptr,#ddat
	movx a,@dptr
	mov b,a
	anl b,#1fh

	mov dptr,#dmon
	movx a,@dptr
	swap a
	anl a,#0f0h

	clr c
	rlc a

	orl a,b
	mov b,a

	mov dptr,#dyer
	movx a,@dptr

	rlc a
	mov @r1,a
	inc r1

	mov @r1,b
	inc r1

	mov dptr,#dhor
	movx a,@dptr
	mov @r1,a
	inc r1

	mov dptr,#dmin
	movx a,@dptr
	mov @r1,a
	ret


;******************************
;       Binary Trans to Decimal
;       r0:source; r1:target
;******************************
dec2bin:dec r0

	mov a,@r0
	mov b,#10
	mul ab

	inc r0

	add a,@r0

	mov @r1,a

	dec r1

	dec r0
	dec r0
	dec r0

	mov a,@r0
	mov b,#10
	mul ab

	inc r0

	add a,@r0
	mov @r1,a

	dec r0
	dec r0
	dec r0

	mov a,@r0
	mov b,#10
	mul ab

	inc r0

	add a,@r0

	mov b,#100
	mul ab

	dec r1

	mov @r1,b

	inc r1

	add a,@r1

	mov @r1,a

	dec r1

	clr a
	addc a,@r1

	mov @r1,a
	ret


;*******************************
;*******************************
Card_Server:
	setb mifs_rst

	mov a,r_nme
	jnz Card_Wait

        mov r_err,#27
        mov xb_add,#d_x0
	lcall get_code


Card_Wait:

	setb f_pow

        mov r4,#5
        lcall d0lay

	jb b_chk,card_bat_err

	mov a,func
	cjne a,#8,card_w0
card_w0:  jc card_deal

	mov a,state
	cjne a,#3,card_ret

	sjmp card_Wait


card_bat_err:
	ljmp bat_err

card_ret:
	setb rf_chk
	ljmp mmain

	;
card_deal:
	jnb icard_chk,is_rf_card

	mov r4,#20
	lcall d0lay                    ;Delay 300ms

	jb icard_chk,has_ic_card

	mov r_err,#1
	ljmp recall_answer


is_rf_card:
	lcall mifs_request

	jb f0,has_rf_card

	ljmp recall_answer

	;-----------------------
	;   Check Rf Card
	;-----------------------
has_rf_card:

	mov r4,#3
	lcall d0lay                    ;Delay 50ms

	lcall mifs_antioll
	jb f0,select_rf_card

	ljmp recall_answer

	;
select_rf_card:

	mov r4,#3
	lcall d0lay                    ;Delay 50ms

	lcall mifs_select
	jb f0,rf_sc_verify

	ljmp recall_answer

	;
rf_sc_verify:

	mov r4,#3
	lcall d0lay              ;Delay 50ms

	mov r5,#keyset           ;UserSC Compare
	mov a,func
	jnz rf_write_new

	inc r5                   ;InitiSC Compare

rf_write_new:
	lcall mifs_authent2

	jb f0,rf_sc_succ

	ljmp recall_answer

	;
rf_sc_succ:
	clr rf_chk
	ljmp sc_verify_succ


	;-----------------------
	;   Check IC Card
	;-----------------------
has_ic_card:
	jb f_ri,$

	lcall icard_start
	jb f0,ic_start_succ

	mov r_err,#3
	ljmp recall_answer

	;
ic_start_succ:
	setb rf_chk

	mov a,func

	jz ic_write_new

	mov dptr,#d_sc0

	movx a,@dptr
	mov icard_sc0,a

	inc dptr

	movx a,@dptr
	mov icard_sc1,a

	inc dptr

	movx a,@dptr
	mov icard_sc2,a

	lcall icard_comp_sc       ;UserSC Compare

	jb f0,sc_verify_succ

	mov dptr,#d_sc6

	movx a,@dptr
	mov icard_sc0,a

	inc dptr

	movx a,@dptr
	mov icard_sc1,a

	inc dptr

	movx a,@dptr
	mov icard_sc2,a

	lcall icard_comp_sc      ;InitiSC Compare


sc_verify_fail:

	lcall icard_stop

        mov r_err,#4
	ljmp recall_answer


ic_write_new:
	mov dptr,#d_sc6

	movx a,@dptr
	mov icard_sc0,a

	inc dptr

	movx a,@dptr
	mov icard_sc1,a

	inc dptr

	movx a,@dptr
	mov icard_sc2,a

	lcall icard_comp_sc        ;InitiSC Compare

	jb f0,sc_verify_succ

	mov dptr,#d_sc0

	movx a,@dptr
	mov icard_sc0,a

	inc dptr

	movx a,@dptr
	mov icard_sc1,a

	inc dptr

	movx a,@dptr
	mov icard_sc2,a

	lcall icard_comp_sc      ;UserSC Compare

	sjmp sc_verify_fail


	;-----------------------
	;   Check Card Success
	;-----------------------
sc_verify_succ:

	mov a,func
	rl a
	add a,func

	mov dptr,#f0_tab
	jmp @a+dptr

f0_tab: ljmp write_new_card      ;Write New Card
	ljmp rewrite_card        ;ReWrite Card
	ljmp read_card           ;Read Card
	ljmp renew_card          ;ReNew Card
	ljmp card_end            ;
	ljmp read_card   

⌨️ 快捷键说明

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