📄 fm1702.asm
字号:
setb ET0
mov SCON,#50h
setb ES
setb EX1
mn_mn: lcall ResetWDT
lcall CheckCard
cjne a,#MI_OK,mn_1
lcall LEDOff
setb FLAG_HAVECARD
mov CHK_CNT,#0
sjmp mn_2
mn_1:
inc CHK_CNT
mov a,CHK_CNT
cjne a,#MAX_CHECK,mn1_00
mn1_00: jc mn_2
mov CHK_CNT,#0
clr FLAG_HAVECARD
lcall LEDOn
mn_2:
lcall SecondProcess
lcall HalfSecondProcess
lcall CMDExecute
sjmp mn_mn
SecondProcess:
jb FLAG_SECOND,sp_0
ret
sp_0: clr FLAG_SECOND
ret
HalfSecondProcess:
jb FLAG_HALFSEC,hsp_0
ret
hsp_0: clr FLAG_HALFSEC
jb FLAG_HAVECARD,sp0_1
jnb FLAG_CARD,sp_1
jnb FLAG_CSTART,sp0_3
jb FLAG_IDLE,sp0_2
lcall SendIdle
sjmp sp_1
sp0_1: jb FLAG_CARD,sp_1
jnb FLAG_CSTART,sp0_3
jb FLAG_CARDSN,sp0_2
lcall SendCardSN
sjmp sp_1
sp0_2: clr FLAG_CARDSN
clr FLAG_IDLE
clr FLAG_CSTART
mov c,FLAG_HAVECARD
mov FLAG_CARD,c
sjmp sp_1
sp0_3: setb FLAG_CSTART
sp_1:
ret
LEDOn:
clr LED
clr LED_BIT
ret
LEDOff:
setb LED
setb LED_BIT
ret
ResetWDT:
clr RESET_WDT
nop
nop
nop
nop
setb RESET_WDT
ret
CheckCard:
mov a,#PICC_REQIDL
mov r0,#ATQ_BUF
lcall Mf500PiccCommonRequest
cjne a,#MI_OK,cc_ex
mov a,#PICC_ANTICOLL1
mov b,#0
mov r0,#SNR_BUF
lcall Mf500PiccCascAnticoll
cjne a,#MI_OK,cc_ex
mov a,#PICC_ANTICOLL1
mov r0,#SNR_BUF
lcall Mf500PiccCascSelect
cc_ex: ret
CMDExecute:
jb FLAG_RCV,scc_00
ret
scc_00: clr FLAG_RCV
mov a,RCV_LEN
jz scc_ex
lcall SRDecode
mov r0,#RCV_BUF
dec RCV_LEN
mov r7,RCV_LEN
lcall GetChecksum
mov b,a
mov a,#RCV_BUF
add a,RCV_LEN
mov r0,a
mov a,@r0
cjne a,b,scc_ex
sjmp scc_0
scc_ex:
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc_0:
mov r0,#RCV_BUF
mov a,@r0
inc r0
cjne a,#CMD_IDLE,scc_1
mov a,RCV_LEN
cjne a,#RNUM_CMD_IDLE,scc_ex
setb FLAG_IDLE
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc_1: cjne a,#CMD_CARDSN,scc_2
mov a,RCV_LEN
cjne a,#RNUM_CMD_CARDSN,scc_ex
setb FLAG_CARDSN
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc_2: cjne a,#CMD_KEY,scc_3
mov a,RCV_LEN
cjne a,#RNUM_CMD_KEY,scc2_ex
; mov r0,#SR_BUF+1
mov r1,#KEYS_BUF
lcall Mf500HostCodeKey
mov SR_MODE,#SR_IDLE
lcall SendKeysOK
scc2_ex:
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc__3: ljmp scc_4
scc_3: cjne a,#CMD_READBLOCK,scc__3
jb FLAG_HAVECARD,scc3_000
mov STATUS,#MI_NOTAGERR
sjmp scc3_ex
scc3_000:
mov a,RCV_LEN
cjne a,#RNUM_CMD_READBLOCK,scc3_ex
mov a,@r0
inc r0
mov b,#4
mul ab
mov BLOCK,a
mov a,@r0
mov b,a
add a,BLOCK
mov BLOCK,a
mov a,b
cjne a,#3,scc3_00
scc3_00:jc scc3_0
mov STATUS,#MI_UNKNOWN_COMMAND
sjmp scc3_ex
scc3_0:
inc r0
mov a,@r0
cjne a,#KEY_A,scc3_1
mov AUTH_MODE,#PICC_AUTHENT1A
sjmp scc3_2
scc30_0:mov STATUS,#MI_AUTHERR
sjmp scc3_ex
scc3_1: cjne a,#KEY_B,scc30_0
mov AUTH_MODE,#PICC_AUTHENT1B
scc3_2: mov r7,#10
scc3_3: mov r0,#MLastSelectedSnr
mov r1,#KEYS_BUF
mov a,AUTH_MODE
mov b,BLOCK
lcall Mf500PiccAuthKey
mov STATUS,a
cjne a,#MI_OK,scc33_err
sjmp scc3_4
scc33_err:
lcall CheckCard
djnz r7,scc3_3
sjmp scc3_ex
scc3_4: mov r7,#5
scc3_5: mov a,BLOCK
mov r0,#RCV_BUF+1
lcall Mf500PiccRead
mov STATUS,a
cjne a,#MI_OK,scc35_err
sjmp scc3_ex
scc35_err:
djnz r7,scc3_5
scc3_ex:
mov SR_MODE,#SR_IDLE
lcall SendReadBlock
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc__4: ljmp scc_5
scc_4: cjne a,#CMD_WRITEBLOCK,scc__4
jb FLAG_HAVECARD,scc4_000
mov STATUS,#MI_NOTAGERR
sjmp scc4_ex
scc4_000:
mov a,RCV_LEN
cjne a,#RNUM_CMD_WRITEBLOCK,scc4_ex
mov a,@r0
mov b,#4
mul ab
mov BLOCK,a
inc r0
mov a,@r0
mov b,a
add a,BLOCK
mov BLOCK,a
mov a,b
cjne a,#3,scc4_00
scc4_00:jc scc4_0
mov STATUS,#MI_UNKNOWN_COMMAND
sjmp scc4_ex
scc4_0:
inc r0
mov a,@r0
cjne a,#KEY_A,scc4_1
mov AUTH_MODE,#PICC_AUTHENT1A
sjmp scc4_2
scc40_0:mov STATUS,#MI_AUTHERR
sjmp scc4_ex
scc4_1: cjne a,#KEY_B,scc40_0
mov AUTH_MODE,#PICC_AUTHENT1B
scc4_2: mov r7,#10
scc4_3: mov r0,#MLastSelectedSnr
mov r1,#KEYS_BUF
mov a,AUTH_MODE
mov b,BLOCK
lcall Mf500PiccAuthKey
mov STATUS,a
cjne a,#MI_OK,scc43_err
sjmp scc4_4
scc43_err:
lcall CheckCard
djnz r7,scc4_3
sjmp scc4_ex
scc4_4: mov r7,#5
scc4_5: mov a,BLOCK
mov r0,#RCV_BUF+4
lcall Mf500PiccWrite
mov STATUS,a
cjne a,#MI_OK,scc45_err
sjmp scc4_ex
scc45_err:
djnz r7,scc4_5
scc4_ex:
mov SR_MODE,#SR_IDLE
lcall SendWriteBlock
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc_5: cjne a,#CMD_WRITEAUTH,scc_6
jb FLAG_HAVECARD,scc5_000
mov STATUS,#MI_NOTAGERR
sjmp scc5_ex
scc5_000:
mov a,RCV_LEN
cjne a,#RNUM_CMD_WRITEAUTH,scc5_ex
mov a,@r0
mov b,#4
mul ab
add a,#3
mov BLOCK,a
inc r0
mov a,@r0
cjne a,#KEY_A,scc5_1
mov AUTH_MODE,#PICC_AUTHENT1A
sjmp scc5_2
scc50_0:mov STATUS,#MI_AUTHERR
sjmp scc5_ex
scc5_1: cjne a,#KEY_B,scc50_0
mov AUTH_MODE,#PICC_AUTHENT1B
scc5_2: mov r7,#5
scc5_3: mov r0,#MLastSelectedSnr
mov r1,#KEYS_BUF
mov a,AUTH_MODE
mov b,BLOCK
lcall Mf500PiccAuthKey
mov STATUS,a
cjne a,#MI_OK,scc53_err
sjmp scc5_4
scc53_err:
lcall CheckCard
djnz r7,scc5_3
sjmp scc5_ex
scc5_4: mov r7,#5
scc5_5: mov a,BLOCK
mov r0,#RCV_BUF+3
lcall Mf500PiccWrite
mov STATUS,a
cjne a,#MI_OK,scc55_err
sjmp scc5_ex
scc55_err:
djnz r7,scc5_5
scc5_ex:
mov SR_MODE,#SR_IDLE
lcall SendWriteAuth
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc_6: cjne a,#CMD_READAUTH,scc_7
jb FLAG_HAVECARD,scc6_000
mov STATUS,#MI_NOTAGERR
sjmp scc6_ex
scc6_000:
mov a,RCV_LEN
cjne a,#RNUM_CMD_READAUTH,scc6_ex
mov a,@r0
mov b,#4
mul ab
add a,#3
mov BLOCK,a
inc r0
mov a,@r0
cjne a,#KEY_A,scc6_1
mov AUTH_MODE,#PICC_AUTHENT1A
sjmp scc6_2
scc60_0:mov STATUS,#MI_AUTHERR
sjmp scc6_ex
scc6_1: cjne a,#KEY_B,scc60_0
mov AUTH_MODE,#PICC_AUTHENT1B
scc6_2: mov r7,#10
scc6_3: mov r0,#MLastSelectedSnr
mov r1,#KEYS_BUF
mov a,AUTH_MODE
mov b,BLOCK
lcall Mf500PiccAuthKey
mov STATUS,a
cjne a,#MI_OK,scc63_err
sjmp scc6_4
scc63_err:
lcall CheckCard
djnz r7,scc6_3
sjmp scc6_ex
scc6_4: mov r7,#5
scc6_5: mov a,BLOCK
mov r0,#RCV_BUF+1
lcall Mf500PiccRead
mov STATUS,a
cjne a,#MI_OK,scc65_err
sjmp scc6_ex
scc65_err:
djnz r7,scc6_5
scc6_ex:
mov SR_MODE,#SR_IDLE
lcall SendReadAuth
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc_7: cjne a,#CMD_SEEK,scc_8
mov a,RCV_LEN
cjne a,#RNUM_CMD_SEEK,scc7_ex
mov SR_MODE,#SR_IDLE
lcall SendRC500ID
scc7_ex:
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc_8: cjne a,#CMD_KEYEE,scc_9
mov a,RCV_LEN
cjne a,#RNUM_CMD_KEYEE,scc8_ex
mov r0,#RCV_BUF+3
mov r1,#KEYS_BUF
lcall Mf500HostCodeKey
mov r0,#RCV_BUF+1
mov a,@r0
mov b,#24
mul ab
mov dptr,#80h
add a,dpl
mov dpl,a
mov a,dph
addc a,b
mov dph,a
inc r0
mov a,@r0
cjne a,#KEY_A,scc8_1
sjmp scc8_2
scc8_1: cjne a,#KEY_B,scc8_ex
mov a,#12
add a,dpl
mov dpl,a
clr a
addc a,dph
mov dph,a
scc8_2: mov r0,#KEYS_BUF
mov a,#12
lcall PcdWriteE2
mov STATUS,a
mov SR_MODE,#SR_IDLE
lcall SendKeyEE
scc8_ex:
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc__9: ljmp scc_a
scc_9: cjne a,#CMD_READBLOCKEE,scc__9
jb FLAG_HAVECARD,scc9_000
mov STATUS,#MI_NOTAGERR
sjmp scc9_ex
scc9_000:
mov a,RCV_LEN
cjne a,#RNUM_CMD_READBLOCKEE,scc9_ex
mov a,@r0
mov SECTOR,a
inc r0
mov b,#4
mul ab
mov BLOCK,a
mov a,@r0
mov b,a
add a,BLOCK
mov BLOCK,a
mov a,b
cjne a,#3,scc9_00
scc9_00:jc scc9_0
mov STATUS,#MI_UNKNOWN_COMMAND
sjmp scc9_ex
scc9_0:
inc r0
mov a,@r0
cjne a,#KEY_A,scc9_1
mov AUTH_MODE,#PICC_AUTHENT1A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -