Hallo,
kann mir bitte jemand erklären, wie ich in einer externen
Assemblerfunktion auf die Adresse einer Variable zugreifen kann?
Es geht konkret um eine Assembler-ISR für INT0, die bei Aufruf den
aktuellen TCNT1-Wert in eine Variable schreiben soll.
In etwa so ("Variable" ist unsigned int):
Aufruf der ISR:
...
in r16, TCNT1L
in r17, TCNT1H
st low(Variable),r16   // speichern von r16 in Variable
st high(Variable), r17 // speichern von r17 in Variable
...
Hoffe, mich halbwegs verständlich ausgedrückt zu haben.
Herzlichen Dank!
Peter
P.S.: Bitte nicht mit RTFM antworten, ich sitze jetzt schon seit 4
Stunden über der Einbindung von Assemblerdateien und komme nicht mehr
weiter.
  Hallo, hat sich erledigt, mit lo8(Variable) und hi8(Variable) ins Z-Register geht's. Kann man so auch auf struct-Variablen zugreifen? in etwa: ... ldi ZL,lo8(Variable.Var1) ldi ZH,hi8(Variable.Var1) in r16, TCNT1L in r17, TCNT1H st Z+, r16 st Z+, r17 ... (In dieser Form funktioniert es allerdings nicht) Danke! Peter
Hallo Jörg, danke für die Antwort! Ist es aber vielleicht möglich, auf Arrayelemente zugreifen zu können? Danke, Peter
Wenn Du deren Adresse resp. deren Offset zur Startadresse des Arrays selber berechnest, dann ja.
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
Mit Google-Account einloggen
  Noch kein Account? Hier anmelden.