单片机应用一直以来工作的稳定性方面是我们的一个研究最多的话题,做为工控首当其冲的就是系统的稳定性。
因此,一定要有一个可靠的复位电路,以使单片机在受到干扰后能重新启动工作。现在已经有专门的复位电路芯片供我们使用,专用的复位芯片具有快速上电复位,欠电压复位等。
新型的AT89S5X已在内部集成了看门狗定时器,在一些简单的系统中,可以直接使用AT89S5X片内看门狗定时器,无需外设复位电路。
AT89S5X内部看门狗定时器实际是一个14位的计数器,其地址位于A6H,第一次激活时,需依次向其写入01EH,0E1H。
在看门狗定时器启动后,依次点亮D0-D7,每位LED保持3MS,每点亮4位LED,将看门狗清除,防止溢出后复位单片机。
#include <reg52.h>
#include uchar unsigned char
#include uint unsigned int
sfr WDT = 0xa6;
#define reset() {WDT = 0x1e; WDT = 0xe1;}
#define D0_ON 0xfe
#define D1_ON 0xfd
#define D2_ON 0xfb
#define D3_ON 0xf7
#define D4_ON 0xef
#define D5_ON 0xdf
#define D6_ON 0xbf
#define D7_ON 0x7f
void delay(uint k)
{
uint data,i,j;
for(i=0;i<k;i++)
{
for(j=0;j<121;j++);
}
}
int main(void)
{
reset();
while(1)
{
P0 = D0_ON;
delay(1);
P0 = D1_ON;
delay(1);
P0 = D2_ON;
delay(1);
P0 = D3_ON;
delay(1);
P0 = D4_ON;
delay(1);
P0 = D5_ON;
delay(1);
P0 = D6_ON;
delay(1);
P0 = D7_ON;
delay(1);
reset();
}
}
文章评论(0条评论)
登录后参与讨论