邏輯加密卡4442分析課件_第1頁
邏輯加密卡4442分析課件_第2頁
邏輯加密卡4442分析課件_第3頁
邏輯加密卡4442分析課件_第4頁
邏輯加密卡4442分析課件_第5頁
已閱讀5頁,還剩561頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章接觸式IC卡技術2.1實訓1:接觸式存儲器卡與邏輯加密卡的存儲結構2.2接觸式IC卡的基本物理特性2.3接觸式IC卡的芯片技術2.4典型存儲器卡2.5實訓2:接觸式存儲器卡的操作控制2.6典型邏輯加密卡2.7實訓3:接觸式邏輯加密卡的操作控制2.8接觸式IC卡接口技術思考題第2章接觸式IC卡技術2.1實訓1:接觸式存儲器卡與12.1實訓1:接觸式存儲器卡與邏輯加密卡的存儲結構1.實訓目的(1)建立對接觸式IC卡的感性認識。(2)理解和掌握接觸式存儲器卡的訪問方式和典型存儲結構。(3)理解和掌握接觸式邏輯加密卡的訪問方式和典型存儲結構。2.1實訓1:接觸式存儲器卡與邏輯加密卡的存儲結構1.實2

2.實訓設備與器件(1)實訓設備:通用接觸式IC卡讀寫器,586電腦,通用接觸式IC卡讀寫器DEMO軟件(使用方法參見廠商提供的使用手冊)。(2)實訓器件:AT24C01卡、SLE4442卡、AT88SC1604卡(白卡,實驗室準備),IC卡電話卡(已發行,自備)。2.實訓設備與器件3

3.實訓步驟與要求1)通用接觸式IC卡讀寫器及DEMO軟件的安裝(1)按系統提示安裝通用接觸式IC卡讀寫器DEMO軟件。(2)按標志連接通用接觸式IC卡讀寫器的電源線及串口線,注意電源+5V與地不可接反。2)使用DEMO軟件訪問AT24C01卡(1)按使用手冊的說明操作演示軟件,對通用接觸式IC卡讀寫器進行建立連接操作。(2)將AT24C01卡插入讀寫器卡座,選擇卡型(自動識別卡型或選擇AT24C01卡),進入卡操作界面。(3)對AT24C01卡進行讀/寫/擦除操作,記錄操作結果及操作條件。3.實訓步驟與要求43)使用DEMO軟件訪問自備的IC卡電話卡(1)將IC卡電話卡插入讀寫器卡座,選擇自動識別卡型,記錄卡型。(2)進入卡操作界面對電話卡進行讀/寫/擦除操作,在表2.1中記錄操作結果及操作條件。表2.1電話卡存儲結構記錄表3)使用DEMO軟件訪問自備的IC卡電話卡54)使用DEMO軟件訪問SLE4442卡(1)將SLE4442卡插入讀寫器卡座,選擇卡型,進入卡操作界面。(2)對SLE4442卡進行讀/寫/擦除操作,在表2.2中記錄操作結果及操作條件。表2.2SLE4442卡存儲結構記錄表4)使用DEMO軟件訪問SLE4442卡表65)使用DEMO軟件訪問AT88SC1604卡(1)將AT88SC1604卡插入讀寫器卡座,選擇卡型,進入卡操作界面。(2)對AT88SC1604卡進行讀/寫/擦除操作,在表2.3中記錄操作結果及操作條件。表2.3AT88SC1604卡存儲結構記錄表5)使用DEMO軟件訪問AT88SC1607

4.實訓總結與分析(1)AT24C01卡的操作界面如圖2.1所示。可以看到,AT24C01的存儲容量為1Kb(128B),存儲結構為128×8b。可以按字節操作,所有字節的讀/寫/擦除均可任意進行。這種卡被稱為存儲器卡。存儲器卡的詳細內容參見2.3節。4.實訓總結與分析8(2)IC電話卡的操作界面如圖2.2所示。DEMO軟件自動識別該卡為SLE4406卡。可以看到,這種卡的存儲容量為104b(13B),其中僅后5個字節為用戶區,可按位操作。用戶區可任意讀、任意寫(由1變為0稱為寫),但只能按字節借位擦除(由0變為1稱為擦除)。當用戶區全為0時,卡將作廢。SLE4406卡是一種按位操作的邏輯加密卡,它以一次性的計數方式操作,因此這種卡也稱為計數卡(TokenMemoryCard),其詳細介紹參見2.6.1節。(2)IC電話卡的操作界面如圖2.2所示9圖2.1AT24C01卡的操作界面圖2.1AT24C01卡的操作界面10圖2.2IC電話卡的操作界面圖2.2IC電話卡的操作界面11(3)SLE4442卡的操作界面如圖2.3所示。圖2.3SLE4442卡的操作界面(3)SLE4442卡的操作界面如圖2.3所示。圖2.312通過操作我們發現,SLE4442卡具有2Kb(256B)的存儲容量,它采用多存儲器結構,包括三個存儲器:256×8b的EEPROM型主存儲器,32×1b的PROM型保護存儲器和4×8b的EEPROM型加密存儲器。主存儲器可重復擦除使用,按字節操作,并分為保護數據區和應用數據區,讀出均不受限制,但保護數據區的擦除和寫入受保護存儲器熔絲狀態的保護,而應用數據區的擦除和寫入則受加密存儲器中的密碼及密碼計數器保護。SLE4442卡是一種按字節操作的多存儲器邏輯加密卡。通過操作我們發現,SLE4442卡具有2K13(4)AT88SC1604卡的操作界面如圖2.4所示。通過操作我們發現,AT88SC1604卡的存儲容量為16384b(2048B)。它采用單存儲器多邏輯分區結構,主存儲器除劃分了特定的標志數據區和控制數據區之外,還將應用數據區分成四個完全隔離的子區,并在每個子區中配備了各自的讀、寫控制標志和寫入/擦除密碼以及密碼輸入錯誤計數器等邏輯控制。AT88SC1604卡是一種按字節操作的大容量邏輯加密卡。(4)AT88SC1604卡的操作界面如14

5.思考(1)若要構成一個接觸式IC卡門禁系統,應采用哪一種卡,為什么?與傳統的鎖加鑰匙的方式相比較,由接觸式IC卡及其讀寫器構成的接觸式IC卡門禁系統有何優勝之處?(2)分別說明AT24C01A、SLE4442和AT88SC1604的安全性是由哪些環節保證的?5.思考15圖2.4AT88SC1604卡的操作界面圖2.4AT88SC1604卡的操作界面162.2接觸式IC卡的基本物理特性所謂接觸式IC卡,就是在使用時,通過有形的金屬電極觸點將卡的集成電路與外部接口設備直接接觸連接,提供集成電路工作的電源并進行數據交換的IC卡。其特點是在卡的表面有符合ISO/IEC7816標準的多個金屬觸點。2.2接觸式IC卡的基本物理特性所謂接172.2.1接觸式IC卡的基本構成圖2.5接觸式IC卡外形圖2.2.1接觸式IC卡的基本構成圖2.5接觸式IC卡18圖2.6接觸式IC卡內部結構剖視圖圖2.6接觸式IC卡內部結構剖視圖19在圖2.6中,其各組成部分說明如下:(1)半導體芯片:它是IC卡的核心部分。一般采用0.38~0.8μm的HCMOS或NMOS工藝制造的超大規模集成電路。在半導體芯片中包括存儲器、譯碼電路、接口驅動電路、邏輯加密控制電路,甚至微處理器單元(CPU)等各種功能電路。其外形大小約為2mm×1mm×0.3mm。在圖2.6中,其各組成部分說明如下:20(2)電極膜片:它是作為半導體芯片各輸入/輸出信號引腳與外部設備接觸連接的導電體,它實際是一種精密的印刷電路板(PCB)。其基底為一層絕緣材料,(一般為環氧樹脂玻璃或聚酰亞胺薄膜)。在基底的絕緣材料上沉積一層銅合金,并在其外端表面鍍金,以提高其導電性能和防氧化能力。電極膜片的外形大小約為:長9.62~13.65mm,寬9.32~11.56mm。電極膜片的外形一般為矩形或橢圓形。這種形狀上的差異主要是為了改善卡片的抗扭曲方面的機械特性。電極膜片上共有多個芯片電極,每個電極的中心位置和最小面積是有規定的。但各電極表面分隔形狀沒有規定。(2)電極膜片:它是作為半導體芯片各輸入/輸21圖2.7接觸式IC卡模塊圖2.7接觸式IC卡模塊22(3)塑料基片:它是半導體芯片和電極膜片的載體。根據各生產廠家制卡工藝設備的要求,一般采用PVC(聚氯乙烯)、PET和ABS塑料材料。目前在國內所使用或封裝生產的IC卡,基片材料大都使用PVC材料。但隨著制卡技術不斷發展和對工業環保的要求,PVC材料的使用將會逐漸受到一定的限制。因而目前國外的一些制卡廠商已逐漸將IC卡的基片材料轉向改用PET或ABS材料。塑料基片的大小,對于滿足國際標準——識別卡的ID-1型的尺寸是85.6mm(長)×53.98mm(寬)×0.75mm(厚)。應該說明,由半導體芯片和電極膜片封裝而成的IC卡模塊(WireBodedModule,如圖2.7所示)就可以實現IC卡的基本功能。(3)塑料基片:它是半導體芯片和電極膜片的載232.2.2接觸式IC卡的觸點尺寸和位置符合國際標準的IC卡的物理特性主要由國際標準ISO7810、ISO7811-1/2/3/4、ISO7812、ISO7813和ISO/IEC7816-1等定義。其主要特性指標包括幾何尺寸、抗X射線能力、觸點與卡基表面的誤差、電阻(觸點)、抗電磁干擾、抗磁場干擾、抗靜電能力、熱耗、抗彎曲特性以及抗扭曲特性等。上述物理特性及其檢測方法參見相關國際標準。接觸式IC卡有8個觸點,即集成電路引腳,從C1到C8,如圖2.8所示。國際標準ISO/IEC7816-2對接觸式集成電路卡的觸點尺寸和芯片位置以及功能作了具體的規定。2.2.2接觸式IC卡的觸點尺寸和位置24圖2.8接觸式IC卡的觸點位置圖2.8接觸式IC卡的觸點位置25IC卡的電極膜片(即8個觸點)既可安排在塑料基片的正面,也可安排在反面。觸點之間的排列順序必須按圖2.8所示排列。各觸點在卡基平面的幾何尺寸、位置均以卡觸點的接觸面的左邊沿和上邊沿為基準邊。其觸點的尺寸及位置如圖2.8所示。在ISO/IEC7816-2中對每個觸點的幾何形狀和最大面積雖然沒有規定,但卻規定了每個觸點表面積的內切矩形面積不得小于2mm×1.7mm。各觸點之間應相互隔離。而相鄰兩個觸點之間的最大距離為0.84mm。8個觸點所占最大面積沒有規定,但規定最小面積不小于9.62mm(長)×9.32mm(寬)的矩形平面。IC卡的電極膜片(即8個觸點)既可安排在塑26表2.4接觸式IC卡的觸點功能表2.4接觸式IC卡的觸點功能272.3接觸式IC卡的芯片技術2.3.1存儲器卡1.存儲器卡的邏輯結構圖2.9存儲器卡的邏輯結構圖2.3接觸式IC卡的芯片技術2.3.1存儲器卡圖2.28

2.存儲器卡的特點(1)卡內嵌入的芯片多為通用EEPROM(或FlashMemory)。(2)無安全控制邏輯,可對片內信息不受限制地任意存取。(3)卡片制造中也很少采取安全保護措施。(4)不完全符合或支持ISO/IEC7816國際協議,而多采用2線串行通信協議(I2C總線協議)或3線串行通信協議(SPI協議)。2.存儲器卡的特點29

3.存儲器卡的主要應用場合存儲器卡功能簡單,沒有(或很少有)安全保護邏輯,但價格低廉、開發使用簡便、存儲容量增長迅猛,因此多用于某些簡單的、內部信息無需保密或不允許加密(如急救卡)的場合。

4.存儲器卡的代表產品存儲器卡的代表產品為美國Atmel公司的EEPROM卡AT24系列2線串行芯片和AT93系列3線串行系列,FlashMemory卡AT45D系列(2~8Mb,SPI協議)。3.存儲器卡的主要應用場合30表2.5EEPROM存儲器卡芯片表2.5EEPROM存儲器卡芯片312.3.2邏輯加密卡1.邏輯加密卡的邏輯結構圖2.10邏輯加密卡的邏輯結構圖2.3.2邏輯加密卡圖2.10邏輯加密卡的邏輯結構圖32

2.邏輯加密卡的特點(1)具有安全控制邏輯,安全性能較好。(2)同時采用ROM、PROM、EEPROM等存儲技術。(3)從芯片制造到交貨,均采取較好的安全保護措施,如運輸密碼TC(TransportCode)的取用。(4)支持ISO/IEC7816國際標準。(5)一般均為專門為IC卡設計的芯片。(6)為提高安全性,邏輯加密卡的存儲空間被分為多個不同的功能區,典型的存儲結構如表2.6所示。2.邏輯加密卡的特點33表2.6邏輯加密卡的存儲結構表2.6邏輯加密卡的存儲結構34

