關(guān)于stc51的冷啟動(dòng)下載和復位
有一個(gè)辦法可以給那些需要加電立刻啟動(dòng)的用戶(hù),STC單片機可以設置為加電時(shí)只有P1.0/P1.1為低電平時(shí)開(kāi)始下載程序,否則直接執行用戶(hù)程序。這種辦法快,不用等前面檢測串口的那段時(shí)間 。stc單片機冷啟動(dòng)是必須的而復位電路不是必須的,不管是冷啟動(dòng)還是手動(dòng)啟動(dòng)。也就是想下載程序必須冷啟動(dòng),而有沒(méi)有復位電路無(wú)所謂。但是最小系統板上必須有復位電路,無(wú)論是上電復位,還是上電加手動(dòng)復位,雖然在一些簡(jiǎn)單的程序中看不出區別,但是因為復位操作會(huì )對一些特殊寄存器產(chǎn)生影響,這樣沒(méi)有復位操作的話(huà)再次執行函數的時(shí)候會(huì )出現錯誤。單片機斷電后在通電也會(huì )從主函數處繼續執行,可能是單片機斷電后地址自動(dòng)回到0000H,但是那些特殊寄存器里的值不會(huì )改變。
對于上電復位,貌似電路不會(huì )有電流流過(guò),但是上電瞬間,有一個(gè)給電容充電的過(guò)程,這個(gè)過(guò)程中rst端口會(huì )出現一個(gè)正脈沖,只要該脈沖保持1ms以上就能使單片機復位。
單片機的復位操作使單片機進(jìn)入初始化狀態(tài),其中包括使程序計數器PC=0000H,這表明程序從0000H地址單元開(kāi)始執行。單片機冷啟動(dòng)后,片內RAM為隨機值,運行中的復位操作不改變片內RAM區中的內容,21個(gè)特殊功能寄存器復位后的狀態(tài)為確定值,見(jiàn)下表。
值得指出的是,記住一些特殊功能寄存器復位后的主要狀態(tài),對于了解單片機的初態(tài),減少應用程序中的初始化部分是十分必要的。 說(shuō)明:表中符號*為隨機狀態(tài); A=00H,表明累加器已被清零;
特殊功能寄存器
初始狀態(tài) 特殊功能寄存器
初始狀態(tài) A 00H TMOD 00H B 00H TCON 00H PSW 00H TH0 00H SP 07H TL0 00H DPL 00H TH1 00H DPH
00H
TL1
00H
P0~P3 FFH SBUF 不定 IP ***00000B SCON 00H IE
0**00000B
PCON
0*******B
PSW=00H,表明選寄存器0組為工作寄存器組;
SP=07H,表明堆棧指針指向片內RAM 07H字節單元,根據堆棧操作的先加后壓法則,第一個(gè)被壓入的內容寫(xiě)入到08H單元中;
Po-P3=FFH,表明已向各端口線(xiàn)寫(xiě)入1,此時(shí),各端口既可用于輸入又可用于輸出; IP=×××00000B,表明各個(gè)中斷源處于低優(yōu)先級; IE=0××00000B,表明各個(gè)中斷均被關(guān)斷;
系統復位是任何微機系統執行的第一步,使整個(gè)控制芯片回到默認的硬件狀態(tài)下。51單片機的復位是由RESET引腳來(lái)控制的,此引腳與高電平相接超過(guò)24個(gè)振蕩周期后,51單片機即進(jìn)入芯片內部復位狀態(tài),而且一直在此狀態(tài)下等待,直到RESET引腳轉為低電平后,才檢查EA引腳是高電平或低電平,若為高電平則執行芯片內部的程序代碼,若為低電平便會(huì )執行外部程序。
51單片機在系統復位時(shí),將其內部的一些重要寄存器設置為特定的值,至于內部RAM內部的數據則不變。
評論