AVR - Voltmeter

Hallo Forum,

ich bin gerade dabei mich in die C-Programmierung von Mikrocontrollern einzuarbeiten. Dazu habe ich mir das Ziel gesetzt mal ein Voltmeter mit einem AVR aufzubauen. Als Prozessor nutze ich einen AT90S4433 sowie ein HD44... kompatibles LCD. Compiler ist der AVR-GCC 3.3, das Hexfile ist

3229 Byte groß.

Klappt auch wunderbar, aber ich finde den Code so sperrig. Ist das bei C normal ? Kann ja auch sein das ich als Anfänger das ganze umständlich gelöst habe. Ich poste mal den Code, vielleicht hat ja jemand noch ein paar Tips oder Verbesserungsvorschläge.

#include #include #include #include

void main(void) {

uint16_t x; // Allgemeine Verwendung uint16_t ziffer; // Zwischenvariable für Umrechnung char buffer[2]; // Zeichenpuffer für long integer // - ascii Umrechnung

lcd_init(LCD_DISP_ON); // LCD einschalten lcd_clrscr(); // LCD löschen lcd_gotoxy(6,0); // Positon 6, Zeile 0 einzeilig ) lcd_puts("V"); // ein V schreiben

DDRC = 0x00; // Port C auf Eingabe schalten PORTC |= 0x00; // interne Pull-Up's aus

// AD-Wandler einschalten, starten, freilaufende Betriebsart, Teil.32,Ch5

ADCSR = (1

Reply to
Alex H.
Loading thread data ...

"Alex H." schrieb im Newsbeitrag news:d45alm$g77$00$ snipped-for-privacy@news.t-online.com...

Ergebnis kann bis 50000 gehen, uint_16 auch, aber itoa leider nicht, daher ist bei dir die ueberdimensionierte Funktion ltoa noetig, aber dann schon richtig die ganze Zahl wandeln lassen mit allen Ziffer. Entweder so:

char buffer[8];

ziffer=1; ltoa(x,buffer+ziffer,10); if(strlen(buffer)>4) // Dezimalpunkt einfügen { buffer[0]=buffer[1]; buffer[1]='.'; ziffer=0; } lcd_puts(buffer+ziffer);

oder so ohne ltoa:

for(ziffer=0;ziffer

Reply to
MaWin

"MaWin" schrieb im Newsbeitrag news:d45bt8$dv0$ snipped-for-privacy@online.de...

Einfacher und besser:

char buffer[8];

ltoa(100000+x,buffer,10); buffer[0]=buffer[1]; buffer[1]='.'; lcd_puts(buffer);

-- Manfred Winterhoff, reply-to invalid, use mawin at despammed.com homepage:

formatting link
de.sci.electronics FAQ:
formatting link
Read 'Art of Electronics' Horowitz/Hill before you ask. Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.

Reply to
MaWin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.