中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 關 閉

        新聞中心

        EEPW首頁 > 安全與國防 > 設計應用 > Mifare 1非接觸式IC卡讀寫核心模塊MCM200

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

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

           A#10H ;設置MCM中的BCNTR

          寄存器為10H

           R0#04H

          X @R0A

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

          行Request std操作還是

          Request all操作

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

         ?。粒剩停?RQTMCM

         ?。遥樱裕模?MOV A#26H ;Request std 指令代碼→A

         ?。遥眩裕停茫挺煟停希?R0#00H

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

         ?。螅簦?指令寫入DATA

          MOV A #0AH TOC = 0AH

         ?。停希?R0#06H

         ?。停希郑?@R0A

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

         ?。停希郑?A@R0

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

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

         ?。停希?R7,A  stacon值暫存在R7中

         ?。停希?A, #00H TOC=00H

         ?。停希?R0,#06H

         ?。停希郑?@R0,A

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

          JB ACC.6TE_ERR ; 溢出錯轉(zhuǎn)TE_ERR

         ?。剩?ACC.3,BE_ERR ; 位計數(shù)器錯轉(zhuǎn)BE_ERR

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

         ?。停希郑?A,@R0

         ?。停希?45HA

         ?。停希?R0,#00H

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

          MOV 46H,A

         ?。遥牛?; RET

          TE_ERR: ;“TE” 錯誤處理

         ?。遥牛?/P>

          BE_ERR: ; “BE”錯誤處理

         ?。遥牛?/P>

          4.2 “AntiCollision”防卡片重疊 操作子程序

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

         ?。幔睿簦棣?NOP

          MOV A #10H BCNTS = 10H,控制

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

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

         ?。停希?R0#03H

          MOVX @R0A

         ?。停希?A #0CH ;設置MCM中的

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

         ?。樱牛裕?ACC.0 AC =“1”,啟動防重

          疊狀態(tài)機

         ?。停希?R0#01H

         ?。停希郑?@R0A

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

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

          重疊指令碼寫入DATA

         ?。停希?R0#00H

         ?。停希郑?@R0A

         ?。停希?A #20H

          MOV R0#00H

         ?。停希郑?@R0A

         ?。停希?A #28H

          MOV R0#04H

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

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

         ?。停希?A #0AH

          MOV R0#06H

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

          MOV R0#01H

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

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

          讀STACON

         ?。停希?R7,A

          MOV A #00H

         ?。停希?R0#06H

          MOVX @R0A TOC = 00H

         ?。停希?A,R7

          JB ACC.6 TE ERR  溢出

          錯轉(zhuǎn)TE ERR

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

         ?。拢?ERR

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

          存入40H~43H單元,

          前四個字節(jié)進行異或

         ?。停希?B#00H

         ?。停希?R1#40H

         ?。停希?R0#00H

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

         ?。停希?@R1A 存SN的前四個字節(jié)在

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

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

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

         ?。桑危?R1

          DJNZ R7 LOOP

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

          果和接收的第5個字

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

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

         ?。剩危?ANTIERR

         ?。遥牛?/P>

         ?。裕?ERR

         ?。遥牛?/P>

          BE ERR

         ?。遥牛?/P>

          ANTIERR:

         ?。遥牛?/P>

          4.3 “Select”選卡片 操作子程序

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

         ?。矗?“Authentication”認證操作子程序

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



        評論


        相關推薦

        技術專區(qū)

        關閉