3.邏輯加密卡的應用場合與代表產品由于具有一定的保密功能,且價格較CPU卡低,因此在需要保密但對安全性要求不是太高的場合,邏輯加密卡得以大量應用,如電話卡、網吧上網卡、停車卡等小額消費場合,已成為目前IC卡在非金融領域的最主要的應用形式。(1)安全數據存儲、傳輸和處理:面向字節操作的邏輯加密卡,如Atmel的AT88SC200、Philips的PC2032/2042、Siemens的SLE4418/4428/4432/4442等,應用于保險卡、加油卡、駕駛卡、借書卡等。3.邏輯加密卡的應用場合與代表產品35(2)相關數據記錄、存儲、處理,包括:①一次性使用的不可重置式,如Siemens的SLE4406/4436、Atmel的AT88SC06、Gemplus的GPM276/103。②可重置式,如Siemens的SLE4404(64次)、Atmel的AT88SC101/102(128次),應用于IC卡電話、小額電子錢包。(2)相關數據記錄、存儲、處理,包括:36表2.7Siemens系列邏輯加密卡芯片的特性參數表2.7Siemens系列邏輯加密卡芯片的特性參數372.3.3CPU卡1.CPU卡的邏輯結構CPU卡的硬件構成包括CPU、存儲器(含RAM、ROM、EEPROM等)、卡與讀寫終端通信的I/O接口及加密運算協處理器CAU,其中:(1)CPU一般均為兼容于8位字長單片機(如MC68HC05、Intel8051等)的微處理器。它將在COS(ChipOperationSystem,片內操作系統)控制下,實現卡與外界的信息傳輸、加密、解密和判別處理等。(2)ROM用于存放COS,3~16KB。(3)RAM用于存放中間處理結果及作為卡與讀寫器間信息交換的中間緩存器,128B~1KB。2.3.3CPU卡38(4)EEPROM則是真正可供用戶訪問的存儲區,用于保存卡的各種信息、密碼、密鑰、應用文件等,1~16KB。(5)CPU卡通常采用DES、RSA等加密、解密算法提高系統的安全度,采用RSA等算法時要進行對運算速度要求較高的大指數模運算,8位的CPU將難以勝任,因此多設有專用加密、解密運算協處理器CAU。例如Siemens的SLE44C20,內含8位字長的CPU、15KB的ROM、32B的PROM、2KB的EEPROM和256B的RAM。(4)EEPROM則是真正可供用戶訪問的存39

2.CPU卡的特點(1)片內帶有CPU、各種存儲器ROM、RAM以及專用加密、解密運算協處理器CAU,具有很高的數據處理和計算能力以及較大存儲容量,因此應用的靈活性、適應性較強。(2)在硬件結構、操作系統、制作工藝上采取多層次安全措施,保證了其極強的安全防偽能力。它不僅可驗證卡和持卡人的合性法,而且可鑒別讀寫終端,即進行雙向認證。2.CPU卡的特點40

3.CPU卡的主要應用場合與典型產品目前CPU卡多用于一卡多用(一卡通)及對數據安全保密性特別敏感的場合,如金融信用卡、手機SIM卡等。CPU卡的詳細內容參見第4章。本章將以存儲器卡和邏輯加密卡為基礎介紹接觸式IC卡的芯片及接口技術。3.CPU卡的主要應用場合與典型產品412.4典型存儲器卡2.4.1AT24Cxx系列存儲器卡芯片總體描述1.芯片特點(1)低電壓/標準電壓操作:1.8~5V。(2)內部組成:128×8(AT24C01),256×8(AT24C02),512×8(AT24C04),1024×8(AT24C08),2048×8(AT24C16)的串行EEPROM。(3)2線串行接口。(4)雙向數據傳輸協議。2.4典型存儲器卡2.4.1AT24Cxx系列存儲器42(5)支持ISO/IEC7816-10同步協議。(6)8B頁面(AT24C01/02),16B頁面(AT24C04/08/16)寫入方式。(7)自定時寫入周期(最大10ms)。(8)高可靠性:使用壽命為100000次寫/擦除,數據保留期為100年。(9)多種封裝形式:提供芯片、模塊及標準封裝形式。(5)支持ISO/IEC7816-10同步432.芯片封裝及引腳功能1)封裝圖2.11AT24Cxx觸點分配圖2.芯片封裝及引腳功能圖2.11AT24Cxx觸點分配圖44表2.9IC卡觸點功能表表2.9IC卡觸點功能表452)引腳功能說明SCL:串行時鐘輸入(SerialClockInput)。串行時鐘上升沿時,數據輸入芯片(寫入);串行時鐘下降沿時,數據從芯片輸出(讀出)。SDA:串行數據(SerialDAta),雙向串行傳送數據。該端為漏極開路驅動,可與任意數量的其他漏極開路或集電極開路器件“線或”。A2、A1、A0:器件/頁面地址(DevicPageAddresses)。器件地址輸入端,應用于標準封裝中,在IC卡模塊封裝中不將A2、A1、A0引出到觸點上,詳細使用見“器件尋址”。2)引腳功能說明463.邏輯結構與存儲器組織圖2.12AT24Cxx的邏輯結構3.邏輯結構與存儲器組織圖2.12AT24Cxx的邏輯結472.4.2器件操作1.時鐘和數據轉換圖2.13AT24Cxx數據的有效性時序圖2.4.2器件操作圖2.13AT24Cxx數據的有效481)輸出數據當數據(包括地址、數據)由接口設備送往AT24Cxx時,稱為輸出數據(寫數據)。數據總是按字節(8位)逐位串行輸出,每個時鐘脈沖輸出一位。SDA總線上的數據應在SCL低電平期間改變(輸出),在SCL高電平期間穩定。基于MCS-51單片機的接口設備可利用如下串行輸出字節子程序SHOUT來實現輸出(寫)一個字節數據的操作。1)輸出數據49SHOUT:;串行輸出一個字節到AT24Cxx,高位在前。調用前,SCL、SDA為低。返回時,SCL為低。調用時數據置入A中。返回CY為1表明應答失敗。占用A累加器 PUSH B MOV B,#8 ;設置位計數器L1: RLC A ;移一位到CY中 MOV SDA,C ;輸出位 NOP ;保持SCL為低且使數據穩定 SETB SCL ;升高時鐘 ACALL DELAY_4μs;保持SCL為高SHOUT:50 CLR SCL ;降低時鐘 DJNZ B,L1 ;傳送下一位 SETB SDA ;釋放SDA等待應答 NOP ;保持SCL為低,保持時間tAA NOP SETB SCL ;升高ACK時鐘脈沖 ACALL DELAY_4μs;保持SCL為高 MOV C,SDA ;讀入ACK位 CLR SCL ;降低ACK時鐘脈沖 POP B RET CLR SCL ;降低時鐘512)輸入數據當接口設備從AT24Cxx的數據線上讀取數據時,稱為輸入數據(讀數據)。數據總是按字節(8位)逐位串行輸入,每個時鐘脈沖輸入一位。AT24Cxx的EEPROM在SCL低電平期間將數據送往SDA總線,在SCL高電平期間,SDA總線上的數據穩定,可供接口設備讀取。基于MCS-51單片機的接口設備可利用如下串行輸入字節子程序SHIN來實現輸入(讀)一個字節數據的操作。2)輸入數據52SHIN:;從AT24Cxx串行輸入一個字節,高位在前。調用前,SCL為低。返回時,SCL為低。返回時接收到的數據置于A中 SETB SDA ;使SDA為高,準備讀 PUSH B MOV B,#8 ;設置位計數器L2: NOP ;保持SCL為低且使數據穩定 NOP SETB SCL ;升高時鐘SHIN:53 NOP ;保持SCL為高 NOP MOV C, SDA ;輸入位 RLC A ;將位移入A CLR SCL ;降低時鐘 DJNZ B,L2 ;傳送下一位 POP B RET NOP ;保持SCL為高54

