今天小编要和大家分享的是控制,MCU相关信息,接下来我将从如何用软件实现单片机的系统复位,ps4完胜 看门狗及巫师3次世代版分辨率曝光这几个方面来介绍。

控制,MCU相关技术文章如何用软件实现单片机的系统复位ps4完胜 看门狗及巫师3次世代版分辨率曝光

控制,MCU相关技术文章如何用软件实现单片机的系统复位

在单片机构成的系统中,由于单片机的工作有可能受到来自外来电磁场的干扰而出现程序跑飞的现象,从而陷入死循环,出于对单片机运行状态进行实时性的监控的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称看门狗(watch dog)

看门狗的工作过程如下:

看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过单片机的程序控制,使他定时的往看门狗芯片的这个引脚送入高电平(或者是低电平)这一个程序语句是分散在单片机的其他控制语句中的,一旦单片机由于干扰造成程序跑飞而陷入死循环时,给看门狗引脚送电平的程序便不能被执行到,这时,看门狗电路就会由于得不到单片机送来的信号,便对他送入一个复位信号,使单片机从程序存储器的起始位置重新开始执行程序,这样便实现了单片机的自动复位。

如何用软件实现单片机的系统复位

示例代码:

用软件观察看门狗的喂狗现象:如果在while循环中屏蔽这一局,那么在看门狗的作用下,程序将会不断

//不断的复位,这是看到的现象是在看门狗的作用下,led灯不断的闪烁

#include

#define uchar unsigned char

#define uint unsigned int

sfr WDT_CONTR = 0xe1;//51系列的单片机的看门狗的位置

sbit led1 = P1^0;

void delayms(uint x)

{

uint i,j;

for(i = x;i》0;i--)

for(j = 110;j》0;j--);

}

main()

{

WDT_CONTR = 0x35;//0011 0101表示喂狗,时间是2.095m要喂一次

led1 = 0;

delayms(500);

led1 = 1;

while(1)

{

delayms(1000);

// WDT_CONTR = 0x35;如果在while循环中屏蔽这一局,那么在看门狗的作用下,程序将会不断

//不断的复位,这是看到的现象是在看门狗的作用下,led灯不断的闪烁

}

}

看门狗的寄存器为WDT_CONTR,字节地址是e1,不能位寻址,实现喂狗功能一般是在程序中插入

sfr WDT_CONTR = 0xe1 ;

WDT_CONTR= 0x35;//0011 0000这里可以查看专门的书籍看寄存器的相关位的设置

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查