Hallo bin neu hier und interressiere mich seit einiger zeit für die
atmel familie insbesondere den 2051...
hab mich auch schon auf mehreren seiten schlau gemacht sprich, erik
buchmann und z.B. auf 8052.com
mein problem ist nun das ich es immernoch nich verstanden habe wie man
eine bestimmte variable des datenfeldes "anspringt" bzw. liest, kann mir
da evtl. jemand helfen, wär echt nett komm nämlich nich weiter...
MfG Eckel
Damit greifst du auf das erste Element der Tabelle zu. Lädst du den accu
mit 2, kriegst du das dritte Element usw.
Syntax kann in anderen Programmen bisschen anders aussehen.
> eine bestimmte variable des datenfeldes "anspringt" bzw. liest,
Datenfelder werden mit Pointern bearbeitet.
Variablen werden eben einfach nur benutzt.
Beispiel.: Mov Variable,#=Ah
Die Variable "Variable" hat die Wertigkeit 0Ah
Bei Feldern arbeitet man mit Tabellen.
zB.:
DB Tabelle: 01h,04h,C0h,A1h
Dann wird der Datenpointer DPTR mit dem Anfang der Tabelle geladen.
Mov DPTR,#Tabelle
Wenn Du jetzt den 3. Wert haben wills, dann
Mov A,#3
Movc a,@a+dptr
Danach ist im Akku C0h.
kurz und knapp. Ansonsten kann ich "Mikrocontroller Kochbuch" empfehlen.
Es wird also die Anfangsadresse der Tabelle in den Datenpointer DPTR
geladen und dann der Akku-Wert draufaddiert. Damit ist der Akkuwert
quasi der Index der Tabelle und der die Adresse im DPTR die Adresse des
Tabellenelements. Dann holt man sich mit dem movc-Befehl das adressierte
Element.
Nach den Befehlen steht eine Kopie des adressierten Tabellenelementes im
Akku.
Klingt gut, hab nur das Problem das ich bei meiner 8x8 led matrix nach
jedem reset ne andere anzeige hab obwohl die bits im Datenfeld ja gleich
bleiben...
Übrigens danke für die Hilfe echt super von euch...
wenn ich den akku mit 0 beschreibe dann is meine gelesene variable ja
immer gleich, ich will aber nun mehrere nacheinander in die
verschiedenen digits des max 7219 schieben aber das funktioniert dann
schon nich mehr...
sieht bei mir dann so aus,
mov DPTR,#Datenfeld
mov r0,#1
start:
mov a,r0
movc a,@A+DPTR
mov MAX_DATEN,a
mov MAX_ADRESSE,r0
call MAX_DISP_OUT
inc r0
cjne r0,#9,start
jmp weiter
Datenfeld:
db 0,128,64,32,16,8,4,2,1
weiter:
besteht die möglichkeit in den datenfeldern auch Buchstaben einzufügen
welche dann direkt ausgegeben werden können??? hab ich nämlich bei woe
gesehen, kann es mir aber nich vorstellen...
Naja, was verstehst du unter Buchstaben?
Du kannst im Assembler jedenfalls Tabellen aus Bytes aufbauen. Und du
kannst mit dem ASCII-Code Buchstaben in 8-Bit-Werte, also Bytes,
darstellen.
Direkt ausgeben... Wo denn? LCD? PC?
Eine eigene Frage?
Dieser Thread ist über 19 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.