<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 在軟件中判斷單片機的冷啟動還是熱啟動

          在軟件中判斷單片機的冷啟動還是熱啟動

          作者: 時間:2013-09-29 來源:網(wǎng)絡(luò) 收藏
            能利用AT89C52本身的資源,在軟件中判斷還是?

            正常工作時在某幾個RAM中置標(biāo)志,啟動時判斷這個標(biāo)志即可,但要注意89C52內(nèi)部RAM在很低的殘余電壓下仍能保持?jǐn)?shù)據(jù),最好在電源上并一適當(dāng)大小的放電電阻。

            所謂“”是指掉電后再啟動,而過程是不掉電的。內(nèi)部RAM在掉電再上電后的值在理論上是隨機的(實際上大多會是0x00或0xff),這樣你可以在某幾個RAM中寫上一些特定的值,例如0x55,0xaa,在啟動時檢查這幾個RAM中的值是否與你預(yù)先寫入的值相等,如相等,表示沒有掉過電,是,否則就是。多設(shè)幾個這樣的標(biāo)志,則隨機因素引起誤判的可能性極小。在PC中就是這樣判斷冷熱啟動的,用了兩個字節(jié)的RAM作標(biāo)志,標(biāo)志值我記得好象是0xAA55

            如果是用C編程,要注意大多數(shù)C編譯器都會在調(diào)用main()之前對RAM進(jìn)行初始化(寫0或程序中指定的初始值),所以要改寫CSTARTUP,或?qū)?biāo)志變量分配在一個特殊的“不初始化段”中(在有些編譯器中叫“NVRAM段”?,對不起,我記不大清楚,請自己查一下編譯器手冊)
          ==============================
          檢查SP的直,如果為07H,這是冷啟動,如為其他直為熱啟動,因為任何一個程序員都不會把堆棧指針放這末低,C51編譯器也一樣.而上電復(fù)位以后,SP=7.
          ================================
          PCON的掉電標(biāo)志POF位,可行。
          ==============================
          占用1個IO口,外接RC,然后讀該IO
          ===============================
            在你的軟件陷阱復(fù)位程序前寫一個標(biāo)志,而冷啟動和看門狗復(fù)位沒這個標(biāo)志,這與在pc上同時按鍵盤上的3個鍵復(fù)位是一樣的。注意啟動完后要清標(biāo)志。

          51單片機相關(guān)文章:51單片機教程


          單片機相關(guān)文章:單片機教程


          單片機相關(guān)文章:單片機視頻教程


          單片機相關(guān)文章:單片機工作原理


          晶振相關(guān)文章:晶振原理


          關(guān)鍵詞: 單片機 冷啟動 熱啟動

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();