📄 p23b-p.asm
字号:
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 + -