在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 關(guān) 閉

      新聞中心

      EEPW首頁 > 安全與國防 > 設(shè)計(jì)應(yīng)用 > Mifare 1非接觸式IC卡讀寫核心模塊MCM200

      Mifare 1非接觸式IC卡讀寫核心模塊MCM200

      作者: 時(shí)間:2008-03-07 來源:網(wǎng)絡(luò) 收藏
      A

         A#10H ;設(shè)置MCM中的BCNTR

        寄存器為10H

         R0#04H

        X @R0A

       ?。剩?F0, RSTD ;根據(jù)F0標(biāo)志判斷是執(zhí)

        行Request std操作還是

        Request all操作

       ?。遥牛眩粒蹋苔?MOV A#52H ;Request all指令代碼→A

       ?。粒剩停?RQTMCM

        RSTD: MOV A#26H ;Request std 指令代碼→A

        RQTMCMMOV R0#00H

       ?。停希郑?@R0A ;Request all指令或Request

        std 指令寫入DATA

       ?。停希?A #0AH TOC = 0AH

        MOV R0#06H

       ?。停希郑?@R0A

       ?。停希?R0#01H ;讀STACON狀態(tài)

       ?。停希郑?A@R0

       ?。剩危?ACC.7RD STACON  TAGTYPE沒

        有到FIFO(DV=0)重新讀STACON狀態(tài)

        MOV R7,A  stacon值暫存在R7中

        MOV A, #00H TOC=00H

       ?。停希?R0,#06H

        MOVX @R0,A

       ?。停希?A,R7 ;取暫存在R7中stacon值到A

       ?。剩?ACC.6TE_(tái)ERR ; 溢出錯(cuò)轉(zhuǎn)TE_(tái)ERR

        JB ACC.3,BE_(tái)ERR ; 位計(jì)數(shù)器錯(cuò)轉(zhuǎn)BE_(tái)ERR

       ?。停希?R0,#00H ;讀卡片的卡片類型號TAGTYPE 0存入45H單元

       ?。停希郑?A,@R0

       ?。停希?45HA

        MOV R0,#00H

       ?。停希郑?A,@R0 ;讀卡片上的卡片類型號TAGTYPE1存入46H單元

        MOV 46H,A

       ?。遥牛?; RET

       ?。裕臺(tái)ERR: ;“TE” 錯(cuò)誤處理

       ?。遥牛?/P>

       ?。拢臺(tái)ERR: ; “BE”錯(cuò)誤處理

       ?。遥牛?/P>

       ?。矗?“AntiCollision”防卡片重疊 操作子程序

        如果有多張Mifare 1卡片處在卡片讀寫器的天線工作范圍之內(nèi),AntiCollision指令將啟動(dòng)AntiColli-sion的防,同時(shí)MCM200將有序地讀所有處在其天線有效工作距離內(nèi)的Mifare 1卡片的40bit長的序列號SN。MCU接收到這5個(gè)字節(jié)的SN后,會(huì)進(jìn)行校驗(yàn)。其校驗(yàn)、計(jì)算卡片序列號的方法是:采用相鄰兩個(gè)字節(jié)相互異或得出的結(jié)果與下一個(gè)字節(jié)再異或,前四個(gè)字節(jié)異或的結(jié)果與第5個(gè)字節(jié)應(yīng)該相同,否則認(rèn)為MCU讀到的卡片的序列號有錯(cuò),因此卡片的序列號的前四個(gè)字節(jié)是有意義的,第5個(gè)字節(jié)僅僅用于校驗(yàn)之用。這五個(gè)字節(jié)被存儲(chǔ)在IC卡片的第0扇區(qū)的第0塊中,它由卡片的生產(chǎn)商制定并固化,不得更改,所以在市面上流通的Mifare 1 S50系列的非接觸式IC射頻卡中,每一張卡片的序列號都是唯一的?!埃粒睿簦椋茫铮欤欤椋螅椋铮睢保煼揽ㄆ丿B 操作子程序清單如下:

       ?。幔睿簦棣?NOP

       ?。停希?A #10H BCNTS = 10H,控制

       ?。停茫障颍模粒裕良拇嫫?/P>

        發(fā)送 2個(gè)字節(jié)數(shù)據(jù)

       ?。停希?R0#03H

       ?。停希郑?@R0A

       ?。停希?A #0CH ;設(shè)置MCM中的

       ?。樱裕粒茫希渭拇嫫?/P>

       ?。樱牛裕?ACC.0 AC =“1”,啟動(dòng)防重

        疊狀態(tài)機(jī)

       ?。停希?R0#01H

        MOVX @R0A

       ?。粒茫粒蹋?D1000US DELAY 1000US

       ?。停希?A #93H ;AntiCollision防卡片

        重疊指令碼寫入DATA

       ?。停希?R0#00H

       ?。停希郑?@R0A

       ?。停希?A #20H

        MOV R0#00H

       ?。停希郑?@R0A

        MOV A #28H

       ?。停希?R0#04H

       ?。停希郑?@R0A BCNTR = 28H ,接

        收5個(gè)字節(jié)的數(shù)據(jù)

       ?。停希?A #0AH

        MOV R0#06H

       ?。停希郑?@R0A TOC = 0AH

       ?。停希?R0#01H

        AGAIN: MOVX A@R0  讀STACON狀態(tài)

       ?。剩危?ACC.7 AGAIN 如果 DV=“0”重

        讀STACON

        MOV R7,A

       ?。停希?A #00H

       ?。停希?R0#06H

        MOVX @R0A TOC = 00H

       ?。停希?A,R7

       ?。剩?ACC.6 TE ERR  溢出

        錯(cuò)轉(zhuǎn)TE ERR

       ?。剩?ACC.3 BE ERR 位計(jì)數(shù)器錯(cuò)轉(zhuǎn)

       ?。拢?ERR

       ?。停希?R7#04H 讀4個(gè)字節(jié)的SN值

        存入40H~43H單元,

        前四個(gè)字節(jié)進(jìn)行異或

        MOV B#00H

       ?。停希?R1#40H

       ?。停希?R0#00H

       ?。蹋希希笑?MOVX A@R0

        MOV @R1A 存SN的前四個(gè)字節(jié)在

        單片機(jī)內(nèi)部RAM的

       ?。矗埃娶煟矗保娶煟矗玻娶煟矗常葐卧?/P>

       ?。兀遥?BA 相鄰字節(jié)相互異或

        INC R1

       ?。模剩危?R7 LOOP

       ?。停希郑?A@R0 前四個(gè)字節(jié)異或的結(jié)

        果和接收的第5個(gè)字

        節(jié)進(jìn)行比較,若不等則

       ?。兀遥?AB 轉(zhuǎn)錯(cuò)誤處理

        JNZ ANTIERR

       ?。遥牛?/P>

       ?。裕?ERR

        RET

       ?。拢?ERR

        RET

       ?。粒危裕桑牛遥遥?/P>

        RET

       ?。矗?“Select”選卡片 操作子程序

        該程序用于MCM200與卡片的真正聯(lián)絡(luò)。選擇一張卡片通常由MCU向MCM200發(fā)送“SELECT”命令來完成。MCU發(fā)送“SELECT”命令后,會(huì)同時(shí)在“AntiCollision” 操作中得到Mifare 1卡片的40bit長的序列號的前四個(gè)字節(jié)以及前四個(gè)字節(jié)的異或結(jié)果,同時(shí)再重新發(fā)送給Mifare 1卡,只有本身的序列號和接收的序列號相同的卡片才被真正地選中。Select指令成功執(zhí)行后,MCU將得到MCM DATA寄存器傳來的一個(gè)字節(jié)長的卡片容量信息(SIZE字節(jié))。SIZE字節(jié)被存儲(chǔ)在Mifare 1卡片上的第00H扇區(qū)中的第00h 塊中。

       ?。矗?“Authentication”認(rèn)證操作子程序

       ?。停椋妫幔颍?1卡的每個(gè)扇區(qū)的塊3包含該扇區(qū)的密碼A6個(gè)字節(jié)、存取控制4個(gè)字節(jié)、密碼B6個(gè)字節(jié),它是一個(gè)特殊的塊。在確認(rèn)了上述三個(gè)步驟后,就表示已經(jīng)選擇了一張卡片,在對卡片進(jìn)行讀寫操作之前,還必須對卡片上已經(jīng)設(shè)置的密碼進(jìn)行認(rèn)證,如果匹配,則允許進(jìn)一步的Read/Write操作。也可以通過選擇存儲(chǔ)在MCM的RAM密碼集中的一組密碼來進(jìn)行認(rèn)證操作。MCM能夠存儲(chǔ)3個(gè)密碼集KEYSET0、KEYSET1和KEYSET2。每一個(gè)KEYSET又包含了KEYA及KEYB 等。在"Authentication"指令發(fā)出之前,必須設(shè)置密碼控制寄存器KEYSTACON,使AL=1,然后設(shè)置KS0和KS1以指定一套密碼集。同時(shí),還必須設(shè)置密碼地址寄存器KEYADDR,當(dāng)AB為“1”時(shí),選擇KEYA,AB為“0”時(shí)選擇KEYB,A5~A0用于選擇MCM-RAM中存放密碼的扇區(qū)地址(0~63), KEYADDR寄存器中的“AB”設(shè)置必須匹配"Authentication"命令,因?yàn)樵冢ⅲ粒酰簦瑁澹睿簦椋悖幔簦椋铮睿⒚钪?,60h代碼用于認(rèn)證KEYA;61h代碼用于認(rèn)證KEYB。正確地設(shè)置KEYSTACON 和KEYADDR寄存器之后,通過寫"Authentication" 認(rèn)證命令代碼和寫“地址”(Mifare 1卡要認(rèn)證的扇區(qū)地址是0~15)到DATA寄存器認(rèn)證密碼操作的便開始啟動(dòng)執(zhí)行。



      評論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉
      ×

      “芯”朋友见面大会
      珠海|11.14|泰克“芯”朋友见面大会珠海站|泰克带您从测试角度看半导体的整条产业链,快来报名抢位吧>>