Assemblerdirektvien im ATmega16

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 18 10 2024  18:26:07      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Assemblerdirektvien im ATmega16
Suche nach: atmega16 (131)

    







BID = 158455

drrgne

Gerade angekommen


Beiträge: 2
 

  


Hallo!
Ich habe hier eine Aufgabe, in der ich eine Tabelle von 10 Hex-Werten im Speicher des ATmega16 ablegen soll.
Im Internet hab ich dazu gefunden, dass dies eigentlich mit

.org $adresse
.byte $wert

gehen sollte...

Im Assembler des AVR Studio4 krieg ich damit aber immer die Fehlermeldung error: .byte not allowed in .CSEG

Was mache ich da falsch oder wie sonst kann ich Werte im Speicher ablegen?

Thx for help!

BID = 158462

Benedikt

Inventar

Beiträge: 6241

 

  

Im AVR Studio heißt es nicht
.byte
sondern
.db für ein Byte
.dw für ein Word usw.

Schau mal in die Hilfe, da ist das gut erklärt.

BID = 158485

drrgne

Gerade angekommen


Beiträge: 2

Danke, das hat mir schonmal geholfen!
Ich hab jetzt folgende Tabelle im Speicher abgelegt:
.ORG $02a
digittab:
.dw $3f ; Ziffer 0
.dw $06 ; Ziffer 1
.dw $5b ; Ziffer 2
.dw $4f ; Ziffer 3
.dw $66 ; Ziffer 4
.dw $6d ; Ziffer 5
.dw $7d ; Ziffer 6
.dw $07 ; Ziffer 7
.dw $7f ; Ziffer 8
.dw $6f ; Ziffer 9

Nun will ich ausgehend vom Label digittab und einer Ziffer zwischen 0-9 einen Wert aus dieser Tabelle laden... Wie mach ich das? Ich steig bei diesen ganzen Adressierungsarten nicht durch

BID = 158505

Jornbyte

Moderator



Beiträge: 7155

Da deine Daten im Flash liegen geht es so:

ldi zh,high(digittab*2)
ldi zl,low(digittab*2)+9
lpm

Das Ergebnis ist in R0.
Du solltest auch das .dw in .db ändern, sonst ist der nächste Fehler vorprogrammiert.

.db $3f ;Byte
.dw $40af ;Word

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 158758

MinceR

Stammposter



Beiträge: 277


Zitat :

ldi zh,high(digittab*2)
ldi zl,low(digittab*2)+9
lpm

ich versteh grad nicht warum denn *2? dann ist er doch an ner ganz andern stelle.
wäre es nicht sinnvoller:

ldi zh,high(digittab) : zh auf oberes byte von adresse
ldi zl,low(digittab) : zl auf unteres byte von adresse
addiw Z, 9 :zum word register Z 9 dazuaddieren

lpm : aus adresse Z lesen und in r0


weil sonst könnts ja auch passieren das es an ner blöden stelle steht und sobald du 9 zum unteren register dazuaddierst es zufällig nen überlauf des registers gibt und du nu gaaaanz wo anders liest weil ZH eins zu wenig hat.


MfG MinceR

BID = 158769

Benedikt

Inventar

Beiträge: 6241

Die 2 kommt von dem 16bit Programmspeicher. Du verwendest jedoch 8bit Werte.

BID = 158790

MinceR

Stammposter



Beiträge: 277

stimmt stimmt..
der programmspeicher ist 1 word breit aber mit dem Z pointer benutz ich ihn als 2mal so gross aber mit byte.

hrhr.
ey moment, mir fällt gerade auf das ich somit ja auch nur 2048 befehle in nen 4k speicher krieg. das ist ja mies.

BID = 158797

Benedikt

Inventar

Beiträge: 6241


Zitat :
MinceR hat am  4 Feb 2005 15:49 geschrieben :

ey moment, mir fällt gerade auf das ich somit ja auch nur 2048 befehle in nen 4k speicher krieg. das ist ja mies.


Ja, die hohe Geschwindigkeit des AVR wird teilweise durch die 16bit OpCodes erkauft.
Naja, man kann ja nicht alles habe: Den superkleinen Code mit hoher Geschwindigkeit


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 22 Beiträge im Durchschnitt pro Tag       heute wurden bisher 10 Beiträge verfasst
© x sparkkelsputz        Besucher : 182196959   Heute : 3367    Gestern : 4612    Online : 790        18.10.2024    18:26
7 Besucher in den letzten 60 Sekunden        alle 8.57 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0246329307556