Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Ошибка сборки PIC16f877a

Автор вопроса: whywhyОтветов: 1

Мне удалось успешно скомпилировать приведенную ниже программу на моем рабочем столе или другом ПК. Однако я не могу скомпилировать этот код на своем ноутбуке. Я попытался переустановить программное обеспечение той же версии, что и на рабочем столе. Это дает мне ту же ошибку, но будет компилироваться с кодом, отмеченным "Нормальная светодиодная программа" ниже. Как я могу это исправить?

Программа, которая не компилируется:

#include<pic.h>
__CONFIG(0x3F3A);

main()
{
    TRISB=0;
    PORTB=0;

    PSA=0;
    PS2=0;
    PS1=0;
    PS0=0;
    TMR0=6;
    T0CS=0;
    T0SE=0;
    TMR0IE=1;

    int count=0;

    while(1)
    {
        if(TMR0IF==1)
        {
            TMR0IF=0;

            count=count++;
            if(count==2000)
            {
                RB0=~RB0;
                count=0;
            }
        }
    }
}

Предупреждающая ошибка:

введите здесь описание изображения

Обычная программа LED (успешно компилируется):

#include <pic.h>
__CONFIG(0x3F38);
main()
{
    TRISB=0;
    PORTB=0;
    while(1)
    {
        PORTB=0x01;
    }
}
  • Что находится в __CONFIG? Jongware 03.06.2014
  • @Jongware, __CONFIG() - это встроенный компонент Microchip для компилятора HI-TECH, используемый для записи битов конфигурации устройства во флэш-память. Похоже, что и нормальная программа светодиодов, и та, которая дает сбой, являются допустимыми конфигурациями. Вы должны посмотреть на таблицу данных, чтобы увидеть, какие настройки. Единственная разница между этими двумя - это биты генератора, хотя это не должно влиять на компиляцию. embedded_guy 03.06.2014

cmicrocontrollerpic

Ответы

Ответ 1 · рейтинг 3 · nobody

Похоже, этот компилятор не поддерживает код C99, в частности объявление переменных в середине блока. Переместите объявление count в начало блока main, например:

main()
{
    int count = 0;

    TRISB = 0;

    ...
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы