我在Atmel Studio上写了一个AVR代码,但是我忘记在主要部分写了IO端口设置(DDRx,PORTx等等),而是把它放在main之外,如图所示:
#include <avr/io.h>
#define F_CPU 1000000UL
#include <util/delay.h>
#include <avr/interrupt.h>
void delay_250ms();
uint8_t t_hr = 0 , t_min = 0 , t_sec = 0 , i = 0 , tempp;
uint8_t start_stopwatch = 0;
DDRA |= 0xFF;
PORTA = 0x00;
DDRD = 0x00;
PORTD |= 0xFF;
然后我收到了这个错误:
- 在
之前预期)
令牌(
- 预期标识符或
之前的(
volatile
- 在
之前预期)
令牌(
- 预期标识符或
之前的(
volatile
- 在
)
令牌之前预期(
...
当我将它们添加回主函数时,没有错误
问题是为什么我不能在主要之外添加它们? 我是否会错过一些观点?
答案 0 :(得分:4)
像DDRA |= 0xFF
这样的代码行是一个声明。它在执行时执行特定操作(如设置DDRA
的所有位)。
语句必须出现在函数中,以便它作为该函数的一部分执行。它不能放在源文件的顶层,因为源文件不会被执行 - 只有函数是。