本文以經(jīng)典的80c51單片機為例,利用工作狀態(tài)及其狀態(tài)遼移的新概念、新觀點和新方法,揭示一些單片機運作的內(nèi)在規(guī)律,對于單片機學習者和應用開發(fā)者具有一定的啟迪作用和實際意義。1 單片機的工作狀態(tài)及其狀態(tài)遷移80c51單片機的各種活動,可以描述成多個不同的工作狀態(tài)或工作模式。這里利用筆者構(gòu)思的一個單片機工作狀態(tài)遷移圖(如圖1所示)來說明。不過,這里重點關(guān)注的是復位狀態(tài)。經(jīng)過仔細分析之后,從圖1中可以看出:
① 把單片機經(jīng)歷的所有生存狀態(tài)歸納和描繪成5個狀態(tài)--1個非工作狀態(tài)(即無電狀態(tài))和4個工作狀態(tài)。 ② 只有復位狀態(tài)是一個暫態(tài),其他均為穩(wěn)態(tài);并且每次單片機進入正常運行狀態(tài)時,都要經(jīng)歷一次復位狀態(tài)。③ 只有在正常運行狀態(tài)(這里記作normal)下,單片機才按照程序存儲器中固化的用戶程序按部就班地一步一步執(zhí)行,從而完成開發(fā)者設(shè)計的各項任務。④ 停機狀態(tài)(或pd模式)和待機狀態(tài)(或idl模式),主要是為節(jié)能降耗而規(guī)劃的節(jié)電狀態(tài)(或稱"睡眠狀態(tài)")。⑤ 從無電狀態(tài)離開的唯一條件就是上電,并且唯一能夠到達的是一個暫態(tài)--復位狀態(tài)。⑥ 復位狀態(tài)以外的4個狀態(tài)都有遷移到復位狀態(tài)的途徑,只是導致遷移的條件不盡相同。⑦ 無電狀態(tài)之外的4個工作狀態(tài),都可能因為隨時斷電而導致單片機進入"無電狀態(tài)"。⑧ 從另外3個工作狀態(tài)遷移到復位狀態(tài),基本都是依靠外部引腳rst上的復位信號。原始復位源比較單一,這是因為傳統(tǒng)80c51的復位邏輯相對簡單。如果想增加"電源欠壓復位"和"看門狗復位"等其他復位源,則需要片外擴充獨立電路來實現(xiàn)。⑨ 標準80c51沒有設(shè)計"軟件復位"功能,如果需要該功能,可以通過用戶程序自行實現(xiàn)。不同的是,軟件復位不會令cpu經(jīng)歷一次復位狀態(tài)。2 復位源、復位操作和復位狀態(tài) 像數(shù)字電路中的時序邏輯電路器件需要具備復位功能一樣,各種類型的單片機也都需要具備復位功能(reset)。復位功能按其英文原意是重新設(shè)置的意思,也就是從頭開始執(zhí)行程序,或者重新從頭執(zhí)行程序(restart)的意思。復位是單片機的一項重要操作內(nèi)容,其目標是確保單片機運行過程有一個良好的開端,確保單片機運行過程中有一個良好的狀態(tài)。需要強調(diào)的是:關(guān)于"復位"一詞,它既包含復位活動的意思,又包含復位狀態(tài)的意思?;蛘哒f,復位既是一個動態(tài)的概念(指復位活動、復位操作、復位處理或復位過程等),又是一個靜態(tài)的概念(指復位狀態(tài)或復位模式等)。2.1 常規(guī)復位源和擴充復位源從現(xiàn)今的技術(shù)高度來看,標準80c51單片機的復位功能設(shè)計得不夠完善,不僅沒有設(shè)置復位標志位寄存器,而且復位源的種類也很少。所謂"復位源",就是導致或者引起單片機內(nèi)部復位的源泉。對于當前市場上出現(xiàn)的種類比較齊全的單片機,其典型復位源大致可以歸納為以下6種:上電復位、人工復位、電源欠壓復位、看門狗復位、非法地址復位和軟件復位。這些復位源的特點是:① 上電復位這一種復位源是必不可少的。因為每次給單片機加電時,其電源電壓的穩(wěn)定,以及時鐘振蕩器的起振和振幅穩(wěn)定,都需要一定的延遲時間。 ② 只有上電復位和人工復位這兩種復位源,是講解80c51單片機的教科書、技術(shù)文章和文獻資料巾比較常見的。③ 對于電源欠壓復位、看門狗復位和非法地址復位3種復位源,標準80c51是不具備的,不過可以額外擴充,可由單片機用戶根據(jù)實際需要通過附加一些軟件或硬件的手段來實現(xiàn)。④ 雖然電源欠壓復位、看門狗復位、非法地址復位3種復位源可以額外擴充,但是都必須借助于復位引腳rst來實施復位操作或復位鎖定。⑤ 標準80c51本來不具備軟件復位功能,但是可以通過純軟件方式以及虛擬手段,來實現(xiàn)或者部分實現(xiàn)其他單片機的軟件復位。這種方法擴充的軟件復位是一種比較特殊的復位源,一是不通過rst引腳實現(xiàn)復位,二是復位操作的內(nèi)容與眾不同。軟件復位作為一種新技術(shù),目前有越來越多的新型單片機配備了該功能。例如philips公司的p87lpc700和p89lpc900系列、ti-bb公司的msc1200系列、sunplus公司的spmc65系列等,內(nèi)部都設(shè)計了專門用于實現(xiàn)軟件復位的控制寄存器或者控制位。2.2 復位操作的具體內(nèi)容單片機復位功能的實現(xiàn)過程實質(zhì)上就是在單片機內(nèi)部進行一系列的復位操作。在復位期間,單片機內(nèi)部的復位操作究竟完成了哪些內(nèi)容,是程序設(shè)計人員應該搞清的問題,因為單片機復位操作完成之后的內(nèi)部狀態(tài),就是運行用戶程序和進行軟件處理的背景、基礎(chǔ)和起點。 對80c51單片機來說,只有軟件復位的具體內(nèi)容和影響范圍,是可以由用戶自由定制的;而凡是直接作用于復位引腳rst上的復位源(如上電復位等),