📄 fm1702.asm
字号:
sjmp scc9_2
scc90_0:mov STATUS,#MI_AUTHERR
sjmp scc9_ex
scc9_1: cjne a,#KEY_B,scc90_0
mov AUTH_MODE,#PICC_AUTHENT1B
scc9_2: mov r7,#5
scc9_3: mov r0,#MLastSelectedSnr
mov a,AUTH_MODE
mov r2,SECTOR
mov r3,BLOCK
lcall Mf500PiccAuthE2
mov STATUS,a
cjne a,#MI_OK,scc93_err
sjmp scc9_4
scc93_err:
lcall CheckCard
djnz r7,scc9_3
sjmp scc9_ex
scc9_4: mov r7,#5
scc9_5: mov a,BLOCK
mov r0,#RCV_BUF+1
lcall Mf500PiccRead
mov STATUS,a
cjne a,#MI_OK,scc93_err
sjmp scc9_ex
scc95_err:
djnz r7,scc9_5
scc9_ex:
mov SR_MODE,#SR_IDLE
lcall SendReadBlockEE
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc__a: ljmp scc_b
scc_a: cjne a,#CMD_WRITEBLOCKEE,scc__a
jb FLAG_HAVECARD,scca_000
mov STATUS,#MI_NOTAGERR
sjmp scca_ex
scca_000:
mov a,RCV_LEN
cjne a,#RNUM_CMD_WRITEBLOCKEE,scca_ex
mov a,@r0
mov SECTOR,a
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,scca_00
scca_00:jc scca_0
mov STATUS,#MI_UNKNOWN_COMMAND
sjmp scca_ex
scca_0:
inc r0
mov a,@r0
cjne a,#KEY_A,scca_1
mov AUTH_MODE,#PICC_AUTHENT1A
sjmp scca_2
scca0_0:mov STATUS,#MI_AUTHERR
sjmp scca_ex
scca_1: cjne a,#KEY_B,scca0_0
mov AUTH_MODE,#PICC_AUTHENT1B
scca_2: mov r7,#5
scca_3: mov r0,#MLastSelectedSnr
mov a,AUTH_MODE
mov r2,SECTOR
mov r3,BLOCK
lcall Mf500PiccAuthE2
mov STATUS,a
cjne a,#MI_OK,scca3_err
sjmp scca_4
scca3_err:
lcall CheckCard
djnz r7,scca_3
sjmp scca_ex
scca_4: mov r7,#5
scca_5: mov a,BLOCK
mov r0,#RCV_BUF+4
lcall Mf500PiccWrite
mov STATUS,a
cjne a,#MI_OK,scca5_err
sjmp scca_ex
scca5_err:
djnz r7,scca_5
scca_ex:
mov SR_MODE,#SR_IDLE
lcall SendWriteBlockEE
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc_b: cjne a,#CMD_WRITEAUTHEE,scc_c
jb FLAG_HAVECARD,sccb_000
mov STATUS,#MI_NOTAGERR
sjmp sccb_ex
sccb_000:
mov a,RCV_LEN
cjne a,#RNUM_CMD_WRITEAUTHEE,sccb_ex
mov a,@r0
mov SECTOR,a
mov b,#4
mul ab
add a,#3
mov BLOCK,a
inc r0
mov a,@r0
cjne a,#KEY_A,sccb_1
mov AUTH_MODE,#PICC_AUTHENT1A
sjmp sccb_2
sccb_0: mov STATUS,#MI_AUTHERR
sjmp sccb_ex
sccb_1: cjne a,#KEY_B,sccb_0
mov AUTH_MODE,#PICC_AUTHENT1B
sccb_2: mov r7,#5
sccb_3: mov r0,#MLastSelectedSnr
mov a,AUTH_MODE
mov r2,SECTOR
mov r3,BLOCK
lcall Mf500PiccAuthE2
mov STATUS,a
cjne a,#MI_OK,sccb3_err
sjmp sccb_4
sccb3_err:
lcall CheckCard
djnz r7,sccb_3
sjmp sccb_ex
sccb_4: mov r7,#5
sccb_5: mov a,BLOCK
mov r0,#RCV_BUF+3
lcall Mf500PiccWrite
mov STATUS,a
cjne a,#MI_OK,sccb5_err
sjmp sccb_ex
sccb5_err:
djnz r7,sccb_5
sccb_ex:
mov SR_MODE,#SR_IDLE
lcall SendWriteAuthEE
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc_c: cjne a,#CMD_READAUTHEE,scc_d
jb FLAG_HAVECARD,sccc_000
mov STATUS,#MI_NOTAGERR
sjmp sccc_ex
sccc_000:
mov a,RCV_LEN
cjne a,#RNUM_CMD_READAUTHEE,sccc_ex
mov a,@r0
mov SECTOR,a
mov b,#4
mul ab
add a,#3
mov BLOCK,a
inc r0
mov a,@r0
cjne a,#KEY_A,sccc_1
mov AUTH_MODE,#PICC_AUTHENT1A
sjmp sccc_2
sccc_0: mov STATUS,#MI_AUTHERR
sjmp sccc_ex
sccc_1: cjne a,#KEY_B,sccc_0
mov AUTH_MODE,#PICC_AUTHENT1B
sccc_2: mov r7,#5
sccc_3: mov r0,#MLastSelectedSnr
mov a,AUTH_MODE
mov r2,SECTOR
mov r3,BLOCK
lcall Mf500PiccAuthE2
mov STATUS,a
cjne a,#MI_OK,sccc3_err
sjmp sccc_4
sccc3_err:
lcall CheckCard
djnz r7,sccc_3
sjmp sccc_ex
sccc_4: mov r7,#5
sccc_5: mov a,BLOCK
mov r0,#RCV_BUF+1
lcall Mf500PiccRead
mov STATUS,a
cjne a,#MI_OK,sccc5_err
sjmp sccc_ex
sccc5_err:
djnz r7,sccc_5
sccc_ex:
mov SR_MODE,#SR_IDLE
lcall SendReadAuthEE
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
scc_d:
mov SR_MODE,#SR_IDLE
mov RCV_LEN,#0
ret
SendKeyEE:
mov a,SR_MODE
cjne a,#SR_IDLE,ske_err
mov SR_MODE,#SR_SEND
mov r0,#SND_BUF
mov @r0,#CMD_KEYEE
inc r0
ljmp SendStatus
ret
ske_err:mov a,#0ffh
ret
SendWriteBlock:
mov a,SR_MODE
cjne a,#SR_IDLE,swb_err
mov SR_MODE,#SR_SEND
mov r0,#SND_BUF
mov @r0,#CMD_WRITEBLOCK
inc r0
ljmp SendStatus
ret
swb_err:mov a,#0ffh
ret
SendWriteBlockEE:
mov a,SR_MODE
cjne a,#SR_IDLE,swbe_err
mov SR_MODE,#SR_SEND
mov r0,#SND_BUF
mov @r0,#CMD_WRITEBLOCKEE
inc r0
ljmp SendStatus
ret
swbe_err:
mov a,#0ffh
ret
SendWriteAuth:
mov a,SR_MODE
cjne a,#SR_IDLE,swa_err
mov SR_MODE,#SR_SEND
mov r0,#SND_BUF
mov @r0,#CMD_WRITEAUTH
inc r0
ljmp SendStatus
ret
swa_err:
mov a,#0ffh
ret
SendWriteAuthEE:
mov a,SR_MODE
cjne a,#SR_IDLE,swae_err
mov SR_MODE,#SR_SEND
mov r0,#SND_BUF
mov @r0,#CMD_WRITEAUTHEE
inc r0
ljmp SendStatus
ret
swae_err:
mov a,#0ffh
ret
SendStatus:
mov @r0,STATUS
inc r0
mov r0,#SND_BUF
mov r7,#2
lcall GetChecksum
mov r0,#SND_BUF+2
mov @r0,a
mov SND_LEN,#3
lcall SRCode
lcall Send
clr a
ret
SendReadAuthEE:
mov a,SR_MODE
cjne a,#SR_IDLE,srd_err
mov SR_MODE,#SR_SEND
mov r0,#SND_BUF
mov @r0,#CMD_READAUTHEE
inc r0
ljmp SendRead
SendReadAuth:
mov a,SR_MODE
cjne a,#SR_IDLE,srd_err
mov SR_MODE,#SR_SEND
mov r0,#SND_BUF
mov @r0,#CMD_READAUTH
inc r0
ljmp SendRead
SendReadBlockEE:
mov a,SR_MODE
cjne a,#SR_IDLE,srd_err
mov SR_MODE,#SR_SEND
mov r0,#SND_BUF
mov @r0,#CMD_READBLOCKEE
inc r0
ljmp SendRead
SendReadBlock:
mov a,SR_MODE
cjne a,#SR_IDLE,srd_err
mov SR_MODE,#SR_SEND
mov r0,#SND_BUF
mov @r0,#CMD_READBLOCK
inc r0
ljmp SendRead
SendRead:
mov a,STATUS
cjne a,#MI_OK,srd_1
mov r0,#RCV_QUEUE
mov r1,#SND_BUF+1
mov r7,#16
lcall MemCopy
mov r0,#SND_BUF
mov r7,#17
lcall GetChecksum
mov r0,#SND_BUF+17
mov @r0,a
mov SND_LEN,#18
lcall SRCode
lcall Send
clr a
ret
srd_1:
ljmp SendStatus
ret
srd_err:mov a,#0ffh
ret
SendKeysOK:
mov a,SR_MODE
cjne a,#SR_IDLE,sao_err
mov SR_MODE,#SR_SEND
mov r0,#SND_BUF
mov @r0,#CMD_KEY
inc r0
mov @r0,#CMD_KEY
mov SND_LEN,#SNUM_CMD_KEY+1
lcall SRCode
lcall Send
clr a
ret
sao_err:mov a,#0ffh
ret
SendRC500ID:
mov a,SR_MODE
cjne a,#SR_IDLE,scs_err
mov SR_MODE,#SR_SEND
mov r0,#SND_BUF
mov @r0,#CMD_SEEK
mov r0,#RC500_SNR
mov r1,#SND_BUF+1
mov r7,#4
lcall MemCopy
mov r0,#SND_BUF
mov r7,#5
lcall GetChecksum
mov r0,#SND_BUF+5
mov @r0,a
mov SND_LEN,#6
lcall SRCode
lcall Send
clr a
ret
SendCardSN:
mov a,SR_MODE
cjne a,#SR_IDLE,scs_err
mov SR_MODE,#SR_SEND
mov r0,#SND_BUF
mov @r0,#CMD_CARDSN
mov r0,#MLastSelectedSnr
mov r1,#SND_BUF+1
mov r7,#4
lcall MemCopy
mov r0,#SND_BUF
mov r7,#5
lcall GetChecksum
mov r0,#SND_BUF+5
mov @r0,a
mov SND_LEN,#6
lcall SRCode
lcall Send
clr a
ret
scs_err:mov a,#0ffh
ret
SendIdle:
mov a,SR_MODE
cjne a,#SR_IDLE,si_err
mov SR_MODE,#SR_SEND
mov r0,#SND_BUF
mov @r0,#CMD_IDLE
inc r0
mov @r0,#CMD_IDLE
mov SND_LEN,#2
lcall SRCode
lcall Send
clr a
ret
si_err: mov a,#0ffh
ret
ParallelReceive:
push psw
push acc
push b
mov a,r0
push acc
mov a,ParallelPort
mov b,a
cjne a,#COMM_HEAD,pr_1
mov a,RCV_LEN
jz pr_ex
setb FLAG_RCV
setb FLAG_PARALLEL
sjmp sr_ex
pr_1: mov a,SR_MODE
cjne a,#SR_IDLE,pr_ex
mov a,RCV_LEN
cjne a,#MAX_RCV,pr1_0
pr1_0: jnc sr_ex
add a,#RCV_BUF
mov r0,a
mov @r0,b
inc RCV_LEN
pr_ex: clr ParallelB
mov r0,#0
pr_ex0: jb ParallelA,pr_ex1
djnz r0,pr_ex0
pr_ex1: setb ParallelB
pop acc
mov r0,a
pop b
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -