2017-04-19 115 views
0

我需要你的帮助AVR studio7申报错误

我试图atmega128a使用AVR Studio的7

但一个问题是有

当我控制DDRB和PORTB到主()

它工作正常

但如果我控制DDRB和PORTB主()

如果变成错误

“的期望标识符或‘(’前挥发性”

我只是想知道,为什么总是递给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); 
     } 
    } 
} 

回答

1

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

+0

但如果你是正确的,可能是没有在任何其他编译器和IDE 作品plz帮助我 –

+0

我不相信代码工作在Visual Studio这个代码工作在Visual Studio 2017年 。首先,VSD中定义的DDRD是什么?我已经通过告诉你如何构建C程序来帮助你。遵循我的建议你有困难吗? –

+0

你知道如何编写一个新的函数并从'main'调用它吗?你可以试试吗? –

0

他们需要一个函数的内部分配,因为他们是最终的东西,看起来像这样得到替换宏:

(*(volatile uint8_t *)<address>) 

其中<address>是对应于你是寄存器中的内存地址试图访问。您正试图对一个指针进行强制转换和取消引用,这不是函数之外的有效操作。