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

📄 fm1702.asm

📁 FM1702/rc500驱动代码 at89c55wd,汇编语言
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        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 + -