Forum: Mikrocontroller und Digitale Elektronik Vergleich BASOM-CODEVISION


von emil (Gast)


Angehängte Dateien:

Lesenswert?

das kann doch wohl nicht sein, oder??? heute ist mir aufgefallen, das 
man in codevision nur ziemlich speicherintensiv eine einfache variable 
auf dem lcd zeigen kann.

habe schnell einen vregleich gemacht und auch auf die platine getestet 
-und siehe da (anhang):

bascom braucht dafür nur 634 bytes, codevision dagegen stolze 1368 
bytes(684 words)!!!!

hm, ich habe doch nur einen kleinen tiny26 mit mikrigen 2kb flash, soll 
ich den ganzen mc nur dazu benutzen, eine einfache zahl aufm lcd 
darzustellen?? das kann doch nicht wahr sein!

noch dazu habe ich das lcd beim bascom nicht wie default beschrieben an 
den tiny26-ports angeschlossen, was noch extra speicher belegt; bei 
codevision dagegen schon, es gibt ja keine option, die lcd 
pin-konfiguration frei zu bestimmen.

ich glaube, der vergleich ist korrekt; was denkt ihr darüber?? gibt es 
eine bessere möglichkeit, sowas im codevision zu machen?

von crazy horse (Gast)


Lesenswert?

ich schätze mal, du hast printf() verwendet, ist ein ziemlich starker 
Befehl mit vielen Möglichkeiten, bietet einiges mehr als das 
Basic-übliche print. Bequemlichkeit hat seinen Preis, in diesem Fall 
äußert sich das im hohen Speicherverbrauch. Aber es zwingt dich ja 
niemand, diese Funktion zu benutzen. Einfach in Dezimalstellen 
aufteilen, 30h dazu addieren und als einzelne Zeichen ausgeben - da 
kommst du mit wenigen Bytes aus.

von emil (Gast)


Lesenswert?

ja, ich habe sprintf() verwendet, wie auf dem anhang ersichtlich ist; 
gebe ehrlich zu, kenne mich nicht richtig gut in codevision und c, aber 
wie soll ich denn sonst den wert einer variable auf dem lcd bringen? 
z.b. char k=8, wenn ich jetzt aber einfach lcd_putchar(k) schreibe, dann 
habe ich aufm lcd asii zeichen #8 und nicht die zahl 8... deswegen habe 
ich k vorher in string umgewandelt; kann ich vieleicht pointers anwenden 
oder wie funktioniert das?

von Mark de Jong (Gast)


Lesenswert?

In C:

void main(void)
{

// LCD module initialization
lcd_init(20);
lcd_clear();

while (1)
      {
      char k=8;
      lcd_gotoxy(7,1);
      lcd_puts(k+0x30);
      };
}

Grüße Mark.

von emil (Gast)


Lesenswert?

oh mein gott :))))

herzlichen dank für die hilfe @ mark & crazy horse, jetzt verstehe ich 
langsam :) nun, irgendwie habe ich das gefühl , c wurde speziell dazu 
erfunden, damit sich niemand ausser ausserirdische damit auskennt, eine 
art modernes latein...
auf jeden fall danke für die rasche und kompetente hilfe, jungs!

von Sascha Weitkunat (Gast)


Lesenswert?

Was soll das jetzt machen? Es würde sowieso nur funktionieren wenn 'k' 
eine einstellige Zahl ist. Und dann ist 'k + 0x30' lang noch kein 
String, sondern ein einzellner Character.

Wenn es die Funktion itoa(...) gibt nutze sie. Sonst kannst du es wie 
schob erwähnt zu Fuß machen, % und / ...

von emil (Gast)


Lesenswert?

uhuuuu, sasha, du bist der BESTE, danke!

das mit dem itoa() hat natürlich geklappt, wie habe ich diese funktion 
doch übersehen :(( der code in codevision ist jetzt nur stolze 576 
bytes, also  im vergleich zu bascom (634bytes)
um ca. 10% weniger; das sieht jetzt gut aus, danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.