循环被忽略 - 指令只执行一次

时间:2013-12-28 06:57:10

标签: c loops for-loop pic microchip

我无法让循​​环工作。我尝试过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);
}

1 个答案:

答案 0 :(得分:1)

这是看门狗定时器问题。事实证明,默认看门狗的时间长度恰好是循环第一次迭代的时间长度,所以看起来循环刚刚跳过。

要使用我的设置(MPLABX,XC8编译器,PIC16f688)禁用看门狗定时器,代码为:

#pragma config WDTE = OFF