我用AT89S52做了个简单的程序如下,使用一段时间工作10小时要死机4、5次吧。用的是51最小系统板杜邦线插接的,电源开关电源24V加78L05供电驱动5V四路继电器板负载电磁阀驱动气缸动作,动作很简单就是总是死机,之后改了带狗的程序还是死啊,郁闷ing.....请高手帮忙看看什么问题。
不带看门狗的程序:
#include <at89x52.h>
sbit key1 = P0^3;
void Delay(int m)
{
while(--m);
}
void main(void)
{
int n ;
n=0;
while(1)
{
P0_0=1;
P0_1=1;
P0_2=1;
if(!key1)
{ Delay(10000);
if(!key1)
{
n=n+1;
if(n==3)
{
n=1;
}
while(!key1)
{
if(n==1)
{
P0_0 = 0;
}
if(n==2)
{
P0_2 = 0;
}
}
}
}
}
}
带看门狗的程序
#include <at89x52.h>
void WatchDog(void);
void Delay(void);
sbit key1 = P0^3;
sfr WDTRST = 0xA6;
int n,i ;
void Delay(void)
{
for(i=0;i<5000;i++)
WatchDog();
}
void WatchDog(void)
{
WDTRST =0x1E;
WDTRST =0xE1;
}
void main(void)
{
WatchDog();
n=0;
while(1)
{ WatchDog();
P0_0=1;
P0_1=1;
P0_2=1;
if(!key1)
{ Delay();
if(!key1)
{
n=n+1;
WatchDog();
if(n==3)
{
n=1;
WatchDog();
}
while(!key1)
{ WatchDog( );
if(n==1)
{
P0_0 = 0;
WatchDog();
}
if(n==2)
{
P0_2 = 0;
WatchDog();
}
}
}
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
是的,我做了實驗了
问一下,不滤波有什么后果??新手,求指导
会死机或重启,运行不正常啊。带继电器的电路要加上消除电火花的电容。整个系统要加EMC滤波,单片机电源端要有滤波,退耦电容,一般为一个104一个10uf的电解电容;输出端输入端最好隔离;AT没有那么脆弱,关键是电路设计。楼主可多看看一些成熟的电路,多学习学习。
一周热门 更多>