最近写了一个程序,复位时根据是否是WDT溢出复位而采取不同的初始化程序.我实际测试的结果是:当WDT溢出复位时寄存器STATUS的TO位是1,而不是数据手册上的0.我用的是HiTech-PICC编译器.
以下是我的程序:
#include <htc.h>
__CONFIG(XT & WDTEN & PWRTEN & BOREN & LVPDIS);
void main (void)
{
_delay(1);
if (POR && BOR && !TO && PD) { //是WDT溢出复位吗?
CLRWDT(); //是,则执行看门狗指令使TO置1
WDTResetInit(); //并执行初始化程序WDTResetInit()
} else { //非WDT溢出复位
POR = 1; //软件置位POR与BOR
BOR = 1;
CLRWDT();
NonWDTResetInit(); //执行初始化程序NonWDTResetInit()
}
while(1); //等待WDT溢出
}
请大家帮我看下我的程序哪里出问题了,先谢谢大家了! |