亚洲日本成本线在观看,最新国自产拍在线,免费性爱视频日本,久久精品国产亚洲精品国产精品

            現(xiàn)在位置:范文先生網(wǎng)>理工論文>電子通信論文>AT93C46/56/55串行EEPROM及單片機(jī)程序

            AT93C46/56/55串行EEPROM及單片機(jī)程序

            時(shí)間:2023-02-20 23:43:30 電子通信論文 我要投稿
            • 相關(guān)推薦

            AT93C46/56/55串行EEPROM及單片機(jī)程序

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

                關(guān)鍵詞:EEPROM 存儲(chǔ)器 接口應(yīng)用 程序 AT93C46/56/66

            16位單片機(jī)以其適于高速控制場(chǎng)合及功能多等優(yōu)點(diǎn)已在工業(yè)控制領(lǐng)域中占領(lǐng)了一定的市場(chǎng)。由于EEPROM能在不脫離系統(tǒng)的情況下修改其存儲(chǔ)單元中的內(nèi)容,故在16位單片機(jī)中的應(yīng)用愈來(lái)愈廣泛。本文結(jié)合16位機(jī)的特點(diǎn),詳細(xì)介紹AT93系列EEPROM及其使用方法。

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

            1 引腳功能

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

            CS:片選信號(hào)。高電平有效,低電平時(shí)進(jìn)入等待模式。在連續(xù)的指令之間,CS信號(hào)必須持續(xù)至少250ns的低電平,才能保證芯片正常工作。

            CLK:串行時(shí)鐘信號(hào)。在CLK的上升沿,操作碼、地址和數(shù)據(jù)位進(jìn)入器件或從器件輸出。在發(fā)送序列時(shí),CLK最好不停止,以防止讀/寫(xiě)數(shù)據(jù)的錯(cuò)誤。

            DI:串行數(shù)據(jù)輸入?稍冢茫蹋说耐较螺斎腴_(kāi)始位、操作碼、地址位和數(shù)據(jù)位。

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

            VSS:接地。

            VCC:接+5V電源。

            ORG:存貯器構(gòu)造配置端。該端接VCC或懸空時(shí),輸出為16位;接GND時(shí),輸出為8位。

            NC:空腳,不連接。

            表1 AT93C46/56/66系統(tǒng)指令

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

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

            2 指令及時(shí)序

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

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

            由于在上電復(fù)位后?AT93C46/56/66首先將處于擦/寫(xiě)不允許狀態(tài)。故該指令必須在所有編程模式前執(zhí)行,一旦該指令執(zhí)行后,只要外部沒(méi)有斷電就可以對(duì)芯片進(jìn)行編程。

            (2)地址擦指令(ERASE)

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

            (3)地址寫(xiě)指令(WRITE)

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

            (4)地址讀指令(READ)

            讀指令用于從指定的單元中把數(shù)據(jù)從高位到低位輸出至DO端,但邏輯“0”位先于數(shù)據(jù)位輸出。讀指令在CLK的上升沿觸發(fā),且需經(jīng)過(guò)一段時(shí)間方可穩(wěn)定。為防止出錯(cuò),建議在讀指令結(jié)束后,再輸出2~3個(gè)CLK脈沖。

            (5)芯片擦指令(ERAL)

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

            (6)芯片寫(xiě)指令?WRAL?

            該指令可將命令中指定的數(shù)據(jù)寫(xiě)入整個(gè)存貯器陣列,其它功能與地址寫(xiě)指令相同。該指令周期所花費(fèi)時(shí)間的最大值為30ms。

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

            使用該指令可對(duì)寫(xiě)入的數(shù)據(jù)進(jìn)行保護(hù),操作步驟與擦/寫(xiě)允許指令相同。

            3。粒裕梗常茫担兜膽(yīng)用

            3.1 AT93C56與80C196KB的連接

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

            3.2 軟件編程

            該讀/寫(xiě)程序采用PL/M語(yǔ)言編寫(xiě),由于PL/M語(yǔ)言介于高級(jí)語(yǔ)言與匯編語(yǔ)言之間,故其對(duì)數(shù)據(jù)、地址位的處理比較繁瑣。其中ADDR為指定的地址單元,DATA為寫(xiě)入的數(shù)據(jù),在寫(xiě)數(shù)據(jù)、地址時(shí)均從高位開(kāi)始。本程序已在仿真器上調(diào)試通過(guò)。且已被應(yīng)用于電量測(cè)試儀中(如接觸電阻測(cè)試儀)。

            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及單片機(jī)程序】相關(guān)文章:

            串行FLASH SSF1101在單片機(jī)08-06

            C語(yǔ)言實(shí)的串行通信接口程序08-06

            串行DataFlash存儲(chǔ)器及其與單片機(jī)的接口08-06

            C語(yǔ)言實(shí)現(xiàn)串行通信接口程序08-06

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

            一種簡(jiǎn)單串行鼠標(biāo)控制的單片機(jī)實(shí)現(xiàn)08-06

            在VC++中用ActiveX控件實(shí)現(xiàn)與單片機(jī)的串行通信08-06

            單片機(jī)與串行AD轉(zhuǎn)換器TLC0834的接口設(shè)計(jì)08-06

            ICL7135的串行采集方式在單片機(jī)電壓表中的應(yīng)用08-06