Compilerproblem: non static main & expected declaration

OP Persönliche Seite #1761630
Lesenswert?
• ▲
▼
Ich versuche gerade eine Anwendung mit dem ADC für den Mega 8 zu 
schreiben.
Leider meldet der Compiler immer:
"'main' is normally a non-static function" und
"expected declaration or statement at ent of input".
Hier mein Code:
1
#define F_CPU 3686400
2
#include <avr/io.h>
3
#include <stdlib.h>
4
#include <util/delay.h>
5
#include "lcd-routines.h"
6
uint16_t BOTTOM;
7
uint16_t MEDIUM;
8

9
void initADC(){
10
//ADC auf interne Referenz 2.56 Volt einstellen
11
//Eingang auf 0V Referenz
12
ADMUX = (1<<REFS1) | (1<<REFS0) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (1<<MUX0);
13
//Grundeinstellungen für ADC einstellen
14
ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
15

16
//Eine Messung machen, um ADC warmlaufen zu lassen
17
ADCSRA |= (1<<ADSC);
18
//Auf Fertigstellung warten
19
while(ADCSRA & (1<<ADSC)){;}
20
//Wert auslesen, um ihn zu verwerfen
21
BOTTOM = ADCW;
22

23
//Eine Messung machen, um BOTTOM zu ermitteln
24
ADCSRA |= (1<<ADSC);
25
//Auf Fertigstellung warten
26
while(ADCSRA & (1<<ADSC)){;}
27
//Wert für BOTTOM speichern
28
BOTTOM = ADCW;
29

30
//Referenzwert jetzt auf 1/2 Vcc einstellen
31
ADMUX = (1<<REFS1) | (1<<REFS0) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1);
32
//Eine Messung machen, um MEDIUM zu errechnen
33
ADCSRA  |= (1<<ADSC);
34
//Auf Fertigstellung warten
35
while(ADCSRA & (1<<ADSC)){;
36
//Wert für MEDIUM speichern
37
MEDIUM = ADCW;
38
}
39

40
void lcd_int_out(int x){
41
char buffer[20];//Einen Buffer für die Zahl bereitstelleb
42
itoa(x, buffer, 10);//Zahl in String umwandeln
43
lcd_string(buffer);}//String auf Display ausgeben
44

45
void init(){
46
initADC();//ADC anwerfen
47
lcd_init();//LCD anwerfen
48
}
49

50
int main(void){
51
init();//Init-Void aufrufen
52
while(1){
53
lcd_string("BOTTOM  |  MEDIUM");//Beschreibung in obere Zeile
54
lcd_setcursor(0,2);//Cursor in untere Zeile
55
lcd_int_out(BOTTOM);//Bottom ausgeben
56
lcd_string("  |  ");//Trennzeichen ausgeben
57
lcd_int_out(MEDIUM);//Medium ausgeben
58
_delay_ms(100);//Tue nix außer warten...
59
}
60
return 0;
61
}
Könnt ihr mir sagen, wo der Fehler ist?
Mit freundlichen Grüßen,
Valentin Buck

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.