注意到我的程序似乎正在退出无限循环后,我为PIC 16f690微控制器编写了一个程序。
PORTC引脚3、4、5上有led。
#include <xc.h>
#define _XTAL_FREQ 4000000
void main(void) {
TRISC = 0x00;
PORTC = 0b00111000;
while (1)
{
__delay_ms(1000);
PORTC = 0x00;
}
}
据我所知,led应该打开约1秒,然后永远关闭。相反,它们每秒钟都在闪烁。
我用MPLABX写的,用PICkit3和C8编译器编程。
你可能被看门狗咬了。为您的测试禁用看门狗,或在它复位MCU之前清除它。
我有同样的问题,但在led的地方,我使用串行通信。while(1)
并不是一个永远的循环并执行括号之间的东西。
一旦我禁用了看门狗,在第一次迭代之后只调用括号内的东西。
#pragma config WDTE = OFF // Watchdog Timer Enable (WDT enabled)
我还观察了每个数据包后的垃圾,并且禁用了看门狗。
参考图片16f1708。
这会导致一些不稳定的行为,因为每次循环迭代都会调用uart初始化函数、IO设置和振荡器分频器。