新手求解 程序跑死问题。。
前段时间用ATtiny13A+ICCAVR写了一段非常简单的程序,在小于10分钟左右,该单片机输出正常。一般大于15分钟 程序就会持续输出某特定值。我认为是程序跑飞了。于是乎想到用看门狗,但是新手又不太会。于是各种看教程,勉强写了一段。但是貌似还是会跑飞。。求解达人,帮忙看看,该怎么修改?
附:程序
#include <iot13v.h>
#include <macros.h>
void watchdog_init(void)
{
WDR(); //this prevents a timout on enabling
WDTCR = 0x1F;
WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
}
void main(void)
{DDRB|=(1<<0);//定义pb0输出,且开始输出为低电平
PORTB&=~(1<<0);
DDRB&=~(1<<3);//将pb3,pb4设置为输入,并且开启上拉电阻
DDRB&=~(1<<4);
PORTB|=(1<<3);
PORTB|=(1<<4);
while(1)
{
switch(PINB&0x18)
{ case 0x18:
PORTB=0x01;
break;
case0x10:
PORTB=0x01;
break;
case0x00:
PORTB=0x01;
break;
case 0x08:
PORTB=0x00;//测试使用
break;
default: PORTB=0X01;
}
WDR();
}
} default: PORTB=0X01; 后面是不是应该加上break;
页:
[1]