<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機的狀態(tài)遷移與復位操作

單片機的狀態(tài)遷移與復位操作

——
作者:華北電力大學(xué) 李聰聰 河北通信職業(yè)技術(shù)學(xué)院 李學(xué)海 時(shí)間:2007-09-06 來(lái)源:?jiǎn)纹瑱C與嵌入式系統應用 收藏
本文以經(jīng)典的80C51為例,利用工作狀態(tài)及其狀態(tài)遼移的新概念、新觀(guān)點(diǎn)和新方法,揭示一些運作的內在規律,對于學(xué)習者和應用開(kāi)發(fā)者具有一定的啟迪作用和實(shí)際意義。

  1 單片機的工作狀態(tài)及其狀態(tài)

  80C51單片機的各種活動(dòng),可以描述成多個(gè)不同的工作狀態(tài)或工作模式。這里利用筆者構思的一個(gè)單片機工作狀態(tài)圖(如圖1所示)來(lái)說(shuō)明。不過(guò),這里重點(diǎn)關(guān)注的是狀態(tài)。

單片機的工作狀態(tài)及其狀態(tài)遷移

  經(jīng)過(guò)仔細分析之后,從圖1中可以看出:

 ?、?把單片機經(jīng)歷的所有生存狀態(tài)歸納和描繪成5個(gè)狀態(tài)--1個(gè)非工作狀態(tài)(即無(wú)電狀態(tài))和4個(gè)工作狀態(tài)。

 ?、?只有狀態(tài)是一個(gè)暫態(tài),其他均為穩態(tài);并且每次單片機進(jìn)入正常運行狀態(tài)時(shí),都要經(jīng)歷一次狀態(tài)。

 ?、?只有在正常運行狀態(tài)(這里記作NORMAL)下,單片機才按照程序存儲器中固化的用戶(hù)程序按部就班地一步一步執行,從而完成開(kāi)發(fā)者設計的各項任務(wù)。

 ?、?停機狀態(tài)(或PD模式)和待機狀態(tài)(或IDL模式),主要是為節能降耗而規劃的節電狀態(tài)(或稱(chēng)"睡眠狀態(tài)")。

 ?、?從無(wú)電狀態(tài)離開(kāi)的唯一條件就是上電,并且唯一能夠到達的是一個(gè)暫態(tài)--復位

