Forum: Mikrocontroller und Digitale Elektronik Indirektes schreiben ins SRAM über Z Pointer


von Chris Sch. (Gast)


Lesenswert?

Hallo zusammen,

ich möchte gerne Daten über die UART Schnittstelle einlesen, speichern 
und dann indirekt über den Z Pointer auslesen. Ist soweit auch kein 
Problem, nur suche ich eine elegantere Lösung zum speichern der Werte. 
Zur Zeit läuft es so ab.
1
RS232_Daten:
2
3
in  temp,          UDR
4
sts  Datenwert001,  temp
5
.
6
.
7
.
8
in  temp,          UDR
9
sts  Datenwert002,  temp
10
.
11
.
12
.
13
in  temp,          UDR
14
sts  Datenwert003,  temp
15
.
16
.
17
.
18
in  temp,          UDR
19
sts  Datenwertxxx,  temp
20
reti
21
22
.DSEG
23
Datenwert001   .byte 1
24
Datenwert002   .byte 1
25
Datenwert003   .byte 1
26
.
27
.
28
.
29
Datenwertxxx   .byte 1


Ich würde mir sehr gerne die Schreibarbeit sparen jeden einzelnen Wert 
ins SRAM zu speichern. Am liebsten wäre mir eine Schleife mit
Lade Wert ins SRAM mit Z Pointer Wert x,
Lade Wert ins SRAM mit Z Pointer Wert x+1,
... usw.

Ist das überhaupt möglich? Habe dazu im Netz nicht gefunden und im 
Datenblatt steht auch nur sehr wenig dazu.

Vielen Dank

von (prx) A. K. (prx)


Lesenswert?

Die AVR Befehlsreferenz ist ein separates Dokument.

von spess53 (Gast)


Lesenswert?

Hi

>Ist das überhaupt möglich? Habe dazu im Netz nicht gefunden und im
>Datenblatt steht auch nur sehr wenig dazu.

In der Hilfe zum AVR-Studio -> Assembler findest du auch eine 
Befehlsreferenz.

Du hast folgende Möglichkeiten:

ST Z+, Rr     Z: Post incremented

STD Z+q, Rr   Z: Unchanged, q: Displacement (<=63)

MfG Spess

von H.Joachim S. (crazyhorse)


Lesenswert?

st Z+, Rr  dürfte wohl das sein, was du suchst.

Speichert den Inhalt von Rr an der Ram-Adresse, auf die Z zeigt, 
anschliessend wird Z erhöht.

von Chris Sch. (Gast)


Lesenswert?

Ohman, klar :D
1
ld Z+, temp
2
ld z+, temp
3
.
4
.
5
.
6
st temp, -Z
7
st temp, -Z

von spess53 (Gast)


Lesenswert?

Hi

>st temp, -Z

Dir ist aber klar, was da passiert?

MfG Spess

von Chris Sch. (Gast)


Lesenswert?

Ich meinte:

st  Z+, temp
ld temp, -Z

Tippfehler

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
Noch kein Account? Hier anmelden.