Servus liebe Programmierkolegen! Bin seit längerem am Programmieren von Assemblerfiles. Kenne mich darin relativ gut aus und arbeite mit Keil µ-Vision 3. Mein Problem nun: Ich Möchte für mehrere 7-Segment Anzeigen und auch für andere Zwecke Datenbanken nutzen... Habe aber in diesem BEreich leider keine Ahnung wie das Funktioniert. Kann mit jemand weiterhelfen? Ich habe mal gesehen, dass man folgendes geschrieben hat (so ähnlich jedenfalls...): DB 2, 3, 5, 7, 11, 13, 17, 19, ';' oder DB 01110010, 10001001, 01010010, 10100100, 10100000, 11111111, 01000100, 10100001, ';' Wie ruf ich sowas nun auf, wieviele davon kann ich nutzen etc, wo wird die DB gespeichert? Kennt sich da jmd aus? Vielen dank schoneinmal! MfG T-G-läser
Echt geil der Joke,
>Bin seit längerem am Programmieren von Assemblerfiles
und weiss nicht was DB bedeutet...
Hab mich schon gewundert, ne Datenbank in Assembler zu schreiben, dürfte doch zu aufwendig sein. Das ist "Definiere Byte", d.h. das Byte wird einfach so wie es ist in den Code-Flash geschrieben. Zum Auslesen gibt es beim 8051 die MOVC-Befehle, z.B. MOVC A,@A+DPTR. In der Regel ist ne DB-Anweisung sinnlos, wenn nicht davor ein Label steht. Dieses Label lädt man nun nach DPTR und mit A (Index) bestimmt man dann, welcher der nachfolgenden DB-Werte nach A geladen wird. Aber es würe mich arg wundern, wenn es im µVision keine Hilfe dazu gäbe. Peter
@ Wolfram: Danke, dein Beitrag ist recht bescheuert und unötig! Ich habe schon viel gemacht, aber wenn ich das noch nie benutzt hab, warum sollte ich es dann wissen? ... Na egal - wie du meinst xD @ Peter: Dank dir, damit hast mir schonmal weitergeholfen. Ich wusste immer nicht wie ich auf die Werte zugreifen soll, aber nu isses mir klar mit dem DPTR... Habe es nun so gemacht: ;----------------------------------------------------------------------- ----- mov DPTR,#werte+3 ;um z.B. die "40" zu lesen MOVX A,@DPTR werte: DB 10,20,30,40,50,60,70,80 ; DB 90,100,110,120,130,100,100,100 ; DB 11,12,13,14,15,16,17,18 ; ;----------------------------------------------------------------------- ----- Danke für deine Hilfe. MfG T-G-läser
Hallo Tobias, und dann gibt es auch noch andere Tabellentypen für größere Zahlen: "dw" und "dd" Bernhard
Danke Bernhard, die Tabelle mit Wort ist für meine Zwecke auch noch ganz brauchbar! Doppelwort kam noch nicht zum Einsatz. Habe nun den Programmteil endlich auch fertig^^ T-G-läser
@Tobias: Sorry Tobias, ich ging wirklich davon aus das du einen lustigen Thread starten willst. Ich konnte mir nicht vorstellen wie man schon länger Assembler programmiert und ohne "DB" auskommt. Ok, noch was konstruktives: Es gibt da gewöhnlich noch DW und DD für define Word und define Doubleword
@Tobias, wie hast du bisher Variablem gespeichert, wenn du kein .db benutzt hast?
Jetzt hackt auf Tobias nicht weiter herum, unsere Kritik hat sich er doch angenommen, er hat sich sogar bei entschuldigt.
Hier noch ein Link zum Keil Assembler für 8051: http://www.keilsoftware.com/support/man/docs/a51/a51_controls.htm Da sind die Assembler Direktiven beschrieben.
@Bernhard: Ich hacke nicht, höchstens Code und selbst da versuche ich vorher einen ordentlichen Programmentwurf zu machen! ;-)
Bitte Leuts g is doch kein Ding! Thx für die Hilfen, habs ja soweit... Wundern tut mich nur dass die Keil-Simulation bei folgendem Test nichts macht... Stimmt da was nich? Die Schleife hat zwar kein Ende, is ja nur en Test, aber nichtmal am Anfang macht die an P2 irgendetwas. Auch im Akku steht nie was. m2: movx A,@DPTR mov P2,A call t3s0 ; is ne 3sec Zeitschleife... inc DPTR jmp m2 Daten: DB 00000001b,00000010b DB 00010000b,00100000b DB 01000000b,10000000b DB 11111110b,11111101b DB 11111011b,11110111b DB 11101111b,11011111b DB 10111111b,01111111b DB 00001111b,11110000b DB 11111111b,00000000b
@ Jens: Habe meine Ganzen Werte immer in einem Externen Ram gehabt. Hatte alle direkt darin gespeichert ausgelesen und abgelegt... nicht normal aber für meine Zwecke voll ausreichend.
Ahhh bin i doof :P klar dass des eben nicht ging... Hab mein Programm zwar im Daten-Bereich stehen, aber die Tabelle is ja dennoch im Code-Bereich... also movx gegen movc ersetzen, bissl abändern und nu gehts endlich. T-G-läser is nu Glücklich xD Dankeschön! mov DPTR,#Daten m2: movc A,@A+DPTR mov P2,A call t0s3 ; is ne 3sec Zeitschleife... inc DPTR MOV A,#0 jmp m2
Tobias Gläser wrote: > Wundern tut mich nur dass die Keil-Simulation bei folgendem Test nichts > macht... Stimmt da was nich? Ja. Ich habe MOVC geschrieben, Du aber MOVX, das ist was ganz anderes. Peter
jop @ Peter, daran hab i net gedacht weil i eben nur den Ram-Bereich gewohnt bin g MfG Tobi
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.