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