请问,代码中的错误在哪里(使用16F628)?

OUT1-LED1
OUT2-LED2

仅闪烁LED1(OUT1)。计数器不起作用(整数错误?)。
硬件还可以...
我的代码:

#include "PIC16F628.h"
#include "pic.h"

#pragma config FOSC = INTOSCIO

#define OUT1 RB1
#define OUT2 RB2

#define _XTAL_FREQ 4000000

//******************************************

void main()
{
    int x;
    TRISB1=0;
    TRISB2=0;
    OUT1=0;
    OUT2=0;

    if (x < 10)
    {
        x++;
        OUT1=1;
         __delay_ms(1000);

        OUT1=0;
         __delay_ms(1000);
    }

    else if (x >= 10)
    {
         x = 0;
        OUT2=1;
         __delay_ms(1000);

        OUT2=0;
         __delay_ms(1000);
    }
}


并且在此代码中仅闪烁OUT2:

#include "PIC16F628.h"
#include "pic.h"
#include <stdio.h>
#include <stdlib.h>
#include "stdint.h"

#pragma config FOSC = INTOSCIO

#define OUT1 RB1
#define OUT2 RB2

#define _XTAL_FREQ 4000000

uint8_t x = 10;

//************************

void main()
{
    TRISB1=0;
    TRISB2=0;
    OUT1=0;
    OUT2=0;


    while(1)
    {
        if (x < 10)
        {
            x++;
            OUT1=1;
             __delay_ms(1000);

            OUT1=0;
             __delay_ms(1000);
        }

        else if (x >= 10)
        {
             x = 0;
            OUT2=1;
             __delay_ms(1000);

            OUT2=0;
             __delay_ms(1000);
        }
    }
}


同样在调试器中变量x不变。编译器是XC8。

最佳答案

变量x未初始化。给它一个初始值。

编译时是否有任何警告?因为您读取未初始化变量的值后,编译器肯定会显示警告。如果您是C语言的初学者,请确保您的编译器确实显示所有警告并仔细阅读它们。他们在这里是有原因的。

如果您希望它多次运行,则还必须将if / else语句置于无限循环中。通常,嵌入式c中一个非常简单的程序如下所示:

void main()
{
    //Initialization stuff

    while(1) {
        //main loop : Everything happens here forever and ever
    }
}


除了使用RTOS的应用程序外,这是不合时宜的。

试试这个主要的:

void main() {
    int x;
    TRISB1=0;
    TRISB2=0;
    OUT1=0;
    OUT2=0;

    while(1) {
        if (x < 10) {
            x++;
            OUT1=1;
            __delay_ms(1000);

            OUT1=0;
            __delay_ms(1000);
        }

        else if (x >= 10) {
            x = 0;
            OUT2=1;
            __delay_ms(1000);

            OUT2=0;
            __delay_ms(1000);
        }
    }
}

10-07 15:21