51单片机看门狗软件设计
一、设计原理形容荒凉的成语
单片机中有两个定时器,我们可以用这两个定时器来对主程序的运行进行监控。可以对T1设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。
写冬天的诗二、设计方案
1、看门狗定时器T1的设置。在初始化程序块中设置T1的工作方式,并开启中断和计数功能。系统Fosc=12 MHz,T1为16位计数器,最大计数值为65 535,T1输入计数频率是.Fosc/12,溢出周期为(65 535+1)/1=65 536(μs)。
2、计算主控程序循环一次的耗时。考虑系统各功能模块及其循环次数,系统设置"看门狗"定时器T1计时50 ms (T1的初值为65 536-50000=15 536=3CB0H)。主控程序的每次循环都将
刷新T1的初值。如程序进入"死循环"而T1的初值在50 ms内未被刷新,这时"看门狗"定时器T1将溢出并申请中断。溢出中断服务程序开始工作,将看门狗标志num加1。当num的值等于100时,说明看门狗定时器已经计时5s,此时,单片机I/O端口P1.0输出高电平,对程序进行复位。
3.、在此过程中,喂狗代码将被穿插于程序中循环体末尾。当循环体结束时,喂狗代码执行,关闭定时器1、清空num并重新初始化定时器设置。若循环体进入死循环,喂狗代码无法执行,num将一直累加至100,此时程序复位。
三、关键代码
住房商业贷款 “看门狗“定时器设置程序代码如下:
TMOD=0x10; //设置TMOD寄存器,定时器1设为方式1
TL1=0xB0; //设置定时器初值低8位
TH1=0x3C; //设置定时器初值高8位,设置为计时50msqq飞车防沉迷
ET1=1; //开定时器1溢出中断
EA=1; //开总中断控制
TF1=0; //定时器1溢出中断标志清零
TR1=1; //开定时器1
溢出中断服务程序代码如下:
void int_T1() interrupt 3 using 3 //定时器1溢出中断服务程序
{
num++; //每溢出一次标志加1
if (num==100) //当标志等于100时,即计时5s
{
P1=~(0x01); //P1.0输出1
}
}
喂狗程序代码如下:
祭拜TR1=0; //喂狗代码,关定时器1
TL1=0xB0; //重新设置定时器初值
TH1=0x3C;
择的拼音TF1=0; //定时器1溢出中断标志清零
TR1=1; //开定时器1
四、电路图
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论