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