• <i id="549yd"></i>
  • 
    
  • 現在位置:范文先生網>理工論文>電子通信論文>AT93C46/56/55串行EEPROM及單片機程序

    AT93C46/56/55串行EEPROM及單片機程序

    時間:2023-02-20 23:43:30 電子通信論文 我要投稿
    • 相關推薦

    AT93C46/56/55串行EEPROM及單片機程序

    摘要:AT93C46/56/66是Atmel公司生產的低功耗、低電壓、電可擦除、可編程只讀存儲器,采用CMOS工藝技術制造并帶有3線串行接口,其容量分別為1kB/4kB,可重復寫100萬次,數據可保存100年以上。文中介紹了該存儲器的引腳功能和指令時序,給出了AT93C46/56/66和單片機的接口應用電路和軟件程序。

        關鍵詞:EEPROM 存儲器 接口應用 程序 AT93C46/56/66

    16位單片機以其適于高速控制場合及功能多等優點已在工業控制領域中占領了一定的市場。由于EEPROM能在不脫離系統的情況下修改其存儲單元中的內容,故在16位單片機中的應用愈來愈廣泛。本文結合16位機的特點,詳細介紹AT93系列EEPROM及其使用方法。

    AT93C46/56/66是ATMEL公司推出的低功耗、低電壓電可擦除的可編程只讀存儲器。它采用CMOS技術和Fairchild Semiconductor 公司的Mi-croWire工業標準3線串行接口,具有1kB/2kB/4kB的容量,并可通過ORG管腳配置成128×8/256×8/512×8或64×16/128×16/256×16等結構。該系列存儲器可靠性高,能夠重復寫100萬次,數據可以保存100年不丟失;采用8腳PDIP/SOIC封裝和14腳SOI封裝(SOI封裝為JEDEC和EIAJ標準),與并行的EEPROM相比,AT93C46/56/66可大大節省印制板空間,且接線簡單,因而在多功能的精密測試儀中具有廣闊的前途。(范文先生網www.annahuzar.com收集整理)

    1 引腳功能

    AT93C46/56/66存儲器芯片的引腳排列如圖1所示。各引腳的功能如下:

    CS:片選信號。高電平有效,低電平時進入等待模式。在連續的指令之間,CS信號必須持續至少250ns的低電平,才能保證芯片正常工作。

    CLK:串行時鐘信號。在CLK的上升沿,操作碼、地址和數據位進入器件或從器件輸出。在發送序列時,CLK最好不停止,以防止讀/寫數據的錯誤。

    DI:串行數據輸入?稍冢茫蹋说耐较螺斎腴_始位、操作碼、地址位和數據位。

    DO:串行數據輸出。在CLK同步下讀周期時,用于輸出數據;而在地址擦/寫周期或芯片擦/寫周期時,該端用于提供忙/閑信息。

    VSS:接地。

    VCC:接+5V電源。

    ORG:存貯器構造配置端。該端接VCC或懸空時,輸出為16位;接GND時,輸出為8位。

    NC:空腳,不連接。

    表1 AT93C46/56/66系統指令

    指  令 起始位 操作碼 地址位 數據位 備  注 *8  *16 空 READ 1 10 AnAo  AnAo 空 從指定的單元讀數 EWEN 1 00 11xxxxx  11xxxx 空 允許寫指令 ERASE 1 11 An~Ao    An-1~Ao 空 擦除指定單元 WRITE 1 01 An~Ao    An-1~Ao D7~D0  D15~D0 寫入存儲單元 ERAL 1 00 10xxxxx  10xxxx 空 擦除存儲器所有單元 WRAL 1 00 01xxxx   01xxxx D7~D0  D15~D0 寫入存儲器所有單元 EWDS 1 00 00xxxxx    00xxxx 空 禁止寫指令

        表中,93C46 n=6;93C56n=7; 93C66n=8

    2 指令及時序

    AT93C46/56/66的指令如表1所列,各指令的具體含義如下:

    (1)擦/寫允許指令(EWEN)

    由于在上電復位后?AT93C46/56/66首先將處于擦/寫不允許狀態。故該指令必須在所有編程模式前執行,一旦該指令執行后,只要外部沒有斷電就可以對芯片進行編程。

    (2)地址擦指令(ERASE)

    該指令用于強迫指定地址中所有數據位都為“1”。一旦信息在DI端上被譯碼,就需使CS信號保持至少250ns的低電平,然后將CS置為高電平,這時,DO端就會指示“忙”標志。DO為“0”,表示編程正在進行;DO為“1”,表示該指定地址的寄存器單元已擦完,可以執行下一條指令。

    (3)地址寫指令(WRITE)

    寫指令時,先寫地址,然后將16位的?或8位?數據寫入到指定地址中。當DI端輸出最后一個數據位后,在CLK時鐘的下一個上升沿以前,CS必須為低,且需至少保持250ns,然后將CS置為高電平。需要說明的是:寫周期時,每寫一個字節需耗時4ms。

    (4)地址讀指令(READ)

    讀指令用于從指定的單元中把數據從高位到低位輸出至DO端,但邏輯“0”位先于數據位輸出。讀指令在CLK的上升沿觸發,且需經過一段時間方可穩定。為防止出錯,建議在讀指令結束后,再輸出2~3個CLK脈沖。

    (5)芯片擦指令(ERAL)

    該指令可將整個存貯器陣列置為1,其它功能與地址擦指令相同。

    (6)芯片寫指令?WRAL?

    該指令可將命令中指定的數據寫入整個存貯器陣列,其它功能與地址寫指令相同。該指令周期所花費時間的最大值為30ms。

    (7)擦/寫禁止指令(EWDS)

    使用該指令可對寫入的數據進行保護,操作步驟與擦/寫允許指令相同。

    3。粒裕梗常茫担兜膽

    3.1 AT93C56與80C196KB的連接

    串行EEPROM芯片AT93C56同80C196單片機接口的硬件電路連接方法如圖2所示。圖中,由于MCS-96系列16位單片機的P1口為準雙向口,因此,為了防止數據錯位,在向其P1口寫數據時,必須先將P1口置“1”。

    3.2 軟件編程

    該讀/寫程序采用PL/M語言編寫,由于PL/M語言介于高級語言與匯編語言之間,故其對數據、地址位的處理比較繁瑣。其中ADDR為指定的地址單元,DATA為寫入的數據,在寫數據、地址時均從高位開始。本程序已在仿真器上調試通過。且已被應用于電量測試儀中(如接觸電阻測試儀)。

    DECLARE SETCS LITERALLY ‘CALL BITSET?. IO-PORT2,0?′;

    DECLARE CLRCS LITERALLY ‘CALL BITCLR?. IOPORT2,0?′;

    DECLARE SETCLK LITERALLY ‘CALL BITSET?. IOPORT2,5?′;

    DECLARE CLRCLK LITERALLY ‘CALL BITCLR?. IOPORT2,5?′;

    DECLARE SETDI LITERALLY ‘CALL BITSET?. IO-PORT1,5?′;

    DECLARE CLRDI LITERALLY ‘CALL BITCLR?. IOPORT1,5?′;

    EWEN:PROCEDURE PUBLIC;

    DECLARE I BYTE;

    CLRCS; CLRDI; CLRCLK;

    SETCS; SETDI; SETCLK;

    DO I=1 TO 2;

    CLRCLK; CLRDI; SETCLK;

    END;

    DO I=1 TO 2;

    CLRCLK; SETDI; SETCLK;

    END;

    DO I = 0 TO 6;

    CLRCLK; SETDI; SETCLK;

    END;

    CLRCLK; CLRCS; SETCS;

    SETCLK; CLRCLK;

    END EWEN;

    READ:PROCEDURE(ADDR) PUBLIC;

    DECLARE (ADDR,I,COUNT) BYTE;

    CLRCS; CLRDI;

    CLRCLK; SETCS;

    DO I= 1 TO 2;

    CLRCLK; SETDI; SETCLK;

    END;

    DO I =1 TO 2;

    CLRCLK; CLRDI; SETCLK;

    DO COUNT=1 TO 7;

    BITOUT(COUNT)=SHR(BITOUT(COUNT),1);

    END;

    CLRCS; CLRDI; CLRCLK;

    CALL TIME(100);

    SETCS; CLRC;

    END READ;

    WRITE: PROCEDURE(ADDR,DATA) PUBLIC;

    DECLARE (ADDR,DATA) BYTE;

    CLRCS; CLRDI; CLRCLK;

    SETCS; SETDI; SETCLK;

    CLRDI; CLRCLK; SETCLK;

    SETDI; CLRCLK; SETCLK;

    END;

    DO I =-1 TO 8;

    X=ROL(ADDR,1);

    ADDR=X; CLRCLK;

    IF ((X AND 01H)=01H)THEN SETDI;

    ELSE CLRDI;

    SETCLK;

    END;

    DO I =1 TO 7;

    CLRCLK; SETCLK;

    END;

    DO I =1 TO 8?

    CALL BITSET(.IOPORT1,7);

    COUNT=COUNT-1;

    CLRCLK; SETCLK;

    BITOUT(COUNT)=IOPORT1;

    END;

    CLRCLK; SETCLK;

    J=0;

    AA: DO I= 1 TO 8;

    J=J+1;

    X=ROL(ADDR,1;

    ADDR=X; CLRCLK;

    IF((X AND 01H)=01H) THEN SETDI

    ELSE CLRDI;

    SETCLK;

    END;

    IF J<>16 THEN DO;

    ADDR =DATA;

    GOTO AA;

    END;

    CLRCS;SETCS;

    CALL TIME(100);?

    END;


    【AT93C46/56/55串行EEPROM及單片機程序】相關文章:

    串行FLASH SSF1101在單片機08-06

    C語言實的串行通信接口程序08-06

    串行DataFlash存儲器及其與單片機的接口08-06

    C語言實現串行通信接口程序08-06

    一種用于單片機的紅外串行通信接口08-06

    一種簡單串行鼠標控制的單片機實現08-06

    在VC++中用ActiveX控件實現與單片機的串行通信08-06

    單片機與串行AD轉換器TLC0834的接口設計08-06

    ICL7135的串行采集方式在單片機電壓表中的應用08-06

    av片在线观看无码免费_日日高潮夜夜爽高清视频_久久精品中文字幕乱码视频_在线亚州av播放