狀態(tài)。

 ?、?復位狀態(tài)以外的4個(gè)狀態(tài)都有到復位狀態(tài)的途徑,只是導致遷移的條件不盡相同。

 ?、?無(wú)電狀態(tài)之外的4個(gè)工作狀態(tài),都可能因為隨時(shí)斷電而導致單片機進(jìn)入"無(wú)電狀態(tài)"。

 ?、?從另外3個(gè)工作狀態(tài)遷移到復位狀態(tài),基本都是依靠外部引腳RST上的復位信號。原始復位源比較單一,這是因為傳統80C51的復位邏輯相對簡(jiǎn)單。如果想增加"電源欠壓復位"和"看門(mén)狗復位"等其他復位源,則需要片外擴充獨立電路來(lái)實(shí)現。

 ?、?標準80C51沒(méi)有設計"軟件復位"功能,如果需要該功能,可以通過(guò)用戶(hù)程序自行實(shí)現。不同的是,軟件復位不會(huì )令CPU經(jīng)歷一次復位狀態(tài)。

  2 復位源、復位操作和復位狀態(tài)

    像數字電路中的時(shí)序邏輯電路器件需要具備復位功能一樣,各種類(lèi)型的單片機也都需要具備復位功能(RESET)。復位功能按其英文原意是重新設置的意思,也就是從頭開(kāi)始執行程序,或者重新從頭執行程序(Restart)的意思。復位是單片機的一項重要操作內容,其目標是確保單片機運行過(guò)程有一個(gè)良好的開(kāi)端,確保單片機運行過(guò)程中有一個(gè)良好的狀態(tài)。

  需要強調的是:關(guān)于"復位"一詞,它既包含復位活動(dòng)的意思,又包含復位狀態(tài)的意思?;蛘哒f(shuō),復位既是一個(gè)動(dòng)態(tài)的概念(指復位活動(dòng)、復位操作、復位處理或復位過(guò)程等),又是一個(gè)靜態(tài)的概念(指復位狀態(tài)或復位模式等)。

  2.1 常規復位源和擴充復位源

  從現今的技術(shù)高度來(lái)看,標準80C51單片機的復位功能設計得不夠完善,不僅沒(méi)有設置復位標志位寄存器,而且復位源的種類(lèi)也很少。

  所謂"復位源",就是導致或者引起單片機內部復位的源泉。對于當前市場(chǎng)上出現的種類(lèi)比較齊全的單片機,其典型復位源大致可以歸納為以下6種:上電復位、人工復位、電源欠壓復位、看門(mén)狗復位、非法地址復位和軟件復位。這些復位源的特點(diǎn)是:

 ?、?上電復位這一種復位源是必不可少的。因為每次給單片機加電時(shí),其電源電壓的穩定,以及時(shí)鐘振蕩器的起振和振幅穩定,都需要一定的延遲時(shí)間。

 ?、?只有上電復位和人工復位這兩種復位源,是講解80C51單片機的教科書(shū)、技術(shù)文章和文獻資料巾比較常見(jiàn)的。

 ?、?對于電源欠壓復位、看門(mén)狗復位和非法地址復位3種復位源,標準80C51是不具備的,不過(guò)可以額外擴充,可由單片機用戶(hù)根據實(shí)際需要通過(guò)附加一些軟件或硬件的手段來(lái)實(shí)現。

 ?、?雖然電源欠壓復位、看門(mén)狗復位、非法地址復位3種復位源可以額外擴充,但是都必須借助于復位引腳RST來(lái)實(shí)施復位操作或復位鎖定。

 ?、?標準80C51本來(lái)不具備軟件復位功能,但是可以通過(guò)純軟件方式以及虛擬手段,來(lái)實(shí)現或者部分實(shí)現其他單片機的軟件復位。這種方法擴充的軟件復位是一種比較特殊的復位源,一是不通過(guò)RST引腳實(shí)現復位,二是復位操作的內容與眾不同。軟件復位作為一種新技術(shù),目前有越來(lái)越多的新型單片機配備了該功能。例如Philips公司的P87LPC700和P89LPC900系列、TI-BB公司的MSC1200系列、SunPlus公司的SPMC65系列等,內部都設計了專(zhuān)門(mén)用于實(shí)現軟件復位的控制寄存器或者控制位。

    2.2 復位操作的具體內容

  單片機復位功能的實(shí)現過(guò)程實(shí)質(zhì)上就是在單片機內部進(jìn)行一系列的復位操作。在復位期間,單片機內部的復位操作究竟完成了哪些內容,是程序設計人員應該搞清的問(wèn)題,因為單片機復位操作完成之后的內部狀態(tài),就是運行用戶(hù)程序和進(jìn)行軟件處理的背景、基礎和起點(diǎn)。 對80C51單片機來(lái)說(shuō),只有軟件復位的具體內容和影響范圍,是可以由用戶(hù)自由定制的;而凡是直接作用于復位引腳RST上的復位源(如上電復位等),所實(shí)現的復位操作的具體內容和影響范圍都應該是一樣的?,F在歸納如下:

 ?、?程序計數器PC返回到原始狀態(tài)0000H;

 ?、?所有特殊功能寄存器SFR全部還原為復位值(可以查閱技術(shù)手冊);

 ?、?所有通用并行端口(P0、P1、P2和P3)的引腳全部被設置為輸入狀態(tài);

 ?、?清除各級中斷優(yōu)先級的激活觸發(fā)器,以便受理各級中斷請求(在標準80C51中只設置了2個(gè)中斷優(yōu)先級別,而在有些新型兼容產(chǎn)品中設置了4個(gè)級別)。

  2.3 復位狀態(tài)的具體表現

  單片機一旦進(jìn)入復位狀態(tài)并且停留在復位狀態(tài)下(即外接引腳RST被鎖定在有效的高電平上),就會(huì )表現出如下一些具體特征:

  • CPU不再執行程序而保持靜止(凍結)狀態(tài);
  • 各種片內外圍模塊(定時(shí)器、串行口、總線(xiàn)接口、中斷系統等)均停止工作;
  • 各個(gè)并口(P0~P3)的所有口線(xiàn)均對外呈現高阻狀態(tài);
  • 各SFR的內容均恢復到復位值(即返回到知情范圍);
  • 內部RAM內容維持記憶,只要電源電壓不低于最低維持電壓(一般為2 V)就能夠保持原有內容;
  • 內部時(shí)鐘源振蕩器仍然會(huì )維持振蕩,只要電源電壓還在1 V(甚至略低于1 V),振蕩器就能夠維持工作;
  • 各種片外電路(如擴展存儲器、擴展I/O端口或鎖存器等)都應該維持原有內容和狀態(tài)。

  2.4 補充說(shuō)明

  格外值得關(guān)注的是,經(jīng)歷了復位操作之后的各個(gè)并行端口的狀態(tài)。因為端口引腳是單片機聯(lián)系外部世界的、最多的一類(lèi)引腳,其復位狀態(tài)(即初始化狀態(tài))將直接影響外部電路,甚至還會(huì )對外部電路構成威脅或造成損壞。為了避免這種影響或威脅,總是把各條端口引腳復位成"輸人方式"。理由是,輸入方式對外呈現出很高的阻抗,從而有效地防止了可能發(fā)生的過(guò)流損壞。

  任何方式或任何復位源引起的復位操作,都不會(huì )改變RAM區的用戶(hù)數據。甚至就連欠壓復位事件的發(fā)生,只要電源電壓VDD還沒(méi)有跌落到連RAM內容都不能維持的地步(一般以2 V為門(mén)限),就不會(huì )丟失RAM中的用戶(hù)數據。

  3 幾點(diǎn)新啟示

  單片機系統一旦進(jìn)入PD模式(即停機模式,或掉電模式,有時(shí)也稱(chēng)"掉電保護模式"),系統時(shí)鐘源就會(huì )停止工作,CPU以及所有的片載硬件模塊一起退出運行狀態(tài),從而使功耗大幅度降低(可以到達μA級,甚至以下)。

  單片機應用項目開(kāi)發(fā)人員利用停機模式可以達到兩種目的:

 ?、俳档蛦纹瑱C應用系統的總體耗能;

 ?、诘钟娫措妷旱鋾r(shí)可能帶來(lái)的CPU失控,就是一旦發(fā)現電源電壓跌落、欠壓或故障,則強行把單片機推入停機模

式,以免發(fā)生程序混亂。停機期間,即使電源電壓降低到2 V,仍然能夠維持RAM內容不丟失。

  通過(guò)仔細分析圖1可以發(fā)現,當初Intel公司為80C51設置停機模式的主要初衷,應該是基于上述第二種目的。理由是,從圖1中可以看出,常規喚醒方式可以令單片機從PD模式直接返回到NORMAL模式,一般利用特定的中斷源作為喚醒源。不過(guò)對標準80C51來(lái)說(shuō),Intel公司沒(méi)有設計利用中斷源作為喚醒源的途徑,不能不說(shuō)是一種遺憾。

  為了彌補這個(gè)遺憾,一些新型兼容產(chǎn)品(例如Atmel公司的AT89S51/52/53/8252/8253、Philips公司的P89V51RB2/RC2/RD2以及P89LPC900系列等)添加了利用被使能且被設置為用電平觸發(fā)的外部中斷源INT0和INT1來(lái)作為喚醒源,喚醒后的單片機能夠從設置PD=1指令之后的下一條指令恢復運行。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>