_整套24c16單片機(jī)讀寫驅(qū)動(dòng)程序_第1頁
_整套24c16單片機(jī)讀寫驅(qū)動(dòng)程序_第2頁
_整套24c16單片機(jī)讀寫驅(qū)動(dòng)程序_第3頁
_整套24c16單片機(jī)讀寫驅(qū)動(dòng)程序_第4頁
_整套24c16單片機(jī)讀寫驅(qū)動(dòng)程序_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、用單片機(jī)實(shí)現(xiàn)通用存貯器IC卡的讀寫自動(dòng)化儀表2002本文對AT24系列存貯器和AT89系列單片機(jī)的特征及總線狀態(tài)作為介紹,并以AT24C01與AT89C2051為例詳細(xì)描述了通用存貯器 IC卡的工作原理及用單片機(jī)對其進(jìn)行讀寫操作的基本電路連接和軟件編程 方法。用存貯器IC卡是由通用存貯器芯片封裝而成的,由于它的結(jié)構(gòu)和功能簡單,生產(chǎn)成本低,使用 方便,因此在各領(lǐng)域都得到了廣泛的應(yīng)用。目前用于IC卡的通用存貯器芯片多為E2PROM其常用的協(xié)議主要有兩線串行連接協(xié)議(I2C)和三線串行鏈接協(xié)議,其中比較常用的是ATME公司生產(chǎn)的AT24系列芯片。以該系列中的AT24C01為例,它具有1k的存貯容量,

2、適用于 2V5V的低電壓/標(biāo)準(zhǔn)電壓的操 作,具有低功耗和高可靠性等優(yōu)點(diǎn)。而AT89C2051雖是ATME公司89系列單片機(jī)的低檔型,但它具有2k的FLASH ROM可重編閃速存貯器)、128X8位內(nèi)部RA/全靜態(tài)操作方式,同樣也具有低功耗和 較強(qiáng)的功能。下面以 AT24C2051為例,對通用存貯器 IC卡的工作原理及基本電路連線作一介紹,該線 路簡單,使用靈活,能可靠地對通用存貯器IC卡進(jìn)行讀寫。2 硬件特性AT24 系列存貯器的特性AT24系列存貯器芯片采用 CMOSE藝制造,內(nèi)置有高壓泵,可在單電壓供電條件下工作。其標(biāo)準(zhǔn)封裝為 8腳DIP封裝形式,各引腳的功能說明如下: SCL串行時(shí)鐘。在

3、該腳的上升沿時(shí),系統(tǒng)將數(shù)據(jù)輸入到每個(gè)EEPROMI件,在下降沿時(shí)輸出。SDA串行數(shù)據(jù)。該引腳為開漏極驅(qū)動(dòng),可雙向傳送數(shù)據(jù)。AR A1、A2:器件/頁面尋址。為器件地址輸入端。在 AT24C01/02中,該引腳被硬連接。 Vcc: 一般輸入+5V的工作電壓。圖1是符合ISO7816-2標(biāo)準(zhǔn)的IC卡的觸點(diǎn)圖(見IC卡書P186)。對于AT24系列通用存貯器IC卡來 說,通常只需使用四個(gè)觸點(diǎn)。 AT24C01的內(nèi)部組態(tài)為128個(gè)8位字節(jié),而對隨機(jī)字尋址則需要一個(gè) 7位 地址。總線狀態(tài)及時(shí)序AT24C01的SCL及SDA兩總線可通過一個(gè)電阻上拉為高電平,SDA上的數(shù)據(jù)僅在 SCL為低電平時(shí)才能改變。當(dāng)

4、SCL為高電平時(shí),SDA的改變表示“開始”和“停止”狀態(tài)。此時(shí),所有地址和數(shù)據(jù)字都以8位串行碼方式輸入輸出 EEPROM 開始狀態(tài):SCL為高電平時(shí),SDA由高電平轉(zhuǎn)入低電平。該命令必須在其它命令前執(zhí)行。 SCL停止?fàn)顟B(tài):SCL為高電平時(shí),SDA由低電平轉(zhuǎn)入高電平。該命令可終止所有通訊。SCLSDA確認(rèn):相同總線上的設(shè)備在收到數(shù)據(jù)后,以置SDA為低電平的方式對其進(jìn)行確認(rèn)。SCL1SDA器件尋址AT24系列EEPROME開始狀態(tài)后需緊接一個(gè)8位器件地址,以進(jìn)行應(yīng)讀寫操作。設(shè)備尋址碼的高4位為1、0、1、0 ,對于AT24C01/02,尋址碼高4位后面的三位是器件尋址碼,與它們的硬連線管腳相對應(yīng)。

