Ошибка объявления 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>
адрес памяти, соответствующий регистру, к которому вы пытаетесь получить доступ. Вы пытаетесь привести и разыменовать указатель, который не является допустимой операцией вне функции.