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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 89S51系列單片機(jī)自帶看門(mén)狗的用法

          89S51系列單片機(jī)自帶看門(mén)狗的用法

          作者: 時(shí)間:2012-12-05 來(lái)源:網(wǎng)絡(luò) 收藏

          在ATMEL的的89S51與89C51功能相同。指令兼容。HEX程序無(wú)需任何轉(zhuǎn)換可以
          直接使用。89S51只比89C51增加了一個(gè)看門(mén)狗功能。89S51的其它功能可以參見(jiàn)89C51的資料
          。
          看門(mén)狗具體使用方法如下:
          在程序初始化中向看門(mén)狗寄存器(WDTRST地址是0A6H)中先寫(xiě)入01EH,再寫(xiě)入0E1H。即可激
          活看門(mén)狗。
          Org 0000
          Ljmp begin
          Begin:
          Mov 0A6H,#01EH ;先送1E
          Mov 0A6H,#0E1H ;后送E1
          ;在程序初始化中激活看門(mén)狗。
          ……
          ……
          For:
          ……
          Mov 0A6H,#01EH ;先送1E
          Mov 0A6H,#0E1H ;后送E1
          ;喂狗指令
          ……
          Ljmp for
          在C語(yǔ)言中要增加一個(gè)聲明語(yǔ)句。
          在AT89X51.h聲明文件中增加一行 sfr WDTRST = 0xA6;
          Main()
          {
          WDTRST=0x1E;
          WDTRST=0xE1;//初始化看門(mén)狗。
          While (1)
          {
          WDTRST=0x1E;
          WDTRST=0xE1;//喂狗指令
          }
          }
          注意事項(xiàng):
          1. 89S51的看門(mén)狗必須由程序激活后才開(kāi)始工作。所以必須保證CPU有可靠的上電復(fù)位。
          否則看門(mén)狗也無(wú)法工作。
          2. 看門(mén)狗使用的是CPU的晶振。在晶振停振的時(shí)候看門(mén)狗也無(wú)效。
          3. 89S51只有14位計(jì)數(shù)器。在16383個(gè)機(jī)器周期內(nèi)必須至少喂狗一次。而且這個(gè)時(shí)間是固
          定的,無(wú)法更改。當(dāng)晶振為12M時(shí)每16個(gè)毫秒需喂狗一次。
          以上程序我已調(diào)試通過(guò)。還利用定時(shí)器把看門(mén)狗的喂狗時(shí)間延長(zhǎng)幾秒至幾分鐘!



          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();