5、最低應(yīng)是讀寫選擇位,置 0時(shí)可激發(fā)讀操作。AT24設(shè)備尋址碼具體的格式如下:1 0 1 0 A2 A1 A0 R/WAT89C2051 芯片AT89C2051是MCS-51產(chǎn)品的兼容型,它具有 2k的FLASH ROM 128字節(jié)ROM 15根I/O引線、兩個(gè)16 位定時(shí)/計(jì)數(shù)器、一個(gè)五向量兩級(jí)中斷結(jié)構(gòu)、一個(gè)全雙工串行口、一個(gè)精密模擬比較器以及片內(nèi)振蕩電路和時(shí)鐘電路。 它的P1 口和P3 口是雙向I/O 口,其中、和帶有內(nèi)部上拉電阻。在AT89C2051用作輸入端時(shí),將首先向引腳寫“1”而使內(nèi)部 MOST截止以便引腳處于懸浮狀態(tài),從而可獲得高阻抗輸入。圖2為通用存貯器IC卡的基本電路連接圖。(

6、略)3讀寫操作軟件當(dāng)系統(tǒng)采用6MHzft體振蕩器時(shí)所定義的I/O 口線及器件地址如下:SCL BITSDA BITDEVICEAD_W DATA B寫卡器件地址DEVICEAD_R DATA B;讀卡器件地址開始條件(START。當(dāng)SCL為高電平時(shí),SDA由高轉(zhuǎn)為低。程序如下:SDA /L 在SCL、SDA4r 1前提下進(jìn)入開始,開始完成后,SCL SDA全00START_ICCLR SCL ; SCL由高變彳氐,因?yàn)?SCL彳氐電平時(shí)才允許 SDA更改NOP;加入空指令延時(shí)以確保信號(hào)可靠NOPSETB SDA ;SDA 先高NOPNOPSETB SCL ;SCL高,起始條件建立時(shí)間大于NOP

7、NOPCLR SDA ; SDAf氐,起始條件鎖定時(shí)大于 4usNOPNOPCLR SCL ; SCL低,鉗住總線,準(zhǔn)備發(fā)數(shù)據(jù)NOPRET停止條件(STOP_ICSCLSDA5;在SCL SDA高或低的前提下均可進(jìn)入停止過程當(dāng)SCL為高電平時(shí),SDA由低轉(zhuǎn)為高。程序如下:停止過程完成后,SCL SDA 1STOP_ICCLR SCL ;SCLNOPCLR SDANOPNOPSETB SCLNOPNOP發(fā)送結(jié)束條件的時(shí)鐘信號(hào)結(jié)束總線時(shí)間大于 4us (取)SETB SDANOP結(jié)束總線保證一個(gè)終止信號(hào)和起始信號(hào)的空閑時(shí)間大于NOP ;在 SCLSDA高或低的前提下均可進(jìn)入停止,停止完成后,SCL

8、 SDA4: 1RET應(yīng)答確認(rèn)信號(hào)(MACK_IC與非應(yīng)答信號(hào) MNACK_IC在接收方,每收到一字節(jié)后便將SDA電平拉低,程序如下:SCL二SDA;應(yīng)答完成后,SCL=O, SDA=1應(yīng)答確認(rèn)信號(hào)MACK_IC CLR SCLMACK_ICNOPCLR SDA在第9個(gè)SLC脈沖,將SDA 0NOPNOPSEIB SCLNOPNOP保持?jǐn)?shù)據(jù)時(shí)間,即 SCL為高時(shí)間大于CLR SCLNOPSETB SDA在SDA高或低的任何前提下,應(yīng)答完成后,SCL=Q SDA=1NOPMNACKICRET發(fā)送非應(yīng)答信號(hào)MNACK_IC: CLR SCLNOPNOP;將 SDAg 1SETB SDANOPNOP

9、SETB SCLNOPNOP;保持?jǐn)?shù)據(jù)時(shí)間,即SCL為高時(shí)間大于NOPNOPNOPCLR SCLNOPSETB SDANOPRET24C16程序資源安排是:R0號(hào)節(jié)的循環(huán)指針,R2至數(shù)的計(jì)數(shù)器, R3=#器件地址,R4=字節(jié)地址,R5號(hào)節(jié)數(shù)或頁面長度。R1可以留作其他循環(huán)指針,R6 R7可以留作uS級(jí)延時(shí)。寫一字節(jié)數(shù)據(jù)到IC卡(WR_BYTESCLSDAD6-D0IC確認(rèn)在下列程序中,參數(shù) A表示源數(shù)據(jù),R2表示字節(jié)位數(shù)。WR_BYTE MOV R2, #08 ; 一字節(jié) 8 位數(shù)據(jù)CLR SCLNOPNOPWR_BYTE 1 RLC A ;帶進(jìn)位位左移, CMOV SDA C ; SCL低電

