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

📄 fm1702.asm

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