Ошибка объявления AVR studio7

Мне нужна ваша помощь

я пытаюсь atmega128a с помощью AVR Studio 7

но есть одна проблема

когда я контролирую DDRB и PORTB в main()

работает нормально

но если я контролирую DDRB и PORTB из main()

если становится ошибкой

"ожидаемый идентификатор или" ("перед изменчивым"

я просто хочу знать, почему всегда передавать DDRB и PORTB только в main()

вот мой код

#define F_CPU 14745600UL

#include <avr/io.h>
#include <util/delay.h>

DDRB = 0xFF;
PORTB = 0x00;

int main(void)
{
    /* Replace with your application code */

    PORTB = 0x01;
    _delay_ms(300);
    while (1) 
    {
        PORTB <<= 1;

        _delay_ms(300);

        if(PORTB == 0x80){
            PORTB = 0x01;
            _delay_ms(300);
        }
    }
}

2 ответа

C не является языком сценариев. Любая строка кода, которая действительно выполняется, должна быть внутри функции. Вы можете создать новую функцию и вызвать ее из main,

Их нужно назначать внутри функции, потому что они являются макросами, которые в конечном итоге заменяются чем-то вроде этого:

(*(volatile uint8_t *)<address>)

где <address> адрес памяти, соответствующий регистру, к которому вы пытаетесь получить доступ. Вы пытаетесь привести и разыменовать указатель, который не является допустимой операцией вне функции.

Другие вопросы по тегам