89C51單片機(jī)共有復(fù)位、程序執(zhí)行、低功耗以及編程和校驗(yàn)等四種工作方式。
1.復(fù)位方式
(l)復(fù)位操作復(fù)位是單片機(jī)的初始化操作,其主要功能是把PC初始化為OOOOH,使單片機(jī)從0000H單元開始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為擺脫困境,也需按復(fù)位鍵以重新啟動(dòng)。
除PC之外,復(fù)位操作還對(duì)其它一些特殊功能寄存器有影響,它們的復(fù)位狀態(tài)如上表所示。
復(fù)位操作還對(duì)單片機(jī)的個(gè)別引腳信號(hào)有影響。例如在復(fù)位期間,ALE和信號(hào)變?yōu)闊o效狀態(tài),即ALE=LPSEN=1。(2)復(fù)位信號(hào)及其產(chǎn)生
①?gòu)?fù)位信號(hào)
RST引腳是復(fù)位信號(hào)的輸入端,復(fù)位信號(hào)是高電平有效,其有效時(shí)間應(yīng)持續(xù)24個(gè)振蕩脈沖周期(即兩個(gè)機(jī)器周期)以上,若使用頻率為6MHz的晶振,則復(fù)位信號(hào)持續(xù)時(shí)間應(yīng)超過4μs才能完成復(fù)位操作;產(chǎn)生復(fù)位信號(hào)的電路邏輯如下圖所示。
整個(gè)復(fù)位電路包括芯片內(nèi)外兩部分。外部電路產(chǎn)生的復(fù)位信號(hào)(RST)送施密特觸發(fā)器,再由片內(nèi)復(fù)位電路在每個(gè)機(jī)器周期的S5P2時(shí)刻對(duì)施密特觸發(fā)器的輸出進(jìn)行采樣。然后才得到內(nèi)部復(fù)位操作所需要的信號(hào)。
②復(fù)位方式復(fù)位操作有上電自動(dòng)復(fù)位、按鍵手動(dòng)復(fù)位和外部脈沖復(fù)位三種方式,示于下圖中。
上電自動(dòng)復(fù)位是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的,其電路如上圖(a)所示。這樣,只要電源VCC的上升時(shí)間不超過1ms,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位,即接通電源就完成了系統(tǒng)的復(fù)位初始化。按鍵電平復(fù)位是通過使復(fù)位端經(jīng)電阻與Vcc電源接通而實(shí)現(xiàn)的,其電路如上圖(b)所示。而按鍵復(fù)位電路圖中的電阻電容參數(shù)適宜于6MHz晶振,能保證復(fù)位信號(hào)高電平持續(xù)時(shí)間大于2個(gè)機(jī)器周期。外部脈沖復(fù)位是由外部提供一個(gè)復(fù)位脈沖。此復(fù)位脈沖應(yīng)保持寬度大于兩個(gè)機(jī)器周期,如上圖(c)所示。復(fù)位脈沖過后,由內(nèi)部下拉電阻保證RST端的低電平。
2.程序執(zhí)行方式
程序執(zhí)行方式是單片機(jī)的基本工作方式。由于復(fù)位后PC=0000H,因此程序執(zhí)行總是從地址0000H開始的。但一般程序并不是真正從0000H開始,為此就得在0000H開始的單元中存放一條無條件轉(zhuǎn)移指令,以便跳轉(zhuǎn)到實(shí)際程序的人口去執(zhí)行。
3.低功耗工作方式
80C51有兩種低功耗方式,即待機(jī)方式和掉電保護(hù)方式。待機(jī)方式和掉電保護(hù)方式時(shí)所涉及的硬件如上圖所示。待機(jī)方式和掉電方式都是由電源控制寄存器(PCON)的有關(guān)位來控制的。電源控制寄存器(PCON)寄存器是一個(gè)逐位定義的8位寄存器,其格式如下:
其中:SMOD為波特率倍增位,在串行通信時(shí)使用;CF1為
通用標(biāo)志位1;GF0為通用標(biāo)志位0;PD為掉電方式位,PD=l,則進(jìn)入掉電方式;IDL為待機(jī)方式位,IDL=1,則進(jìn)入待機(jī)方式。要想使單片機(jī)進(jìn)入待機(jī)或掉電工作方式,只要執(zhí)行一條能使IDL或PD位為1的指令就可以了。
(1)待機(jī)方式
④待機(jī)方式的進(jìn)入如果使用指令使PCON寄存器IDL位置1,則89C51即進(jìn)入待機(jī)方式。這時(shí)振蕩器仍然運(yùn)行,并向中斷邏輯、串行口和定時(shí)器/計(jì)數(shù)器電路提供時(shí)鐘,但向CPU提供時(shí)鐘的電路被阻斷,因此CPU不能工作,而中斷功能繼續(xù)存在,但與CPU有關(guān)的如SP、PC、PSW、ACC以及全部通用寄存器都被“凍結(jié)”在原狀態(tài)。
②待機(jī)方式的退出
采用中斷方法退出待機(jī)方式。在待機(jī)方式下,若引入一個(gè)外中斷請(qǐng)求信號(hào),在單片機(jī)響應(yīng)中斷的同時(shí),PCON.0位(即PD位)被硬件自動(dòng)清0,單片機(jī)就退出待機(jī)方式而進(jìn)入正常工作方式。在中斷服務(wù)程序中只需安排一條RETI指令,就可以使單片機(jī)恢復(fù)正常工作后,返回?cái)帱c(diǎn)繼續(xù)執(zhí)行程序。
(2)掉電保護(hù)方式
①掉電保護(hù)方式的進(jìn)入
PCON寄存器的PD位控制單片機(jī)進(jìn)入掉電保護(hù)方式。當(dāng)80C51單片機(jī)在檢測(cè)到電源故障時(shí),除進(jìn)行信息保護(hù)外,還應(yīng)把PCON.I位置“1”,使之進(jìn)入掉電保護(hù)方式。此時(shí)單片機(jī)一切工作都停止,只有內(nèi)部RAM單元的內(nèi)容被保存。
②掉電保護(hù)方式的退出89C51單片機(jī)備用電源由Vcc端引入。當(dāng)Vcc恢復(fù)正常后,只要硬件復(fù)位信號(hào)維持l0ms,即能使單片機(jī)退出掉電保護(hù)方式。在待機(jī)和掉電方式期間引腳的狀態(tài)見下表。
4.編程方式
89C51片內(nèi)有4K字節(jié)的FlashROM代碼存儲(chǔ)器陣列。有低電壓編程和高電壓編程(12V)兩種模式。低電壓編程狀態(tài)為用戶在系統(tǒng)中編程89C51提供了一個(gè)方便的途徑,而高電壓編程(12V)模式與一般常規(guī)的Flash或EPROM編程器兼容。
(1)閃速存儲(chǔ)器編程方式上表列出了89C51閃速存儲(chǔ)器的編程、校驗(yàn)、寫鎖定位及讀芯片標(biāo)記時(shí)的邏輯電平。89C51的存儲(chǔ)器原碼陣列在以上兩種編程狀態(tài)都是一個(gè)字節(jié)編程。如果Flash存儲(chǔ)器不空,整個(gè)存儲(chǔ)器必須在片擦除狀態(tài)下擦空。元的內(nèi)容被保存。②掉電保護(hù)方式的退出89C51單片機(jī)備用電源由Vcc端引入。當(dāng)Vcc恢復(fù)正常后,只要硬件復(fù)位信號(hào)維持l0ms,即能使單片機(jī)退出掉電保護(hù)方式。在待機(jī)和掉電方式期間引腳的狀態(tài)見表4。
4.編程方式
89C51片內(nèi)有4K字節(jié)的FlashROM代碼存儲(chǔ)器陣列。有低電壓編程和高電壓編程(12V)兩種模式。低電壓編程狀態(tài)為用戶在系統(tǒng)中編程89C51提供了一個(gè)方便的途徑,而高電壓編程(12V)模式與一般常規(guī)的Flash或EPROM編程器兼容。
(1)閃速存儲(chǔ)器編程方式上表列出了89C51閃速存儲(chǔ)器的編程、校驗(yàn)、寫鎖定位及讀芯片標(biāo)記時(shí)的邏輯電平。89C51的存儲(chǔ)器原碼陣列在以上兩種編程狀態(tài)都是一個(gè)字節(jié)編程。如果Flash存儲(chǔ)器不空,整個(gè)存儲(chǔ)器必須在片擦除狀態(tài)下擦空。
(2)閃速存儲(chǔ)器編程
①編程算法在編程89C51之前,地址、數(shù)據(jù)、控制信號(hào)必須按上表和上圖(a)、(b)設(shè)置。編程89C51有以下步驟:(a)在地址線上輸入存儲(chǔ)器地址。(b)在數(shù)據(jù)線上輸入正確數(shù)據(jù)。(c)如上圖所示的、正確的控制信號(hào)組合。(d)對(duì)于高電壓編程模式,將EA的反/Vpp升至12V。(e)向ALE/PROG的反給出一個(gè)編程脈沖。字節(jié)寫周期,由自己定時(shí),一般不超過1.5ms。(f)改變地址和數(shù)據(jù),重復(fù)(a)~(e)步,直到所有目的文件(OBJ文件)結(jié)束。
②數(shù)據(jù)查詢(DataPolling)89C51具備通過數(shù)據(jù)查詢來檢測(cè)寫循環(huán)結(jié)束的特性。在寫周期期間,若試圖讀取剛寫入的字節(jié),則將在P0.7引腳上得到寫入數(shù)據(jù)的反碼。一旦寫周期完成,所有輸出上將出現(xiàn)剛寫入的真實(shí)數(shù)據(jù),于是可以開始下輪循環(huán)。在寫周期啟動(dòng)后,數(shù)據(jù)查詢可在任何時(shí)候開始。
③準(zhǔn)備好/忙(RDY/BSY的反)字節(jié)編程的進(jìn)程也可以通過RDY/BSY輸出信號(hào)檢測(cè)。如上圖所示,編程期間ALE/PRO的反升為高電平后,P3.4引腳被拉成低電平,表示BUS;而當(dāng)編程完成后又被拉高電平,表示READY。
④編程校驗(yàn)如果鎖定位LB1和LB2沒有被編程,代碼數(shù)據(jù)可經(jīng)由數(shù)據(jù)線讀回,用來校驗(yàn)。鎖定位不能直接被校驗(yàn),其校驗(yàn)只有通過觀察其特性是否被允許而間接得到證實(shí)。
⑤芯片擦除整個(gè)EPROM陣列和三個(gè)鎖定位的電擦除可通過正確的控制信號(hào)組合,并保持ALE/PROG的反引腳處于低電平l0ms來完成。在芯片擦操作中,代碼陣列全被寫“1”。且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程之前,必須首先執(zhí)行擦除操作。
⑥讀特征字節(jié)特征字節(jié)的讀取步驟和區(qū)域030H、031H、032H的標(biāo)準(zhǔn)校驗(yàn)步驟相似,所不同的是P3.6和P3.7必須為邏輯低電平,返回值如下所示:(030H)=1EH表示AT-MEL生產(chǎn),(031H)=51H表示89C51,(032H)=FFH表示12V編程,(032H)=05H表示5V編程。
(3)程序鎖定位的功能和編程89C51片內(nèi)含有三個(gè)鎖定位,但是不含密碼陣列??梢圆痪幊?U)也可以編程(P)以獲得一些附加特性,如上表所示為89C51程序鎖定位不同的編程狀況及其特點(diǎn)。當(dāng)?shù)谝患?jí)加密時(shí),EA的反邏輯電壓被取樣并鎖存。在復(fù)位期間,如果器件為上電而不是復(fù)位,鎖存器內(nèi)容初始化為一個(gè)隨機(jī)值,直到復(fù)位操作結(jié)束。鎖定位的編程方法可參照表5的邏輯電平進(jìn)行。
評(píng)論
查看更多