10、平日改變 SDA的數(shù)據(jù)NOPSETB SCL ;拉高SCL =把數(shù)據(jù)發(fā)送出去NOPNOPCLR SCLNOPNOPDJNZ R2, WR_BYTE 1依次發(fā)送 A中的8位數(shù)據(jù)SETB SDANOPNOPSETB SCLCLR F0NOPNOP MOV C,SDA JC WR_BYTE2SETB F0;判斷應(yīng)答位WR_BYTE2:NOP CLR SCL NOPRET此子程序的主要作用是按照定義的時(shí)序,順序左移A中一字節(jié)8位數(shù)據(jù),并通過引腳傳送出去。當(dāng)一字節(jié)發(fā)完后,等待 IC卡發(fā)回的確認(rèn)信號(hào)。從IC卡讀一字節(jié)(RD_BYTE從IC卡中讀一字節(jié)的源程序如下:SCLSDAD7D6一XZ - do3K)

11、發(fā)停止)犬態(tài)RD_BYTE MOV R2 #08SETB SDA;設(shè)備SDA為讀狀態(tài)CLR A ;清空A寄存器NOPNOP時(shí)鐘線為高,接收數(shù)據(jù)位;讀取一位數(shù)據(jù)到進(jìn)位位 左移數(shù)據(jù)到;將SCL拉低,時(shí)間大于RD_BTYE1 SETB SCLNOPNOPMOV C,SDARLC ACLR SCLNOPNOPDJNZ R2 , RD_BYTE1依次讀出 8位數(shù)據(jù)至U A中RET ;無應(yīng)答信號(hào)利用該程序可將讀出的數(shù)據(jù)存放在A中。需要注意的是:讀數(shù)據(jù)的器件不是通過確認(rèn)狀態(tài)來應(yīng)答的,而是隨后產(chǎn)生一個(gè)停止?fàn)顟B(tài)。字節(jié)寫入模式寫單字節(jié)數(shù)據(jù)(WRITE_BYTE下列程序入口參數(shù):R3年器件地址,R4=目的字節(jié)地址,

12、 A=待寫數(shù)據(jù)出口參數(shù):F0作應(yīng)答位,F(xiàn)0=1有應(yīng)答 占用資源:A、R4 CY F0發(fā)開始信號(hào)一寫卡器件地址一寫入字節(jié)地址一寫入單字節(jié)數(shù)據(jù)一發(fā)停止信號(hào) WRITE_BYTE PUSH ACC;保存 A 中的數(shù)據(jù)LCALL START_IC ;發(fā)開始信號(hào)MOV A R3 ;寫入器件地址 8位LCALL WR_BYTEJNB F0,RETWRB ;無應(yīng)答貝U跳轉(zhuǎn)MOV A R4 ;寫入字節(jié)地址8位LCALL WR_BYTEJNB F0,RETWRB ;無應(yīng)答貝U跳轉(zhuǎn)POP ACC;恢復(fù)待寫的A中數(shù)據(jù)LCALL WR_BYTE;寫入單字節(jié)數(shù)據(jù)LCALL STOP_IC ;發(fā)停止信號(hào) RETRETWR

13、B: POP ACCLCALL STOPRET在收到8位數(shù)據(jù)后,EEPROM通過SDA來回送確認(rèn)信號(hào),而傳送設(shè)備必須用停止?fàn)顟B(tài)來終止寫操 作。這時(shí),EEPROM進(jìn)入一個(gè)內(nèi)時(shí)固定存貯器的寫入周期并且禁止在此其間的所有輸入,直到寫操作 完成后才對通訊應(yīng)答。其寫入周期可自定義,最大為10mso頁面寫入模式寫多字節(jié)數(shù)據(jù)(WRITE_PAGE入口參數(shù):R3=#器件地址,R4=目的字節(jié)地址,R5=M面長度。R0=數(shù)據(jù)緩沖指針 發(fā)開始信號(hào)寫卡器件地址寫頁面目的地址連續(xù)寫(R5)個(gè)字節(jié)數(shù)據(jù)發(fā)停止信號(hào) WRITE_PAGE LCALL START_IC;發(fā)開始信號(hào)MOV A R3;寫卡器件地址LCALL WR_

14、BYTEJNB F0, IWRNBYTEMOV A R4;寫頁面目的地址LCALL WR_BYTEJNB F0, IWRNBYTEWRITE_PAGE 1 MOV A R0 ;連續(xù)寫(R5)個(gè)字節(jié)數(shù)據(jù)LCALL WR_BYTEJNB F0, IWRNBYTEINC R0DJNZ R5, WRITE_PAGE1 IWRNBYTE: LCALL STOP_IC ;發(fā)停止信號(hào)RETAT24C01/02可利用上述程序進(jìn)行 8字節(jié)的頁面寫入,它的操作類似于寫字節(jié)。不同的是,它無需 在第一個(gè)字節(jié)送出后以停止?fàn)顟B(tài),不同在收到確認(rèn)信號(hào)后,再傳送7個(gè)字節(jié)的數(shù)據(jù)碼,最后以停止?fàn)顟B(tài)來終止頁面寫序列。AT24C04/

