mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Datenbanken mit Assembler


Autor: Tobias Gläser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Echt geil der Joke,
>Bin seit längerem am Programmieren von Assemblerfiles
und weiss nicht was DB bedeutet...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tobias Gläser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 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

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tobias,

und dann gibt es auch noch andere Tabellentypen für größere Zahlen:

"dw"  und "dd"

Bernhard

Autor: Tobias Gläser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Jens B. (sio2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tobias, wie hast du bisher Variablem gespeichert, wenn du kein .db 
benutzt hast?

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt hackt auf Tobias nicht weiter herum,

unsere Kritik hat sich er doch angenommen,

er hat sich sogar bei entschuldigt.


Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch ein Link zum Keil Assembler für 8051:
http://www.keilsoftware.com/support/man/docs/a51/a...
Da sind die Assembler Direktiven beschrieben.

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Bernhard:
Ich hacke nicht, höchstens Code und selbst da versuche ich vorher einen 
ordentlichen Programmentwurf zu machen!
;-)

Autor: Tobias Gläser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tobias Gläser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 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.

Autor: Tobias Gläser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tobias Gläser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jop @ Peter, daran hab i net gedacht weil i eben nur den Ram-Bereich 
gewohnt bin g

MfG Tobi

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.