2.開始狀態(START)SCL處于高電平時,SDA從高電平轉向低電平表示一個“開始”狀態,該狀態表示一種操作的開始,因此必須在任何其他命令之前執行。AT24Cxx開始/停止定義時序圖見圖2.14。圖2.14AT24Cxx開始/停止定義時序圖2.開始狀態(START)圖2.14AT255基于MCS-51單片機的接口設備可利用如下開始子程序START來實現一個開始操作。START:;發送START狀態,定義當SCL為高時,SDA從高到低。返回時,SCL、SDA為低。當總線無效時,返回CY位為高 SETB SDA ;升高SDA SETB SCL ;校驗總線有效 JNB SDA,ERROR1;若SDA不為高則跳轉到ERROR1 JNB SCL,BACK1 ;若SDA不為高則跳轉到BACK1 NOP ;保持數據建立延遲及周期延遲基于MCS-51單片機的接口設備可利用如下開56 CLR SDA ;降低SDA ACALL DELAY_4μs;保持SDA為低,保持時間holddelay CLR SCL ;降低SDL CLR C ;清零錯誤標志 AJMP BACK1ERROR1:SETB C ;置位錯誤標志BACK1: RET CLR SDA ;降低SDA57

3.停止狀態(STOP)SCL處于高電平時,SDA由低電平轉向高電平表示一個“停止”狀態。該狀態表示一種操作的結束并將終止所有通信。在一個讀序列之后,停止命令置EEPROM于待機模式。其停止定義時序圖見圖2.14。基于MCS-51單片機的接口設備可利用如下停止子程序STOP來實現一個停止操作。3.停止狀態(STOP)58STOP:;發送STOP狀態,定義當SCL為高時,SDA從低變高。調用前,SCL為低。返回時,SCL、SDA為高 CLR SDA NOP ;保持SCL為低及數據穩定 NOP SETB SCL ACALL DELAY_4μs;保持建立延遲 SETB SDA RETSTOP:59

4.確認應答(ACK)所有地址和數據字以8位碼串行輸入/輸出EEPROM,EEPROM在收到每個地址或數據碼之后,置SDA于低電平作為確認應答,該確認應答發生于第9個時鐘周期,見圖2.15。圖2.15AT24Cxx確認應答時序圖4.確認應答(ACK)圖2.15AT24C60在串行輸出字節子程序SHOUT中我們可以清楚地看到,當接口設備向卡發送完8位數據后,程序將產生第9個時鐘脈沖并將SDA線讀入CY位,此時CY位的狀態即為卡響應狀態。當CY=1時表示卡尚未接收到數據,不能進行下一步的操作;當CY=0時表示卡已接收到數據,可以進行下一步的操作。在串行輸出字節子程序SHOUT中我們可以清楚61

5.待機模式AT24Cxx的特性之一是具備待機模式,這一模式當①電源掉電;②接收到STOP位或完成任何一個內部處理之后有效。

6.存儲器復位當電源掉電、系統復位或協議中斷時,任何一個2線的部分都可通過以下步驟復位:(1)9個時鐘周期之后;(2)在每個時鐘周期當SCL為高時等待SDA為高;(3)產生一個START狀態。5.待機模式622.4.3器件尋址以上AT24系列EEPROM在緊接著開始狀態后均需一個8位器件地址(DeviceAddress),如圖2.16所示,以使器件能夠進行讀/寫操作。器件地址高4位為1010,這對所有器件都是相同的。在標準封裝中,接下來的3位器件尋址碼將因芯片容量的不同而有不同的定義:對于AT24C01/02來說,下面3位器件尋址碼是A2、A1、A0,這3位必須與它們相應的硬件連線輸入引腳相對應。2.4.3器件尋址63圖2.16AT24Cxx器件地址圖2.16AT24Cxx器件地址64對于AT24C04來說,僅用A2和A1器件尋址位,第3位是存儲器頁面尋址位。2個器件尋址位必須與硬件連線輸入引腳相對應,A0引腳不連接。對于AT24C08來說,僅用A2器件尋址位,下面2位是存儲器頁面尋址。A2必須與硬件連線輸入引腳相對應,A1和A0引腳不連接。對于AT24C16來說,無器件尋址位。這3位均用于存儲器頁面尋址,A0、A1、A2不連接。對于AT24C04來說,僅用A2和A1器件尋65AT24C04/08/16的頁面尋址位應被視為隨后數據碼尋址的最高位。IC卡上使用的EEPROM芯片,因受尺寸限制,一般只能使用一個芯片,同時應符合國際標準,因此A2、A1、A0未引出到觸點上,A2A1A0=000。器件尋址的第8位是讀/寫操作選擇位,該位為高電平時啟動讀操作,處于低電平時啟動寫操作。設備尋址一經成功,EEPROM將在SDA總線上輸出一個確認應答ACK;相反,則芯片回到待機狀態。AT24C04/08/16的頁面尋址位應被視662.4.4寫操作1.寫字節(BYTEWRITE)寫字節時序見圖2.17。寫字節時序要求在給出“開始”狀態、器件地址碼和收到卡的確認應答ACK后,緊跟著給出一個8位地址碼(32KB芯片是2個8位地址碼)。卡收到地址碼后發出確認應答ACK。然后送要寫的8位數據到SDA線上,并進入EEPROM單元,每個時鐘節拍送入1位。EEPROM單元收到數據后,通過SDA線發出確認應答ACK。數據傳送設備必須用“停止”狀態來結束寫操作。這時EEPROM進入內部定時的寫周期,如圖2.18中的tWR,在寫周期期間,將數據寫入非易失性存儲器,并禁止所有其他操作直到寫完成。2.4.4寫操作67圖2.17AT24Cxx寫字節時序圖圖2.17AT24Cxx寫字節時序圖68圖2.18AT24Cxx寫周期時序圖圖2.18AT24Cxx寫周期時序圖69基于MCS-51單片機的接口設備可利用如下寫字節子程序WRITE_BYTE來實現寫字節操作。WRITE_BYTE:;AT24Cxx寫字節功能。調用前可編程的器件地址programmableaddress置于A中,字節地址置于寄存器ADDR_HI和ADDR_LO中,數據置于寄存器XDATA中。未等待寫周期完成。返回CY為1表明總線無效或該器件無應答。占用A累加器 ACALL START JC BACK2 ;若總線無效則中斷 RL A ;可編程地址左移一位 ORL A,#FADDR ;加入固定器件地址 CLR ACC.0 ;設置寫,建立器件地址基于MCS-51單片機的接口設備可利用如下寫70ACALL SHOUT ;發送器件地址JC ERROR2 ;若無應答則中斷MOV A,ADDR_HI ;發送字節地址的高8位ACALL SHOUT JC ERROR2 ;若無應答則中斷MOV A,ADDR_LO ;發送字節地址的低8位ACALL SHOUT JC ERROR2 ;若無應答則中斷MOV A,ADATA ;取數據ACALL SHOUT ;發送數據JC ERROR2 ;若無應答則中斷CLR C ;清零錯誤標志ERROR2:ACALL STOPBACK2:RETACALL SHOUT ;發送器件地址ERROR2:ACA71

