Erstmal Hi @all, der Begriff Anfänger ist vieleicht ein wenig zu sehr aus gedrückt, aber noch passend. Ich beschäftige mich zum allerersten mal mit uC´s habe mich dennoch dazu entschlossen direkt mit ASM einzusteigen. Halte nicht so viel von C oder Bascom ;) Ok habe mir ein Testboard gebastelt mit einen ATMega8 dazu ein 2 x 20 Display HD44780, MAX232 für RS232 etc... So jetzt habe ich eigendlich schon viele tolle Dinge gemacht UART, Tasten entprellen etc... Text auf Display funktioniert auch. Aber wie kann ich z.B.: - Text auf dem Display ausgeben, das die 1. Zeile Fixiert ist (stehender Text) und die 2. Zeile z.b eine Art Laufschrift hat, bzw. einlaufenden Text. Bisher hab ich es immer nur hinbekommen das beide zeile sich verschoben habe. (Shift) - Wie funktioniert das mit den Interrupts (habe schon einiges durch an dokus, nur so richtig verstehen tue ich das nicht. - Ebenso was die Timer betrifft. - Warum finde ich bei einigen Samples im Internet die Tags ".list" bzw ".nolist" sowie .org etc... Welche sollte man auf jedenfall am anfang vom Source setzen? Ich bedanke mich jetzt schonmal bei allen die sich die mühe machen, das durchzulesen und zu Antworten. Ich möchte natürlich jetzt keine kompletten Anleitungen (die gibt es ja schon zu genüge) aber der ein oder Andere anschubser währe super. Wie z.b. mit der Laufschrift, das gehört z.b. zu den Problemen die ich noch nicht gelöst habe. Gruß Dennis
Laufschrift: Mit den "On-Board-Mitteln" der Displays nicht möglich, so wie du bereits erkannt hast verschiebt shift eben das ganze Display. Für deine Funktion mußt du halt das Display dauernd neu beschreiben. Interrupt: Deine Programme laufen derzeit kontinuierlich durch. Je nach Anzahl der Verzweigungen usw. braucht jeder Durchlauf unterschiedlich lang. Einen Timerinterrupt könntest du jetzt zum Beispiel für eine exakte Zeitbasis verwenden. Du stellt einen Timer auf z.B. 10ms Laufzeit und damit wird alle 10ms ein Interrupt ausgelöst. Bei diesem wird dein "normales" Program unterbrochen, die Interrupt-Routine ausgeführt (in diesem Fall würdest du die Uhrzeit raufzählen) und danach gehts mit dem normalen Program weiter. Eine weitere Anwendung sind Tastendrücke oder Daten über die serielle. Dein Hauptporgram braucht nicht dauernd nachschauen ob was anliegt (sog. pollen) sondern wird einfach durch den Int. unterbrochen. .list und .nolist geben an ob der dazwischen liegende text im *.lst File ausgegeben wird. Es macht keinen Sinn bei jedem Ausdruck die gesamten equ mitzudrucken, meist reicht das Hauptprogramm. Die .orgs bestimmen die Speicherstelle, also zumindestens das .org 0 mit den nachfolgenden reset und Intvektoren sollte angegeben werden. grüsse leo9
Hi ich hab das mit der Laufschrift mal schnell geproggt ist nicht elegant, funzt aber. (Codevision) Ich hab ein 4x27 Zeichen Display was ich aber hier als 2x40er benutze. Kannst Dir den Code ja mal anschauen. Gruß Tobi zahl ist eine unsigend char variable lcd_init(40); while (1) { lcd_gotoxy(0,0); lcd_putsf("Hallo"); for (zahl=0; zahl<21; zahl++) {lcd_gotoxy(zahl,1); lcd_putsf("Test"); delay_ms(500); lcd_gotoxy(0,1); lcd_putsf(" "); } for (zahl=0; zahl<21; zahl++) {lcd_gotoxy(21-zahl,1); lcd_putsf("Test"); delay_ms(500); lcd_gotoxy(0,1); lcd_putsf(" "); } Hallo bleibt stehen und der Test läuft von links nach rechts und von rechts nach links.
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.