在軟件中判斷單片機的冷啟動(dòng)還是熱啟動(dòng)
正常工作時(shí)在某幾個(gè)RAM中置標志,啟動(dòng)時(shí)判斷這個(gè)標志即可,但要注意89C52內部RAM在很低的殘余電壓下仍能保持數據,最好在電源上并一適當大小的放電電阻。
所謂“冷啟動(dòng)”是指掉電后再啟動(dòng),而熱啟動(dòng)過(guò)程是不掉電的。單片機內部RAM在掉電再上電后的值在理論上是隨機的(實(shí)際上大多會(huì )是0x00或0xff),這樣你可以在某幾個(gè)RAM中寫(xiě)上一些特定的值,例如0x55,0xaa,在啟動(dòng)時(shí)檢查這幾個(gè)RAM中的值是否與你預先寫(xiě)入的值相等,如相等,表示單片機沒(méi)有掉過(guò)電,是熱啟動(dòng),否則就是冷啟動(dòng)。多設幾個(gè)這樣的標志,則隨機因素引起誤判的可能性極小。在PC中就是這樣判斷冷熱啟動(dòng)的,用了兩個(gè)字節的RAM作標志,標志值我記得好象是0xAA55
如果是用C編程,要注意大多數C編譯器都會(huì )在調用main()之前對RAM進(jìn)行初始化(寫(xiě)0或程序中指定的初始值),所以要改寫(xiě)CSTARTUP,或將標志變量分配在一個(gè)特殊的“不初始化段”中(在有些編譯器中叫“NVRAM段”?,對不起,我記不大清楚,請自己查一下編譯器手冊)
==============================
檢查SP的直,如果為07H,這是冷啟動(dòng),如為其他直為熱啟動(dòng),因為任何一個(gè)程序員都不會(huì )把堆棧指針?lè )胚@末低,C51編譯器也一樣.而上電復位以后,SP=7.
================================
PCON的掉電標志POF位,可行。
==============================
占用1個(gè)IO口,外接RC,然后讀該IO
===============================
在你的軟件陷阱復位程序前寫(xiě)一個(gè)標志,而冷啟動(dòng)和看門(mén)狗復位沒(méi)這個(gè)標志,這與在pc上同時(shí)按鍵盤(pán)上的3個(gè)鍵復位是一樣的。注意啟動(dòng)完后要清標志。
51單片機相關(guān)文章:51單片機教程
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
晶振相關(guān)文章:晶振原理
評論