久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7844|回復(fù): 19
收起左側(cè)

有關(guān)單片機(jī)看門狗問題請(qǐng)教大神

[復(fù)制鏈接]
ID:108715 發(fā)表于 2017-3-22 21:26 來自手機(jī) | 顯示全部樓層 |閱讀模式
我的是stc12c5608ad單片機(jī)。官方手冊(cè)只有匯編例程,沒有c語言的。網(wǎng)上例程也很少,以下例程我想移植到5608單片機(jī)上,因?yàn)榕c傳統(tǒng)8051速度不一樣,所以請(qǐng)問大神怎么設(shè)置。還有我看到有些例程的sfr不是0xA6,這個(gè)是不是不統(tǒng)一,修改有什么規(guī)律?還有我不用for循環(huán)執(zhí)行i++  500次,喂狗程序怎么改?

另外激活看門狗這個(gè)=0x1e和0xe1怎么定義的,代表什么?為什么是1e和e1?
第一次接觸看門狗,資料好少,不知道怎么下手。求高手幫忙。


/*-----------------------------------------------
  名稱:看門狗溢出實(shí)驗(yàn)
  編寫:shifang
  日期:2009.5
  修改:無
  內(nèi)容:通過按鍵模擬看門狗溢出
------------------------------------------------*/
#include<reg52.h>

sfr  WDTRST  =   0xA6;                                 

sbit key = P3^1;                 

/*------------------------------------------------
                    喂狗
------------------------------------------------*/
void Rst_Watchdog( void )
{
        WDTRST  = 0x1E; //先賦值1E 然后賦值E1
    WDTRST  = 0xE1;
}

/*------------------------------------------------
                    主函數(shù)
------------------------------------------------*/
void main( void )
{
        int i;
                                    // 設(shè)置看門狗時(shí)間為1個(gè)時(shí)鐘循環(huán)后
        Rst_Watchdog();
                                         //關(guān)看門狗一個(gè)時(shí)鐘循環(huán)
        for( i = 0; i < 500; i++)
        {
                Rst_Watchdog();               
        }
    P1=0x00;
        while(!key)                 //按下按鍵不松開,表示程序一直在按鍵處循環(huán),
                                //并用LED顯示0x55
        {
         P1=0x55;                         //模擬出錯(cuò) 正常情況應(yīng)該一直顯示LED,
                                //但是加看門狗之后不間斷復(fù)位,倒是LED閃爍
        }
}
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-3-23 02:32 | 顯示全部樓層
看stc12c5608ad的手冊(cè)
回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2017-3-23 08:07 | 顯示全部樓層
stc12c5608ad的狗的地址是0E1H吧?
回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2017-3-23 08:08 | 顯示全部樓層
使用看門狗要看手冊(cè)的。
回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2017-3-23 08:23 | 顯示全部樓層
看了手冊(cè)和頭文件,我也糊涂了:
//--------------------------------------------------------------------------------
//新一代 1T 8051系列 單片機(jī)看門狗定時(shí)器特殊功能寄存器
sfr WDT_CONTR = 0xC1; //Watch-Dog-Timer Control register
//                                      7     6     5      4       3      2   1   0     Reset Value
//                                  WDT_FLAG  -  EN_WDT CLR_WDT IDLE_WDT PS2 PS1 PS0    xx00,0000
//-----------------------

//--------------------------------------------------------------------------------

捕獲.JPG
回復(fù)

使用道具 舉報(bào)

ID:169871 發(fā)表于 2017-3-23 11:03 | 顯示全部樓層
要軟件喂狗
回復(fù)

使用道具 舉報(bào)

ID:108715 發(fā)表于 2017-3-24 19:50 來自手機(jī) | 顯示全部樓層
yzwzfyz 發(fā)表于 2017-3-23 02:32
看stc12c5608ad的手冊(cè)