2.寫頁面(PAGEWRITE)AT24C01/02可以進行8B頁面寫入,AT24C04/08/16可以進行16B頁面寫入。啟動寫頁面與啟動寫字節操作一樣,但數據傳送設備無需在第一個字節隨時鐘輸入后發出一個停止狀態;在EEPROM確認收到第一個數據碼之后,數據傳送設備再傳送7個(對于AT24C01/02)或15個(對于AT24C04/08/16)數據碼;每收到一個數據,EEPROM都將通過SDA回送一個確認應答信號,最后數據傳送設備通過“停止”狀態終止寫頁面操作,其過程見圖2.19。2.寫頁面(PAGEWRITE)72圖2.19寫頁面時序圖圖2.19寫頁面時序圖73數據地址的低3位(對于AT24C01/02)或4位(對于AT24C04/08/16)在收到每個數據字后,在芯片內部自動加1。數據字地址的高位字節保持不變,以保持存儲器頁地址不變。如果傳送到EEPROM中的數據字超過8(對于AT24C01/02)或16(對于AT24C04/08/16),數據字地址將“滾動覆蓋”,以前寫入的數據將被覆蓋。基于MCS-51單片機的接口設備可利用如下寫塊子程序WRITE_BLOCK來實現寫頁面操作。數據地址的低3位(對于AT24C01/02)74WRITE_BLOCK:;向AT24Cxx寫入一頁數據。調用時器件地址的可編程地址置于A中,第一個字節地址置于寄存器ADDR_HI和ADDR_LO中,數據置于BUFFER中,字節計數器置于寄存器COUNT中。未等待寫周期完成。返回時CY位為1表明總線無效或器件無應答。占用A,COUNT,INDEX(注:INDEX為數據緩沖區指針,可使用工作寄存器R0)ACALL STARTJC BACK3 ;總線無效則中斷RL A ORL A,#FADDR ;生成器件地址WRITE_BLOCK:75CLR ACC.0 ;定義寫操作ACALL SHOUT ;發送器件地址JC ERROR3 ;無應答則中斷MOV A,ADDR_HI ;發送字節地址高8位ACALL SHOUT JC ERROR3 ;無應答則中斷MOV A,ADDR_LO ;發送字節地址低8位ACALL SHOUT JC ERROR3 ;無應答則中斷MOV INDEX,#BUFFER ;指向數據緩沖區首地址CLR ACC.0 ;定義寫操作76L3: MOV A,@INDEX ;取數據 ACALL SHOUT ;發送數據 JC ERROR3 ;無應答則中斷 INC INDEX ;地址指針加1 DJNZ COUNT,L3 ;下一個字節 CLR C ;清零錯誤標志ERROR3:ACALL STOPBZCK3:RETL3: MOV A,@INDEX ;取數據77

