標(biāo)題: 51單片機(jī)定時喂狗代碼該怎么寫? [打印本頁]

作者: sr861126    時間: 2023-5-9 17:49
標(biāo)題: 51單片機(jī)定時喂狗代碼該怎么寫?
     大俠丟幾行代碼,學(xué)一下

作者: Hephaestus    時間: 2023-5-9 19:12
標(biāo)準(zhǔn)的51單片就沒有狗,擴(kuò)展型的有,具體型號寫法并不一樣,你這話題沒人能接。
作者: 快樂眼淚    時間: 2023-5-9 19:39
自己的單片機(jī),根據(jù)型號查看一下數(shù)據(jù)手冊,一般都有例程
作者: sr861126    時間: 2023-5-10 08:01
Hephaestus 發(fā)表于 2023-5-9 19:12
標(biāo)準(zhǔn)的51單片就沒有狗,擴(kuò)展型的有,具體型號寫法并不一樣,你這話題沒人能接。

STC89C52RC 的沒有喂狗嗎?

作者: man1234567    時間: 2023-5-10 08:34
標(biāo)準(zhǔn)的51單片沒有狗,擴(kuò)展型或外掛的有,具體型號寫法并不一樣。
這個問題和問你出門要上廁所怎么走一樣 。
作者: yzwzfyz    時間: 2023-5-10 08:40
一行命令而矣,手冊上有。懶得也不看書?
關(guān)鍵是將這一句放在何處?
先畫程序流程圖,就知道放何處理合適了。
一般放在大循環(huán)的必由之路上。
作者: coody_sz    時間: 2023-5-10 10:59
STC的MCU,喂狗就是一要指令,WDT_CONTR = 某個值;
作者: angmall    時間: 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個機(jī)器周期內(nèi)必須至少喂狗一次
  7.         標(biāo)準(zhǔn)AT89s52單片機(jī)試驗通過。
  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ù)制代碼



作者: rayin    時間: 2023-5-14 22:51
用定時器喂狗不合適吧,主程序跑飛了,但定時器仍舊喂狗,不能復(fù)位系統(tǒng). 應(yīng)該在主程序loop里面加喂狗指令, 程序跑飛,超時不能喂狗重啟系統(tǒng).
作者: chscn    時間: 2023-5-15 05:21
angmall 發(fā)表于 2023-5-10 13:48
STC89C52RC 有喂狗的
我給你來個程序試試

學(xué)習(xí)了 謝謝分享
作者: Longan.Wang    時間: 2023-5-15 11:14
一般都是清除WDG的計數(shù)寄存器,使其不溢出。查看Datasheet,找到對應(yīng)的寄存器,按照其操作方法就OK了!
作者: coody_sz    時間: 2023-5-15 16:26
不要在定時器中斷中喂狗,那將是一條寵物狗!




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1