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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 89S51內(nèi)部看門狗功能的使用方法

          89S51內(nèi)部看門狗功能的使用方法

          作者: 時間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
          在ATMEL的89S51系列的89S51與89C51功能相同。指令兼容。HEX程序無需任何轉(zhuǎn)換可以直接使用。89S51除了可以通過下載線與計算機連接進行在線編程以外,它還比89C51增加了一個內(nèi)部看門狗功能。89S51的其它功能可以參見89C51的資料。

          看門狗具體使用方法如下:

          本文引用地址:http://www.ex-cimer.com/article/201611/317361.htm

          在程序初始化中向看門狗寄存器(WDTRST地址是0A6H)中先寫入01EH,再寫入0E1H。即可激活看門狗。

          ORG 0000

          LJMP begin

          Begin:

          Mov 0A6H,#01EH ;先送1E

          Mov 0A6H,#0E1H ;后送E1

          ;在程序初始化中激活看門狗。

          ……

          ……

          For:

          ……

          Mov 0A6H,#01EH ;先送1E

          Mov 0A6H,#0E1H ;后送E1

          ;喂狗指令

          ……

          Ljmp for

          在C語言中要增加一個聲明語句。

          在AT89X51.h聲明文件中增加一行 sfr WDTRST = 0xA6;

          Main()

          {

          WDTRST=0x1E;

          WDTRST=0xE1;//初始化看門狗。

          While (1)

          {

          WDTRST=0x1E;

          WDTRST=0xE1;//喂狗指令

          }

          }

          注意事項:

          1. 89S51的看門狗必須由程序激活后才開始工作。所以必須保證CPU有可*的上電復(fù)位。否則看門狗也無法工作。

          2. 看門狗使用的是CPU的晶振。在晶振停振的時候看門狗也無效。

          3. 89S51只有14位計數(shù)器。在16382個機器周期內(nèi)必須至少喂狗一次。而且這個時間是固定的,無法更改。當晶振為12M時每16個毫秒需喂狗一次。

          89S52只有13位計數(shù)器。在8191個機器周期內(nèi)必須至少喂狗一次。而且這個時間是固定的,無法更改。當晶振為12M時每8個毫秒需喂狗一次。

          以上程序我已調(diào)試通過。還利用定時器把看門狗的喂狗時間延長幾秒至幾分鐘。



          關(guān)鍵詞: 89S51內(nèi)部看門狗功

          評論


          技術(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); })();