問題是官網(wǎng)下的手冊(cè)只有匯編的沒有C的,匯編的看不懂不會(huì)。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-3-24 22:01 | 顯示全部樓層
所謂看門狗,就是一個(gè)“偽”獨(dú)立于單片機(jī)的一個(gè)計(jì)數(shù)器。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-3-24 22:03 | 顯示全部樓層
起動(dòng)它就是將它的連接開關(guān)接通,實(shí)現(xiàn)的方法“通常”是將特殊寄存器中的某個(gè)位置1(不排除有其它大同小異的方式)。實(shí)際就是將其CLK與接通(有的是系統(tǒng)時(shí)鐘,有的是獨(dú)立的振蕩器,與CPU的硬件結(jié)構(gòu)有關(guān))。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-3-24 22:04 | 顯示全部樓層
計(jì)數(shù)器計(jì)數(shù)之前,總是要先預(yù)置一個(gè)起始的數(shù)字吧(不置就會(huì)默認(rèn)一個(gè)數(shù)),這個(gè)數(shù)就是看門狗的動(dòng)作時(shí)間。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-3-24 22:05 | 顯示全部樓層
如果沒有對(duì)計(jì)數(shù)器進(jìn)行干預(yù),計(jì)數(shù)器必計(jì)滿的時(shí)候,并溢出一個(gè)信號(hào),看門狗的這個(gè)溢出信號(hào)是通過一個(gè)“開關(guān)”與CPU的復(fù)位連在一起的。
如果這個(gè)開關(guān)是開通的(通常它也是特殊寄存器中的某個(gè)位置),也就是你允許了看門狗工作。溢出時(shí),單片機(jī)就被看門狗復(fù)位了。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-3-24 22:07 | 顯示全部樓層
也就是:當(dāng)你允許看門狗工作(將溢出與CPU的RESET連接),并起動(dòng)看門狗之后(將CLK接通),過一段時(shí)間,CPU將被復(fù)位就是必然的了!
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-3-24 22:13 | 顯示全部樓層
這時(shí)你有沒有阻止看門狗(計(jì)數(shù)器)溢出,不讓它復(fù)位單片機(jī)的辦法呢?
理論上沒有,但卻有一個(gè)辦法延長它的溢出時(shí)間,就是在看門狗溢出之前,改小計(jì)數(shù)器的數(shù)字,讓它遠(yuǎn)離計(jì)滿,最簡單常用的方法就是重新將初始值付于看門狗。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-3-24 22:15 | 顯示全部樓層
使用看門狗復(fù)位成初始值的動(dòng)作,就叫“喂狗”,明顯,只要給計(jì)數(shù)器一個(gè)SET脈沖即可!CPU做這件事的方法是向看門狗與一個(gè)數(shù)(發(fā)一個(gè)脈沖)。為了防止誤操作,故意要求寫兩個(gè)字節(jié)。
至于為什么是“1e和e1”呢?其實(shí)不是它也可以,你來給個(gè)數(shù)字,不過你給了以后,我也會(huì)這樣來問你!總要給一個(gè)吧,它是設(shè)計(jì)看門狗的設(shè)計(jì)師定的。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-3-24 22:22 | 顯示全部樓層
可見,喂狗,只能暫時(shí)阻止看門狗復(fù)位單片機(jī),但不能徹底阻止它復(fù)位單片機(jī)。
人們利用這個(gè)特點(diǎn)達(dá)成了以下目的:
如果在看門狗溢出之前喂狗,就能阻止它復(fù)位單片機(jī)。一但不喂狗了(程序“跑飛”,走不到喂狗程序),CPU過一段時(shí)間必被看門狗復(fù)位!就可以將“跑飛”的程序,“拉回來”。
回復(fù)

使用道具 舉報(bào)

ID:183272 發(fā)表于 2017-3-25 13:33 | 顯示全部樓層
太難了


回復(fù)

使用道具 舉報(bào)

ID:183290 發(fā)表于 2017-3-25 13:51 | 顯示全部樓層
有源碼沒?
回復(fù)

使用道具 舉報(bào)

ID:103038 發(fā)表于 2017-3-25 14:57 | 顯示全部樓層

《新概念51單片機(jī)C語言教程》里面有詳細(xì)的看門狗范例,是C語言寫的,寫的挺詳細(xì)的。
回復(fù)

使用道具 舉報(bào)