3.確認查詢(ACKNOWLEDGEPOLLING)一旦內定時寫循環開始且禁止EEPROM輸入,確認查詢將被啟動。當數據傳送設備在送出一個“開始”狀態以及緊隨其后的器件地址碼(讀/寫位代表所要進行的操作)時,只有在內定時寫循環完成時,EEPROM才通過拉低SDA總線發出“確認”應答,允許讀或寫過程繼續進行。AT24Cxx系列存儲器芯片的內定時寫周期(tWR)最大為10ms,因此,每完成一個寫操作,應延時約10ms或查詢SDA總線重新為低時才能發出下一個操作的開始命令,否則下一次操作命令將不被器件接收、執行。3.確認查詢(ACKNOWLEDGEPOL782.4.5讀操作1.現行地址讀(CURRENTADDRESSREAD)內部數據字地址指針總是保持最后一次讀/寫操作中最后訪問的地址,并按“1”遞增。只要芯片保持上電,該地址在兩次操作之間一直保持有效。如果最后一個操作是在地址n處讀取,則現行地址是n+1;如果最后一個操作是在地址n處寫入,則當前地址也是n+1。在出現“滾動覆蓋”的情況時,讀操作的地址是從最后一頁的最后一個字節滾動覆蓋到第一頁的第一個字節,而寫操作的地址是從當前頁的最后一個字節滾動覆蓋到同一頁的第一個字節。2.4.5讀操作79圖2.20現行地址讀時序圖圖2.20現行地址讀時序圖80一旦讀/寫選擇位置于1,器件地址隨時鐘輸入,并收到EEPROM的確認應答,現行地址的數據碼隨時鐘被EEPROM串行輸出。此時數據傳送設備(微控制器)可在SDA線上隨時鐘串行讀入數據。讀取數據結束后,微控制器不是通過確認(低電平ACK)來應答,而是使總線處于高電平(NOACK),隨后產生一個停止狀態,見圖2.20。基于MCS-51單片機的接口設備可利用如下現行地址讀子程序READ_CURRENT來實現現行地址讀操作。一旦讀/寫選擇位置于1,器件地址隨時鐘輸入,81READ_CURRENT:;AT24Cxx現行地址讀功能。調用時,器件地址的可編程地址置于A中,返回數據置于A中。返回時,CY位為1表明總線無效或器件無應答ACALL STARTJC BACK4 ;若總線無效則中斷RL A ORL A,#FADDR ;生成器件地址SETB ACC.0 ;設置讀操作ACALL SHOUT ;發送器件地址JC ERROR4 ;若無應答則中斷ACALL SHIN ;接收數據字節READ_CURRENT:82 ACALL NAK ;發送高電平NAK應答 CLR C ;清零錯誤標志ERROR4:ACALL STOPBACK4:RET注意:寫操作中卡接收到數據(地址、數據)后向接口設備發送低電平應答ACK,程序通過將第9個時鐘周期的SDA線讀入CY位來接收應答,查詢CY位是否為低來判斷是否收到卡確認應答。而讀操作中是接口設備接到數據后向卡發送高電平應答(NOACK),該高電平應答由NAK子程序來產生。 ACALL NAK ;發送高電平NAK應答83NAK子程序:NAK:;隨時鐘輸出一個高電平的負應答位。調用前SCL為低,返回時SCL為低,SDA為高 SETBSDA ;NAK位 NOP ;保持SCL為低及數據穩定 NOP SETBSCL ;升高時鐘 ACALLDELAY_4μs ;保持SCL為高 CLR SCL ;降低時鐘 RETNAK子程序:84

2.隨機地址讀(RANDOMADDRESSREAD)隨機讀取需要一個“空”字節寫序列來載入數據地址,一旦器件地址(讀/寫選擇位置低)和數據地址隨時鐘輸入,并被EEPROM確認,傳送設備必須產生另一個開始狀態。此時送出的器件地址中讀/寫選擇位處于高電平,將啟動一個現行地址讀,EEPROM收到器件地址后回送確認應答,并隨時鐘串行輸出數據碼,微控制器讀取數據后不通過確認應答,而是使SDA總線處于高電平,隨后產生一個停止狀態,見圖2.21。基于MCS-51單片機的接口設備可利用如下隨機地址讀子程序READ_RANDOM來實現隨機地址讀操作。從程序中可以看到,在完成了一個“空”寫之后,直接調用上面給出的現行地址讀子程序就可以實現隨機地址讀操作了。2.隨機地址讀(RANDOMADDRESS85圖2.21隨機地址讀時序圖圖2.21隨機地址讀時序圖86 READ_RANDOM: ;AT24Cxx隨機地址讀功能。調用時器件地址的可編程地址置于A中,字節地址置于寄存器ADDR_HI和ADDR_LO中,返回數據置于A中。返回時CY位為1表明總線無效或器件無應答 PUSH B MOV B,A ;可編程器件地址暫存B中;******發送空寫命令來設置內部地址****** ACALL START JC BACK5 ;總線無效則中斷 RL A ORL A,#FADDR ;生成器件地址 READ_RANDOM:87 CLR ACC.0 ;設置寫操作 ACALL SHOUT ;發送器件地址 JC ERROR5 ;無應答則中斷 MOV A,ADDR_HI ;發送字節地址高8位 ACALL SHOUT JC ERROR5 ;無應答則中斷 MOV A,ADDR_LO ;發送字節地址低8位 ACALL SHOUT JC ERROR5 ;無應答則中斷;*************調用現行地址讀功能*********** CLR ACC.0 ;設置寫操作88 MOV A,B ;取可編程器件地址 ACALL READ_CURRENT AJMP BACK4;退出ERROR5: ACALL STOPBACK5: POP B RET MOV A,B ;取可編程器件地址89

3.順序讀(SEQUENTIALREAD)順序讀取由現行讀或隨機地址讀啟動。微控制器收到一個數據碼之后回送“確認”應答,只要EEPROM收到“確認”之后,便會繼續增加數據地址并隨時鐘串行輸出后面的數據。當達到存儲地址極限時,數據地址將重復滾動,順序讀取將繼續;當終止順序讀操作時,微控制器不產生低電平確認信號,而是使SDA總線處于高電平應答,隨后產生一個停止狀態。順序讀時序圖見圖2.22。3.順序讀(SEQUENTIALREAD)90圖2.22順序讀時序圖圖2.22順序讀時序圖91基于MCS-51單片機的接口設備可利用如下讀塊子程序READ_BLOCK來實現順序讀操作。READ_BLOCK:;從AT24Cxx讀一頁數據。當讀出超過一個字節時執行由隨機地址讀擴展而來的順序讀。調用時器件地址的可編程地址置于A中,第一個字節地址置于寄存器ADDR_HI和ADDR_LO中,字節計數器置于寄存器COUNT中。返回時數據置于BUFFER中。返回時CY為1表明總線無效或器件無應答。占用A,COUNT,INDEX(注:COUNT為字節計數器,可使用工作寄存器R1)基于MCS-51單片機的接口設備可利用如下92;******發送空寫命令來設定第一個字節的地址****** ACALL START JC BACK6 ;若總線無效則中斷 RL A ORL A,#FADDR ;生成器件地址 MOV INDEX,A ;暫存器件地址于INDEX CLR ACC.0 ;設置寫操作 ACALL SHOUT ;發送器件地址 JC ERROR6 ;若無應答則中斷 MOV A,ADDR_HI ;發送字節地址高8位 ACALL SHOUT JC ERROR6 ;若無應答則中斷 MOV A,ADDR_LO ;發送字節地址低8位 ACALL SHOUT JC ERROR6 ;若無應答則中斷;******發送空寫命令來設定第一個字節的地址******93;******發送讀命令及接收數據******

ACALL START ;第二次開始啟動讀操作 JC ERROR6 ;若總線無效則中斷 MOV A,INDEX ;從INDEX中取器件地址 SETB ACC.0 ;設置讀操作 ACALL SHOUT ;發送器件地址 JC ERROR6 ;若無應答則中斷 MOV INDEX,#BUFFER;指向數據緩沖區首地址L6: ACALL SHIN ;接收數據字節 MOV @INDEX,A ;保存數據 CJNE COUNT,#1,NEXT;不是最后一個字節則繼續 ACALL NAK ;讀完發送NAK應答 AJMP DONE ;完成;******發送讀命令及接收數據******94NEXT: ACALL ACK ;發送ACK應答字節 INC INDEX ;數據緩沖區地址加1 DJNZ COUNT,L6 ;讀下一個字節DONE:CLR C ;清零錯誤標志ERROR6:ACALL STOPBACK6: RETNEXT: ACALL ACK ;發送ACK應95注意:寫操作中卡接收到數據后向接口設備發送低電平應答ACK,程序通過將第9個時鐘周期的SDA線讀入CY位來接收應答,查詢CY位是否為低來判斷是否收到卡確認應答。而順序讀操作中接口設備每接到一個字節的數據后向卡發送低電平應答ACK,該低電平應答由ACK子程序來產生。注意:96ACK子程序:ACK:;隨時鐘輸出一個低電平應答位。調用前SCL為低。返回時,SCL、SDA為低 CLR SDA ;應答位 NOP ;保持SCL為低及數據穩定 NOP SETB SCL ;升高時鐘脈沖 ACALL DELAY_4μs ;保持SCL為高 CLR SCL ;降低時鐘脈沖 RETACK子程序:972.5實訓2:接觸式存儲器卡的操作控制1.實訓目的(1)進一步理解和掌握AT24Cxx系列存儲器卡的操作時序。(2)掌握接觸式IC卡接口電路的原理與設計、制作方法。(3)掌握按操作時序編寫和調試卡操作(讀/寫)控制程序的方法。2.5實訓2:接觸式存儲器卡的操作控制1.實訓目的98

2.實訓設備與器件(1)實訓設備:通用接觸式IC卡讀寫器及其DEMO軟件,586電腦,5V穩壓電源,MCS-51系列單片機仿真系統。(2)實訓器件:AT24C01卡,接觸式IC卡卡座,PNP三極管9012,10kΩ電阻3個,1.2kΩ電阻1個,40腳IC座。(3)實訓電路:接觸式存儲器卡接口電路如圖2.23所示。其中接口設備MCU選用AT89C51單片機,SMARTADP為接觸式IC卡卡座,AT89C51的P1.0、P1.1分別通過卡座接AT24C01卡的串行數據端SDA和串行時鐘端SCL,P1.6接卡插入測試端SW2,P1.7接PNP三極管9012的基極,為上電控制端。SCL、SDA及SW2均通過10kΩ的上拉電阻,接+5V。該接口電路的功能、工作原理參見2.8節。2.實訓設備與器件99圖2.23接觸式存儲器卡接口電路圖2.23接觸式存儲器卡接口電路100

3.實訓步驟與要求1)實訓準備(1)按電路原理圖焊接好接觸式IC卡接口電路,注意卡座各觸點引腳與卡觸點應一一對應;9012的集電極接卡座的VCC端,發射極接+5V電源,切勿接反。(2)用萬用表測試卡座的SW1、SW2引腳,識別是常開還是常閉卡座。根據卡座的類型編寫插卡識別程序。卡座類型的識別方法及插卡識別程序參見2.8節。(3)認真閱讀下述上/下電控制程序PWRON/PWROFF。上電控制程序:判斷是否有卡插入,無卡插入則等待,卡座(卡)VCC端保持為低電平,避免帶電插卡導致接口電路或卡的損壞;插卡后加電,卡座(卡)VCC端為+5V。3.實訓步驟與要求101上電控制程序如下:PWRON: LCALLRECOG ;調用插卡識別程序 CLRSCL ;SCL=L,準備加載時鐘 LCALLDELAY_0.5ms;使端口邏輯信號穩定 CLRPWR ;加電 CLR SDA ;SDA=L,準備傳送數據 RET上電控制程序如下:102下電控制程序:通過置位PWR端使卡座(卡)VCC端恢復為低電平,需要特別注意的是,必須執行完該子程序后方能拔卡。下電控制程序如下: PWROFF: CLR SCL ;SCL=L,釋放SCL CLR SDA ;SDA=L,釋放SDA LCALLDELAY_0.5ms ;延時穩定 SETB PWR ;下電 RET下電控制程序:通過置位PWR端使卡座(卡)V103常開型卡座插卡識別程序RECOG如下:RECOG: JB SW,RECOG ;無卡插入則等待 LCALL DELAY_5ms ;延時去抖 JB SW,RECOG ;再次判斷,無卡插入則等待 RET ;確實有卡插入,返回(4)認真閱讀所附的實訓程序,并將程序調用的各功能子程序START、STOP、SHIN、SHOUT、ACK、NAK(見2.4.2節)補充完整。常開型卡座插卡識別程序RECOG如下:(4)1042)程序調試(1)利用接觸式IC卡讀寫器查看并記錄AT24C01卡的存儲記錄。(2)用萬用表檢查電路,確認連接正確。將MCS-51系列單片機仿真器的仿真頭插入實驗電路板上的40腳IC座。在MCS-51系列單片機仿真開發系統中打開并編譯實訓范例程序1。在卡地址緩沖區(首地址為20H的片內RAM)中設置將被更新的16個卡存儲單元地址(例如00H~0FH),在寫數據緩沖區(首地址為30H的片內RAM)中設置要寫入的16個數據(如00H、11H、...、FFH),注意不要與卡中的原始數據相同,清零讀數據緩沖區(首地址為40H的片內RAM)。2)程序調試105(3)調試上電控制程序。在程序標志的斷點①處設置斷點。運行程序1。未插卡時,程序是否能在斷點①處暫停?此時測試并記錄卡座VCC端電壓。插入IC卡,程序是否能在斷點①處暫停?再次測試并記錄卡座VCC端電壓。比較插卡前后的實驗現象與實驗數據,說明原因。(4)取消斷點①,屏蔽讀字節程序,單獨調試寫字節程序:在程序標志的斷點②處設置斷點。運行程序1并插卡,程序在斷點②處暫停時,記錄CY位狀態;取出AT24C01卡,用讀寫器讀出被更新單元的內容,驗證是否正確寫入。當寫入不正確時,可能的出錯原因有哪些,應如何通過調試查找錯誤?(3)調試上電控制程序。在程序標志的斷點①106(5)若寫字節程序正確,取消屏蔽,調試讀字節程序。運行程序1,并插卡,程序在斷點②處暫停時,記錄CY位狀態及讀數據緩沖區數據,驗證是否正確讀出(是否與寫數據緩沖區一致)。當讀出不正確時,可能的出錯原因有哪些,應如何通過調試查找錯誤?(6)打開并編譯實訓范例程序2。在卡地址緩沖區(首地址為20H的片內RAM)中設置將被更新的1頁卡存儲單元地址(例如00H~07H),在寫數據緩沖區(首地址為30H的片內RAM)中設置要寫入的8個數據(如00H、11H、...、77H),注意不要與卡中的原始數據相同,清零讀數據緩沖區(首地址為40H的片內RAM)。(5)若寫字節程序正確,取消屏蔽,調試讀字107(7)屏蔽讀頁程序,單獨調試寫頁程序。在程序標志的斷點③處設置斷點。運行程序2并插卡,程序在斷點③處暫停時,記錄CY位狀態;取出AT24C01卡,用讀寫器讀出被更新頁的內容,驗證是否正確寫入。當寫入不正確時,可能的出錯原因有哪些,應如何通過調試查找錯誤?(8)若寫頁程序正確,則取消屏蔽,調試讀頁程序。運行程序2,并插卡,程序在斷點④處暫停時,記錄CY位狀態及讀數據緩沖區數據,驗證是否正確讀出(是否與寫數據緩沖區一致)。當讀出不正確時,可能的出錯原因有哪些,應如何通過調試查找錯誤?(7)屏蔽讀頁程序,單獨調試寫頁程序。在程序108

