📄 key-watchdog.c
字号:
/*******************************************************************
* *
* 单片机开发系统演示程序 - 键控看门狗 *
* *
* P0和P2端口LED显示 *
* *
* 版本: V1.0 (2006/11/20) *
* *
*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
* *
*******************************************************************/
/*
描述:
在16383个机器周期内必须至少喂狗一次。
当晶振为11.0592M时在17毫秒内需喂狗一次。
激活看门狗后,喂狗,P2引脚上的LED闪烁发光
激活看门狗后,如果不喂狗,则复位
P0引脚上的LED闪烁发光
*/
/*********************************************************/
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sfr WDTRST = 0xA6;
sbit K1 = P1^4;
sbit K2 = P1^5;
/*********************************************************
延时函数
晶振:11.0592MHz
*********************************************************/
void delay(unsigned int m)
{
unsigned char i=255;
while(m--)
{
while(i--);
}
}
/*********************************************************
主函数
*********************************************************/
main()
{
P2=0xff;
P0=0x00;
delay(100);
P0=0xff;
delay(100);
TMOD=0x01;
TH0=0xc6; //定时16ms
TL0=0x66;
EA=1;
ET0=1;
WDTRST=0x1e; //在程序初始化中激活看门狗。
WDTRST=0xe1; //先送1E,后送E1
if(K1==0)
{
TR0=1;
}
while(1)
{
if(K2==0)
{
TR0=0;
}
P2=0xff;
P0=0xff;
delay(100);
P2=0x00;
delay(100);
}
}
/*********************************************************/
void Time0(void) interrupt 1
{
TH0=0xc6; //定时16ms
TL0=0x66;
WDTRST=0x1e; //喂狗指令
WDTRST=0xe1;
}
/*********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -