關(guān)于AT89C 系列單片機(jī)閃速存儲(chǔ)器的編程介紹
掃描二維碼
隨時(shí)隨地手機(jī)看文章
AT89C2051單片機(jī)內(nèi)部有2KB的閃速存儲(chǔ)器陣列,一片新的AT89C2051,其存儲(chǔ)陣列處于擦除狀態(tài)(FFH),此時(shí)可對(duì)其編程,存儲(chǔ)陣列一次編程1字節(jié),若編程任何非空字節(jié)時(shí),需對(duì)整個(gè)存儲(chǔ)陣列進(jìn)行片擦除。
編程時(shí),AT89C2051利用內(nèi)部存儲(chǔ)器地址計(jì)數(shù)器提供尋址存儲(chǔ)器的地址信號(hào),RST上升沿將該地址計(jì)數(shù)器復(fù)位至000H,引腳XTAL1所施加的正向連續(xù)脈沖使地址計(jì)數(shù)器不斷加1。RST上出現(xiàn)12V(編程電源VPP)高壓時(shí),預(yù)示著1字節(jié)的編程操作開(kāi)始,這時(shí)P3口提供編程所需的控制與狀態(tài)信號(hào),P1口為數(shù)據(jù)通道,如圖10.3所示。對(duì)這些端口或引腳按圖10.4所示的時(shí)序施加正確的控制組合就可通過(guò)P1口將數(shù)據(jù)編程到內(nèi)部閃速存儲(chǔ)器中。
圖10.3編程閃速存儲(chǔ)器
圖10.4閃速存儲(chǔ)器編程和校驗(yàn)時(shí)序
AT89C2051根據(jù)引腳RST與P3.2~P3.7的狀態(tài)組合可以產(chǎn)生5種編程模式,如表10.4所示。
1.編程(寫代碼數(shù)據(jù))
AT89C2051編程按下述步驟進(jìn)行:
(1)上電過(guò)程:VCC加電,置RST為“L”(低電平),XTAL1為“L”,其它所有引腳懸空,等待10ms以上;
(2)置RST為“H”(高電平),P3.2為“H”;
(3)在引腳P3.3、P3.4、P3.5、P3.7上施加相應(yīng)的邏輯電平,選定基本編程模式;
(4)地址信號(hào)由內(nèi)部地址計(jì)數(shù)器提供(初始值為000H),欲寫入該地址中的數(shù)據(jù)加至引腳P1.0~P1.7上;
(5)將RST電平升至12V啟動(dòng)編程;
(6)給P3.2施加一負(fù)脈沖,則編程內(nèi)部存儲(chǔ)器陣列或鎖定位的1個(gè)字節(jié),字節(jié)寫周期采用自定時(shí),通常為1.2ms;
(7)若要校驗(yàn)已編程數(shù)據(jù),將RST從12V降至邏輯電平“H”,并置引腳P3.3~P3.7為校驗(yàn)?zāi)J诫娖?,輸出?shù)據(jù)即可在P1口讀取;
(8)編程下一個(gè)地址字節(jié),對(duì)XTAL1施加一正脈沖,內(nèi)部地址計(jì)數(shù)器加1,然后在P1口上加載欲寫入的新數(shù)據(jù);
(9)重復(fù)步驟(5)~(8),改變數(shù)據(jù),遞增地址計(jì)數(shù)器直到2KB存儲(chǔ)陣列全部編程或目標(biāo)文件結(jié)束;
(10)下電過(guò)程:置XTAL1為“L”,RST為“L”,其它I/O引腳懸空,VCC下電。當(dāng)前次編程未結(jié)束時(shí),不允許開(kāi)始下一次編程。
如何確定一次編程操作是否結(jié)束,AT89C2051提供了以下兩種方法。
1)數(shù)據(jù)查詢特性
AT89C2051具有通過(guò)數(shù)據(jù)查詢來(lái)檢測(cè)寫周期結(jié)束的特性。在寫期間,讀操作將導(dǎo)致P1.7輸出寫入數(shù)據(jù)的補(bǔ)碼,一旦寫完成,所有輸出將出現(xiàn)真實(shí)數(shù)據(jù),這時(shí)可開(kāi)始下一數(shù)據(jù)編程。利用這一特性,可以在啟動(dòng)某一次編程后不斷地查詢寫入數(shù)據(jù),直到查詢的數(shù)據(jù)為真實(shí)數(shù)據(jù)時(shí),就可判定寫周期已結(jié)束。
2)準(zhǔn)備好/忙信號(hào)
在編程期間,引腳P3.3(RDY/BSY)提供了編程狀態(tài)。當(dāng)引腳P3.2(PROG)電平升高后,引腳P3.1電平下降,表示BUSY,編程結(jié)束后P3.1電平抬高,表示READY(見(jiàn)圖10.4所示時(shí)序)。利用查詢?cè)摖顟B(tài)信息便可確定編程的結(jié)束。
2.校驗(yàn)(讀代碼數(shù)據(jù))
進(jìn)行編程校驗(yàn)時(shí),AT89C2051芯片各引腳作用如圖10.5所示,如果鎖定位LB1和LB2未被編程,則可通過(guò)下述步驟進(jìn)行校驗(yàn):
(1)使RST從“L”變?yōu)椤癏”,地址計(jì)數(shù)器復(fù)位000H;
(2)提供適當(dāng)?shù)目刂菩盘?hào)(見(jiàn)圖10.4所示時(shí)序),從P1口讀取數(shù)據(jù)與編程寫入數(shù)據(jù)作比較;
(3)給XTAL1施加正脈沖,地址計(jì)數(shù)器加1;
(4)從P1口讀1個(gè)代碼數(shù)據(jù)與編程寫入數(shù)據(jù)作比較;
(5)重復(fù)步驟(3)、(4),直至整個(gè)存儲(chǔ)陣列校驗(yàn)完畢。
3.寫鎖定位
寫鎖定位完成對(duì)閃速存儲(chǔ)器加密。
按前述編程模式表操作:先選擇寫鎖定位模式,然后將RST升至12V,P3.2施加編程脈沖,即可將鎖定位寫入(改變模式選擇P3.3、P3.4、P3.5、P3.7的輸入組合來(lái)實(shí)現(xiàn)鎖定位LB1、LB2的寫入)。不能直接校驗(yàn)鎖定位,要通過(guò)觀察其特性是否被允許來(lái)完成。
4.芯片擦除
當(dāng)編程模式選擇為芯片擦除模式并使P3.2引腳上施加10ms的PROG脈沖后,整個(gè)閃速存儲(chǔ)器(2KB)和2個(gè)鎖定位即可被擦除。擦除后,存儲(chǔ)器陣列全為FFH。
5.讀特征字節(jié)
特征字節(jié)表示AT89C系列芯片的基本特性,由3或4字節(jié)組成,存儲(chǔ)于程序存儲(chǔ)區(qū)的低端。AT89C2051芯片的特征字節(jié)位于地址000H、001H、002H中,當(dāng)選擇讀特征字節(jié)模式(P3.3=P3.4=P3.5=P3.7=“L”)并采用類似校驗(yàn)步驟讀取數(shù)據(jù)時(shí),即可獲得AT89C2051芯片的特征字:
(000H)=1EH表示該產(chǎn)品由Atmel生產(chǎn);
(001H)=21H表示是89C2051/89C1051;
(002H)=FFH表示12V編程。