AVR studio7声明错误

时间:2017-04-19 07:56:47

标签: avr avr-studio7

我需要你的帮助

我正在使用AVR studio 7尝试atmega128a

但是存在一个问题

当我将DDRB和PORTB控制为main()

一切正常

但如果我从main()

中控制DDRB和PORTB

如果出现错误

'预期标识符'('在'volatile'之前

我只是想知道为什么总是处理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 个答案:

答案 0 :(得分:1)

C不是脚本语言。实际运行的任何代码行必须在函数内。您可以创建一个新功能,并从main调用它。

答案 1 :(得分:0)

它们需要在函数内部分配,因为它们是宏,最终被替换为看起来像这样的东西:

SalesTransaction

其中(*(volatile uint8_t *)<address>) 是与您尝试访问的寄存器对应的内存地址。您正在尝试强制转换和取消引用指针,该指针不是函数之外的有效操作。