15、08/16的頁面為16字節(jié)。立即性地址讀單字節(jié)模式(READ_BYTEC立即地址讀模式讀一字節(jié)數(shù)據(jù)的程序如下:入口參數(shù):R3=#器件地址,(字節(jié)源地址以芯片內(nèi)的當(dāng)前地址) 出口數(shù)據(jù):讀取數(shù)據(jù) ACC開始信號(hào)寫出讀卡器件讀出默認(rèn)地址數(shù)據(jù)發(fā)停止?fàn)顟B(tài)應(yīng)答READ_BYTECLCALL START_IC ;開始信號(hào)MOV A R3;寫讀卡器件地址LCALL WR_BYTEJNB F0, RETRDBLCALL RD_BYTE ;讀出默認(rèn)地址數(shù)據(jù)LCALL MNACK ;讀完最后一個(gè)字節(jié)數(shù)據(jù)需要發(fā)非應(yīng)答信號(hào)RETRDB : LCALL STOP_IC ;發(fā)停止?fàn)顟B(tài)應(yīng)答 RET該程序執(zhí)行后,其內(nèi)部數(shù)據(jù)字地

16、址指針將保持在上次讀寫操作訪問的最后一個(gè)地址,并按1遞增且在芯片上電期間一直有效。只有當(dāng)?shù)刂窞轫撁娴淖钅r(shí),下次訪問才滾動(dòng)到該頁面的首地址。選擇性地址讀單字節(jié)模式(READ_BYTER在下列程序中,R35器件地址,R4=字節(jié)源地址出口數(shù)據(jù):讀取數(shù)據(jù) ACC程序如下:開始彳t號(hào)-執(zhí)行空字節(jié)寫卡器件地址寫入源地址開始信號(hào)-寫卡器件地址-立即地址的數(shù)據(jù)讀出一停止信號(hào)READ_BYTERLCALL START_IC ;啟動(dòng)總線MOV A, R3;執(zhí)行空字節(jié)寫卡器件地址LCALL WR_BYTEJNB F0,READ_BYTE3MOV A R4;寫入源字節(jié)地址LCALL WR_BYTELCALL STA

17、RT_IC ;重新啟動(dòng)總線MOV A R3;寫卡器件地址;立即地址數(shù)據(jù)讀出讀完最后一個(gè)字節(jié)數(shù)據(jù)需要發(fā)非應(yīng)答信號(hào);停止信號(hào)LCALL WR_BYTEJNB F0,READ_BYTE3 LCALL RD_BYTE LCALL MNACKREAD_BYTE3: LCALL STOP_IC RET讀操作模式需要一個(gè)字節(jié)寫序列載入數(shù)據(jù)地址。在器件和數(shù)據(jù)地址寫入并得到確認(rèn)后,將再產(chǎn)生另一個(gè)開始條件,并送出讀操作器件的地址,同時(shí)激發(fā)一個(gè)立即地址讀取。立即地址的連續(xù)讀取 N個(gè)字節(jié)數(shù)據(jù)(READ_BYTES;功能:從卡器件的當(dāng)前立即字節(jié)地址開始讀取N個(gè)數(shù)據(jù)入口參數(shù):R3=卡器件地址,(字節(jié)源地址默認(rèn)當(dāng)前立即地址

18、 ),R5=N數(shù)據(jù)長度 出口參數(shù):R0=目的指針開始彳t號(hào)-寫出讀卡器件一(R5)個(gè)立即地址的數(shù)據(jù)讀出停止信號(hào)READ_BYTES LCALL START_IC;開始信號(hào)MOV A R3;寫出讀卡器件LCALL WR_BYTEJNB F0, BYTESRET;連續(xù)立即地址的數(shù)據(jù)讀出;存放數(shù)據(jù)到目的地址讀完最后一個(gè)字節(jié)數(shù)據(jù)需要發(fā)非應(yīng)答信號(hào);讀完N個(gè)字節(jié)后發(fā)停止信號(hào)READ_BYS2 LCALL RD_BYTE MOV R 0A INC R0DJNZ R5, READ_BYS1 LCALL MNACK BYTESRET: LCALL STOPICRETREADBYS1 LCALL ACKIC;收到數(shù)據(jù)后發(fā)確認(rèn)信號(hào)SJMP READ_BYS2其中連續(xù)讀取由立

溫馨提示

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

評(píng)論

0/150

提交評(píng)論