找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1937|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

51單片機定時喂狗代碼該怎么寫?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:302293 發(fā)表于 2023-5-9 17:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
     大俠丟幾行代碼,學一下
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:883242 發(fā)表于 2023-5-9 19:12 | 只看該作者
標準的51單片就沒有狗,擴展型的有,具體型號寫法并不一樣,你這話題沒人能接。
回復(fù)

使用道具 舉報

板凳
ID:399179 發(fā)表于 2023-5-9 19:39 來自觸屏版 | 只看該作者
自己的單片機,根據(jù)型號查看一下數(shù)據(jù)手冊,一般都有例程
回復(fù)

使用道具 舉報

地板
ID:302293 發(fā)表于 2023-5-10 08:01 | 只看該作者
Hephaestus 發(fā)表于 2023-5-9 19:12
標準的51單片就沒有狗,擴展型的有,具體型號寫法并不一樣,你這話題沒人能接。

STC89C52RC 的沒有喂狗嗎?
回復(fù)

使用道具 舉報

5#
ID:584814 發(fā)表于 2023-5-10 08:34 | 只看該作者
標準的51單片沒有狗,擴展型或外掛的有,具體型號寫法并不一樣。
這個問題和問你出門要上廁所怎么走一樣 。
回復(fù)

使用道具 舉報

6#
ID:123289 發(fā)表于 2023-5-10 08:40 | 只看該作者
一行命令而矣,手冊上有。懶得也不看書?
關(guān)鍵是將這一句放在何處?
先畫程序流程圖,就知道放何處理合適了。
一般放在大循環(huán)的必由之路上。
回復(fù)

使用道具 舉報

7#
ID:1034262 發(fā)表于 2023-5-10 10:59 | 只看該作者
STC的MCU,喂狗就是一要指令,WDT_CONTR = 某個值;
回復(fù)

使用道具 舉報

8#
ID:155507 發(fā)表于 2023-5-10 13:48 | 只看該作者
sr861126 發(fā)表于 2023-5-10 08:01
STC89C52RC 的沒有喂狗嗎?

STC89C52RC 有喂狗的
我給你來個程序試試

  1. /*-----------------------------------------------
  2.   名稱:看門狗溢出實驗 按鍵不停喂狗
  3.   日期:2009.5
  4.   修改:無
  5.   內(nèi)容:通過按鍵喂狗防止溢出復(fù)位 看門狗演示程序  
  6.         在16383個機器周期內(nèi)必須至少喂狗一次
  7.         標準AT89s52單片機試驗通過。
  8. ------------------------------------------------*/
  9. #include <reg52.h>

  10. sfr WDTRST = 0xA6;

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

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

  26.    TMOD=0x01;
  27.    TH0=0xc6;      //定時16ms
  28.    TL0=0x66;
  29.    EA=1;
  30.    ET0=1;

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

  33.    if(K1==0)
  34.    {
  35.      TR0=1;
  36.    }

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

  57.    WDTRST=0x1e;   //喂狗指令
  58.    WDTRST=0xe1;
  59. }

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


回復(fù)

使用道具 舉報

9#
ID:517951 發(fā)表于 2023-5-14 22:51 | 只看該作者
用定時器喂狗不合適吧,主程序跑飛了,但定時器仍舊喂狗,不能復(fù)位系統(tǒng). 應(yīng)該在主程序loop里面加喂狗指令, 程序跑飛,超時不能喂狗重啟系統(tǒng).
回復(fù)

使用道具 舉報

10#
ID:435636 發(fā)表于 2023-5-15 05:21 | 只看該作者
angmall 發(fā)表于 2023-5-10 13:48
STC89C52RC 有喂狗的
我給你來個程序試試

學習了 謝謝分享
回復(fù)

使用道具 舉報

11#
ID:77589 發(fā)表于 2023-5-15 11:14 | 只看該作者
一般都是清除WDG的計數(shù)寄存器,使其不溢出。查看Datasheet,找到對應(yīng)的寄存器,按照其操作方法就OK了!
回復(fù)

使用道具 舉報

12#
ID:1034262 發(fā)表于 2023-5-15 16:26 | 只看該作者
不要在定時器中斷中喂狗,那將是一條寵物狗!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表