Indirekte Adressierung Mega 88

Gast #672241
Lesenswert?
• ▲
▼
Hallo!
Ich stehe irgendwie auf dem schlauch!
ich möchte eine einfache schleife haben die fünf mal die Werte aus dem 
Input Capture Register des Mega88 ausliest und nacheinander im speicher 
ableget. Ich habe schon einige erfahrung mit dem Motorola 68hc12.

mit den x und y register möchte ich die schleife realisieren.
in x soll die anzahl der schleifendurchgänge stehen und in y die adresse 
in die ich die werte schreibe. also x soll runtergzählt werden und bei y 
soll nach dem schreiben erhöt werden.

nun habe ich aus der hilfe von avr studio folgendes gelesen und versucht 
in code umzuwandeln:

clr r27
ldi r26,0x4
clr r29
clr r28
loop:
  sts Y+,ICR1L
  sts Y+,ICR1H
  dec X
  brne loop

funktioniert aber nicht.
was muss ich noch beachten. kann mir auch jemand sagen wo ich dazu 
textstellen finde?
vielen dank schon mal!
#672246
Lesenswert?
• ▲
▼
> clr r27
> ldi r26,0x4
> clr r29
> clr r28
> loop:
>   sts Y+,ICR1L
>   sts Y+,ICR1H
>   dec X
>   brne loop

Fast. Du musst noch den Umweg über "Zwischenregister" gehen:
1
clr XH
2
ldi XL, 0x04
3
clr YH
4
clr YL
5
loop:
6
  in temp, ICR1L
7
  st Y+, temp
8
  in temp, ICR1H
9
  st Y+, temp
10
  sbiw XH:XL, 1
11
brne loop

Da du aber eh immer von ICR1 liest, kannst du dir den zweiten Pointer 
sparen und da irgendein Register verwenden (Das wolltest du mit 'x' 
vielleicht andeuten, ich bin vom X-Pointer ausgegangen -> r27:r26):
1
ldi counter, 4
2
clr YH
3
clr YL
4
loop:
5

6
Fast. Du musst noch den Umweg über "Zwischenregister" gehen:
7
[avrasm]
8
clr XH
9
ldi XL, 0x04
10
clr YH
11
clr YL
12
loop:
13
  in temp, ICR1L
14
  st Y+, temp
15
  in temp, ICR1H
16
  st Y+, temp
17
  dec counter
18
brne loop

Den Y-Pointer solltest du übrigens entsprechend initialisieren, 0 ist da 
wohl nicht so gescheit, damit schreibst du einfach irgendwohin (War 
AFAIK der IO-Bereich...).

EDIT:
@Spess53:

Das wird auch nicht funktionieren, sts erwartet als ersten Parameter 
eine Adresse (Konstante), keinen Pointer. Da braucht man st Y+.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.