我无法让循环工作。我尝试过for和while,但两者都有同样的问题。循环内的指令(交替闪烁的LED)执行一次,然后微重置并再次初始双LED闪烁。有人能看到一些逻辑错误吗?
使用PIC16f688和XC8编译器。
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#define _XTAL_FREQ 4000000
int main(int argc, char** argv) {
int count;
TRISA = 0b00000000;
TRISC = 0b00000000;
PORTA = 0b00000011;
__delay_ms(1000);
PORTA = 0b00000000;
for (count = 0; count < 5; count++) {
PORTA = 0b00000001;
__delay_ms(1000);
PORTA = 0b00000010;
__delay_ms(1000);
}
PORTA = 0b00000011;
__delay_ms(1000);
PORTA = 0b00000000;
return (EXIT_SUCCESS);
}
答案 0 :(得分:1)
这是看门狗定时器问题。事实证明,默认看门狗的时间长度恰好是循环第一次迭代的时间长度,所以看起来循环刚刚跳过。
要使用我的设置(MPLABX,XC8编译器,PIC16f688)禁用看门狗定时器,代码为:
#pragma config WDTE = OFF