ID:182429 發(fā)表于 2017-3-25 20:30 | 顯示全部樓層
我用過其他單片機(jī),喂狗時(shí)是寫入0x5A,0xA5的,可設(shè)定喂狗周期,兩個(gè)周期沒喂就會(huì)RESET。當(dāng)軟件有BUG或靜電干擾時(shí)有可會(huì)死機(jī)然后兩周期沒喂狗之后RESET。
0x5A,0xA5可能是單片機(jī)設(shè)計(jì)時(shí)定下來的。
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2017-3-26 14:25 | 顯示全部樓層
  1. /*-----------------------------------------------
  2.   名稱:看門狗溢出實(shí)驗(yàn) 按鍵不停喂狗
  3.   內(nèi)容:通過按鍵喂狗防止溢出復(fù)位 看門狗演示程序  
  4.         在16383個(gè)機(jī)器周期內(nèi)必須至少喂狗一次
  5.         標(biāo)準(zhǔn)AT89s52單片機(jī)試驗(yàn)通過。
  6. ------------------------------------------------*/
  7. #include <reg52.h>

  8. sfr WDTRST = 0xE1;

  9. sbit  K1 = P3^0;
  10. sbit  K2 = P3^1;
  11. sbit  LED1=P1^1;
  12. sbit  LED2=P1^2;

  13. void DelayUs2x(unsigned char t);//us級(jí)延時(shí)函數(shù)聲明
  14. void DelayMs(unsigned char t); //ms級(jí)延時(shí)
  15. /*------------------------------------------------
  16.                     主函數(shù)
  17. ------------------------------------------------*/
  18. main()
  19. {
  20.    LED1=0;
  21.    DelayMs(100);
  22.    LED1=1;
  23.    DelayMs(100);

  24.    TMOD=0x01;
  25.    TH0=0xc6;      //定時(shí)16ms
  26.    TL0=0x66;
  27.    EA=1;
  28.    ET0=1;

  29.    WDTRST=0x1e;   //在程序初始化中激活看門狗。
  30.    WDTRST=0xe1;   //先送1E,后送E1

  31.    if(K1==0)
  32.    {
  33.      TR0=1;
  34.    }

  35.    while(1)
  36.    {   
  37.      if(K2==0)
  38.      {
  39.        TR0=0;
  40.      }
  41.          LED2=1;
  42.          LED1=1;
  43.          DelayMs(100);
  44.          LED2=0;
  45.          DelayMs(100);
  46.    }
  47. }
  48. /*------------------------------------------------
  49.               定時(shí)器中斷函數(shù)
  50. ------------------------------------------------*/
  51. void Time0(void) interrupt 1
  52. {
  53.    TH0=0xc6;      //定時(shí)16ms
  54.    TL0=0x66;

  55.    WDTRST=0x1e;   //喂狗指令
  56.    WDTRST=0xe1;
  57. }

  58. /*------------------------------------------------
  59. uS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
  60. unsigned char 是定義無符號(hào)字符變量,其值的范圍是
  61. 0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編,大致延時(shí)
  62. 長度如下 T=tx2+5 uS
  63. ------------------------------------------------*/
  64. void DelayUs2x(unsigned char t)
  65. {   
  66. while(--t);
  67. }
  68. /*------------------------------------------------
  69. mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
  70. unsigned char 是定義無符號(hào)字符變量,其值的范圍是
  71. 0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編
  72. ------------------------------------------------*/
  73. void DelayMs(unsigned char t)
  74. {
  75.      
  76. while(t--)
  77. {
  78.      //大致延時(shí)1mS
  79.      DelayUs2x(245);
  80.          DelayUs2x(245);
  81. }
  82. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99久久国产综合精品麻豆 | h在线观看| 狠狠操婷婷 | 亚洲毛片在线观看 | 龙珠z国语版在线观看 | 欧美综合在线观看 | 欧美精品在线播放 | 粉嫩高清一区二区三区 | 国产精品免费小视频 | 国产高清av免费观看 | 亚洲成av人片在线观看无码 | 97国产精品 | 欧美精品一区三区 | 亚洲午夜精品一区二区三区 | 日韩在线电影 | 欧洲精品在线观看 | 男女羞羞免费视频 | 日韩精品在线一区 | 免费观看黄色片视频 | 亚洲h在线观看 | 日本黄色大片免费 | 国产精品久久久久久久久久免费看 | 欧美黄 片免费观看 | 国产视频第一页 | 99精品久久久久 | 国产精品视频久久久 | 一区二区三区韩国 | 四虎永久免费在线 | 国产精品成人一区二区三区 | 久久九精品 | 日韩精品专区在线影院重磅 | 黑人中文字幕一区二区三区 | 国产精品一区二区三区免费观看 | 在线激情视频 | 91久久精品国产 | 欧美三级在线 | 成人精品视频在线观看 | 亚洲精品一区二三区不卡 | 日韩av手机在线观看 | 国产黄色大片 | 国产精品99久久久久久久久 |