<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

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

Mifare 1非接觸式IC卡讀寫(xiě)核心模塊MCM200

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

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

  寄存器為10H

   R0#04H

  X @R0A

 ?。剩?F0, RSTD ;根據F0標志判斷是執

  行Request std操作還是

 ?。遥澹瘢酰澹螅?all操作

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

 ?。粒剩停?RQTMCM

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

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

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

 ?。螅簦?指令寫(xiě)入DATA

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

 ?。停希?R0#06H

 ?。停希郑?@R0A

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

 ?。停希郑?A@R0

 ?。剩危?ACC.7RD STACON  TAGTYPE沒(méi)

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

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

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

 ?。停希?R0,#06H

 ?。停希郑?@R0,A

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

 ?。剩?ACC.6TE_ERR ; 溢出錯轉TE_ERR

 ?。剩?ACC.3,BE_ERR ; 位計數器錯轉BE_ERR

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

 ?。停希郑?A,@R0

 ?。停希?45HA

 ?。停希?R0,#00H

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

 ?。停希?46H,A

 ?。遥牛?; RET

 ?。裕臺ERR: ;“TE” 錯誤處理

 ?。遥牛?/P>

 ?。拢臺ERR: ; “BE”錯誤處理

 ?。遥牛?/P>

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

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

 ?。幔睿簦棣?NOP

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

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

  發(fā)送 2個(gè)字節數據

 ?。停希?R0#03H

 ?。停希郑?@R0A

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

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

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

  疊狀態(tài)機

 ?。停希?R0#01H

 ?。停希郑?@R0A

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

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

  重疊指令碼寫(xiě)入DATA

 ?。停希?R0#00H

 ?。停希郑?@R0A

 ?。停希?A #20H

 ?。停希?R0#00H

 ?。停希郑?@R0A

 ?。停希?A #28H

 ?。停希?R0#04H

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

  收5個(gè)字節的數據

 ?。停希?A #0AH

 ?。停希?R0#06H

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

 ?。停希?R0#01H

 ?。粒牵粒桑危?MOVX A@R0  讀STACON狀態(tài)

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

  讀STACON

 ?。停希?R7,A

 ?。停希?A #00H

 ?。停希?R0#06H

 ?。停希郑?@R0A TOC = 00H

 ?。停希?A,R7

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

  錯轉TE ERR

 ?。剩?ACC.3 BE ERR 位計數器錯轉

 ?。拢?ERR

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

  存入40H~43H單元,

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

 ?。停希?B#00H

 ?。停希?R1#40H

 ?。停希?R0#00H

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

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

  單片機內部RAM的

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

 ?。兀遥?BA 相鄰字節相互異或

 ?。桑危?R1

 ?。模剩危?R7 LOOP

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

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

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

 ?。兀遥?AB 轉錯誤處理

 ?。剩危?ANTIERR

 ?。遥牛?/P>

 ?。裕?ERR

 ?。遥牛?/P>

 ?。拢?ERR

 ?。遥牛?/P>

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

 ?。遥牛?/P>

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

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

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

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>