微控制器编程 - 程序不退出for循环

Jak*_*ger 0 c microcontroller for-loop pic mplab

我的面包板上有一个简单的PIC16F18877电路设置,我已成功获得一个LED在无限while循环内闪烁.我试图将相同的代码放在一个for只应执行5次的循环中,但LED会一直闪烁.

我的代码(带XC8编译器的MPLAB):

#include <xc.h>

#define _XTAL_FREQ 8000000

int main()
{
    TRISD1 = 0;

    for (int i = 0; i < 5; i++)
    {
        RD1 = 1;
        __delay_ms(500);
        RD1 = 0;
        __delay_ms(500);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

tof*_*fro 5

你期望CPU从main哪里跳回来?或者更确切地说,当你不告诉它该做什么时,你期望它做什么?在台式计算机上,程序通常会返回到操作系统 - 在嵌入式系统上,没有.

最有可能的是,返回从main返回到启动代码,并最终("偶然"或故意)到重置向量,从头开始启动程序.

如果你希望MCU实际上"停止","什么也不做"你需要强制它进入无限循环而不是return.然而,这不是MCU上的常见方法.