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?
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.
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?
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.
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!
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 / ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.