4.實訓總結與分析(1)當上電控制電路正常,上電控制程序正確時,運行上電控制程序。未插卡時,程序循環等待插卡,卡座的VCC端保持低電平,保證不帶電插卡;插卡后,程序向下運行到斷點處,卡座的VCC端變為高電平,給IC卡芯片提供工作電源。(2)無論按字節或按頁操作時,讀/寫子程序正確則CY位應為0。當讀/寫出錯且CY位為1時,較為常見的出錯原因包括:上電控制程序或電路出錯,未能加電或電壓太低;SCL、SDA、SW2未加上拉電阻(或上拉電阻選擇不當)導致沒有高電平;SCL、SDA、SW2、PWR的接口定義與硬件不符;讀/寫流程有誤。通過在程序適當位置設置斷點,檢查各接口電平及查看各斷點處CY位(應答)可查出出錯原因。4.實訓總結與分析109(3)當讀/寫出錯而CY位為0時,表示讀/寫子程序正確,出錯的原因是數據塊傳輸不正確,即循環過程出錯。注意:在字節操作中,指針的加1和循環的判斷在每次調用STOP之后;而頁操作中,循環結束后才調用STOP。(3)當讀/寫出錯而CY位為0時,表示讀/110

5.思考(1)在范例程序1和程序2中,同樣是對卡中的某一數據塊進行讀/寫操作,二者的實現方式有何不同?(2)當接口電路采用常開型卡座,卻錯誤地使用了常閉型插卡識別程序,會出現什么現象?為什么?反之當接口電路采用常閉型卡座,卻錯誤地使用了常開型插卡識別程序,會出現什么現象?為什么?(3)當上述實驗采用的是AT24C64卡時,應如何修改程序?5.思考111

