2017-04-19 85 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>是對應於你是寄存器中的內存地址試圖訪問。您正試圖對一個指針進行強制轉換和取消引用,這不是函數之外的有效操作。