2017-08-16 3 views
-1

Ich schrieb einen AVR Code auf Atmel Studio und aus Versehen habe ich vergessen, die IO Port Einstellungen (DDRx, PORTx, ... etc) im Haupt zu schreiben, stattdessen stelle ich es außerhalb der Haupt wie gezeigt:AVR IO Ports können nicht global sein

#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; 

dann habe ich diesen Fehler habe:

  • expected ) before ( token
  • expected identifier or ( before volatile
  • expected ) before ( token
  • expected identifier or ( before volatile
  • expected ) before ( token …

als ich sie zurück in die Hauptfunktion hinzugefügt gab es keine Fehler

die Frage ist, warum kann ich nicht hinzufügen sie außerhalb der Hauptleitung ? Vermisse ich einen Punkt?

+0

Setzen Sie den relevanten Code in Ihre Frage ein (kopieren Sie ihn, fügen Sie ihn ein, wählen Sie ihn aus und klicken Sie auf das Symbol '{}', damit er korrekt formatiert ist). – spectras

Antwort

4

Eine Zeile Code wie DDRA |= 0xFF ist eine Aussage. Es führt eine bestimmte Aktion durch (wie das Setzen aller Bits von DDRA), wenn es ausgeführt wird.

Eine Anweisung muss in einer Funktion erscheinen, damit sie als Teil dieser Funktion ausgeführt wird. Es kann nicht auf der obersten Ebene einer Quelldatei platziert werden, da Quelldateien nicht ausgeführt werden - nur Funktionen sind.

+0

oh: O Vielen Dank. –

+0

Quelldateien werden nie ausgeführt. Die kompilierte und verknüpfte ausführbare Datei - ja –

Verwandte Themen