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
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
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
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