PIC16F1936启动看门狗,配置字中设置为WDTE_SWDTEN,软件使能看门狗功能,程序初始化完成后,进入main函数主循环前启动看门狗;
// WITCH DOG TIME 4s
SWDTEN = 1;
WDTPS4 = 0;
WDTPS3 = 1;
WDTPS2 = 1;
WDTPS1 = 0;
WDTPS0 = 0;
CLRWDT();
在主循环中,不执行CLRWDT();,让其进行看门狗定时复位,功能正常,但当我的主循环中执行如下延时函数时,看门狗功不能复位。
__delay_us(40); // 延时40us
__delay_us为pic.h定义的函数。
/****************************************************************/
/* Built-in delay routine */
/****************************************************************/
#pragma inline(_delay)
extern void _delay(unsigned long);
// NOTE: To use the macros below, YOU must have previously defined _XTAL_FREQ
#define __delay_us(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000000.0)))
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))
#endif
_XTAL_FREQ = 32000000UL
请问高手这是什么原因啊? |