6.附錄——實訓范例主程序程序1按字節將AT89C51寫數據緩沖區中的16個字節數據寫入卡中連續的16個存儲單元中,然后再按字節將這16個存儲單元的內容讀入到AT89C51讀數據緩沖區中。程序2按頁將AT89C51寫數據緩沖區中的8個字節數據寫入卡中連續的8個存儲單元(1頁)中,然后再按字節將這8個存儲單元(1頁)的內容讀入到AT89C51讀數據緩沖區中。其中,寫數據緩沖區首地址為30H,讀數據緩沖區首地址為40H,卡地址緩沖區首地址為20H。6.附錄——實訓范例主程序112程序1:按字節操作。SDA BIT P1.0SCL BIT P1.1ICSW BIT P1.6PWR BIT P1.7ORG 0000HLJMP BYTEOPRORG 0080H程序1:按字節操作。113BYTEOPR: MOV SP,#50H LCALL PWRON ;上電控制 MOV R0,#20H ;設置卡地址緩沖區指針R0,斷點① MOV R1,#30H ;設置寫地址緩沖區指針R1 LCALL WRITE_BYTE MOV R0,#20H ;設置卡地址緩沖區指針R0 MOV R1,#40H ;設置讀地址緩沖區指針R1 LCALL READ_BYTE LCALL PWROFF SJMP$ ;斷點②BYTEOPR:114WRITE_BYTE: MOV R7,#10H ;R7為要寫的字節數LOOP1: LCALL START ;開始 JC EXIT1 MOV A,#0A0H ;送器件地址到A,設置寫 LCALL SHOUT ;輸出器件地址到IC卡 JC FAULT1 ;判斷是否有應答 MOV A,@R0 ;從卡地址緩沖區取字地址 LCALL SHOUT ;輸出字地址到IC卡 JC FAULT1 ;判斷是否有應答 MOV A,@R1 ;從寫數據緩沖區取數據 LCALL SHOUT ;輸出字地址到IC卡 JC FAULT1 ;判斷是否有應答 CLR C ;設置操作成功標志WRITE_BYTE:115FAULT1:LCALLSTOP ;停止 ACALL DELAY_10ms ;等待內定時寫周期結束 INC R0 ;卡地址緩沖區地址+1,指向下一個要寫入 的卡單元 INC R1 ;寫數據緩沖區地址+1,指向下一個數據 DJNZ R7,LOOP1 ;未寫完繼續EXIT1: RETREAD_BYTE: MOV R7,#10HFAULT1:LCALLSTOP ;停止116LOOP2:LCALL START ;開始 JC EXIT2 MOV A,#0A0H ;送器件地址到A,設置空寫 LCALL SHOUT ;輸出器件地址到IC卡 JC FAULT2 ;判斷是否有應答 MOV A,@R0 ;從卡地址緩沖區取字節地址 LCALL SHOUT ;輸出字地址到IC卡 JC FAULT2 ;判斷是否有應答 LCALL START ;開始 MOV A,#0A1H ;送器件地址到A,設置讀 LCALL SHOUT ;輸出器件地址到IC卡 JC FAULT2 ;判斷是否有應答 LCALL SHIN ;讀取IC卡的數據 MOV @R1,A ;送入讀數據緩沖區 LCALL NAK ;送NOACK給卡 CLR C ;設置操作成功標志LOOP2:LCALL START ;開始117EXIT2:LCALL STOP ;停止 INC R0 ;卡地址緩沖區地址+1,指向下一個被讀 入的卡單元 INC R1 ;讀數據緩沖區地址+1,指向下一個讀入 數據的存儲單元 DJNZ R7,LOOP2 ;未讀完繼續FAULT2:RET程序2:按頁操作。 SCL BIT P1.0 SDA BIT P1.1 ICSW BIT P1.2 PWR BIT P1.3 ORG 0000H LJMP PAGEOPR ORG 0080HEXIT2:LCALL STOP ;停止118PAGEOPR:MOV SP,#50HLCALL PWRONMOV R0,#20H ;設置卡地址緩沖區指針R0MOV R1,#30H ;設置寫地址緩沖區指針R1 LCALL WRITE_PAGE MOV R0,#20H ;設置卡地址緩沖區指針R0,斷點③ MOV R1,#40H ;設置讀地址緩沖區指針R1 LCALL READ_PAGE LCALL PWROFF SJMP$ ;斷點④PAGEOPR:119WRITE_PAGE: MOV R7,#08H ;R7為要寫的字節數,8B為1頁 LCALL START ;開始 JC BACK3 MOV A,#0A0H ;送器件地址到A,設置寫 LCALL SHOUT ;輸出器件地址到IC卡 JC FAULT3 ;判斷是否有應答 MOV A,@R0 ;從卡地址緩沖區取字地址 LCALL SHOUT ;輸出字地址到IC卡 JC FAULT3 ;判斷是否有應答WRITE_PAGE:120LOOP3: MOV A,@R1 ;從寫數據緩沖區取數據 LCALL SHOUT ;輸出(寫)數據到IC卡 JC FAULT3 INC R0;卡地址緩沖區地址+1,指向下一個要寫入的卡單元 INC R1;寫數據緩沖區地址+1,指向下一個數據

DJNZ R7,LOOP3 ;未寫完繼續 CLR C ;寫結束,設置操作成功標志FAULT3:LCALLSTOP ;停止 ACALL DELAY_10ms ;等待內定時寫周期結束LOOP3: MOV A,@R1 ;從寫數據緩沖區取數據121EXIT3: RETREAD_PAGE: MOV R7,#08H ;R7為要讀的字節數 LCALL START ;開始 MOV A,#0A0H ;送器件地址到A,設置空寫 LCALL SHOUT ;輸出器件地址到IC卡 JC FAULT ;判斷是否有應答 MOV A,@R0 ;從卡地址緩沖區取字節地址 LCALL SHOUT ;輸出字地址到IC卡 JC FAULT ;判斷是否有應答 LCALL START ;開始 MOV A,#0A1H ;送器件地址到A,設置讀 LCALL SHOUT ;送器件地址到IC卡 JC FAULT ;判斷是否有應答EXIT3: RET122LOOP4: LCALL SHIN ;讀取IC卡的數據 MOV @R1,A ;送入讀數據緩沖區 LCALL ACK ;送ACK應答給卡,使卡送出下一字節數據 INC R0;卡地址緩沖區地址+1,指向下一個被讀入的卡單元 INC R1;讀數據緩沖區地址+1,指向下一個讀入數據的存儲單元 DJNZ R7,LOOP;未讀完繼續 LCALL NAK ;讀結束,送NOACK給卡,使卡停止送出下一字節數據 CLR C ;設置操作成功標志FAULT4:LCALLSTOP;停止EXIT4: RETLOOP4: LCALL SHIN ;讀取IC卡的數據1232.6典型邏輯加密卡2.6.1面向位操作的邏輯加密卡面向位操作的邏輯加密卡是一種一次性使用的帶加密邏輯的IC卡,以一次性的計數方式(或有條件地擦除重用),從寫滿的計數器中減“1”,直至存儲單元全減為“0”。因此這種卡也稱為計數卡(TokenMemoryCard),如Siemens的SLE4406/4436、SLE4412、Atmel的AT88SC06、Gemplus的GPM276/103。2.6典型邏輯加密卡2.6.1面向位操作的邏輯加密124這種卡常用于具有定額定價的消費系統中,如公用電話卡、預付費加油卡、停車計費卡、游樂園消費卡等。卡的每次消費計數的單位價值可以根據應用系統的實際要求來確定,例如,對于公用電話卡,電話機每分鐘產生一次扣費信號,卡被減掉“1”,而每個“1”代表“0.5”元。對于預付費加油卡,加油機每出油1公升產生一次扣費信號,卡被減掉“1”,而每個“1”代表“2.5”元。目前,我國的公用電話卡大多采用了Siemens的SLE4406卡,下面就以SLE4406為例來介紹計數卡的有關性能。這種卡常用于具有定額定價的消費系統中,如公用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論