Kapier was nicht. Bitte um Hilfe

Gast #152376
Lesenswert?
• ▲
▼
Guten Abend

Ihr werdet mich jetzt sicher auslachen aber ich komme mit folgendem
Code nicht ganz klar.
Was ich nicht verstehe sind die Zeilen 7-9! Wann erfolgt ein Sprung?
CPI vergleicht zl u. 0x60 und setzt die Flags
CPC vergleicht zh u. r0 und bezieht Carry Flag mit ein
Sprung wenn Zero-Flag =0 also z.b. x und y sind gleich

01  ldi  zl, low(ramend)
02  out  spl, zl
03  ldi  zh, high(ramend)
04  out  sph, zh        ;if >= Mega8
05  clr  r0
06_ini1:  st  z, r0        ;clear SRAM
07  cpi  zl, 0x60
08  cpc  zh, r0
09  brne  _ini2
10  ldi  zl, 30        ;clear register
11_ini2:  sbiw  zh:zl, 1
12  brne  _ini1

Sorry nochmals --> ich steige dda nicht durch.
Gast #152377
Lesenswert?
• ▲
▼
Das ist eine Routine um den SRAM zu löschen (initialisieren).
Unter anderem initialisiert/löscht die auch die Register r0 bis r29
welche sich im sogenannten Register-File von Adresse 0 bis 31 (inkl. zl
und zh) befinden.
Durch das Prüfen der Adresse 0x60 wird der I/O-Bereich übersprungen und
dann auf Adresse 30 - 1 (nachträgliches sbiw = 29) umgeschaltet.

Gruß
Andi
Gast #152379
Lesenswert?
• ▲
▼
Die Routinen kenne ich aus einem Programm von Peter Danneger. Ist
wirklich "genial" kurz und einfach und funktioniert prima.

ABER. Richtig sauber ist das ganze nur für AVRs ohne extended
IO-Bereich (0x60-0xFF). Der würde bei diesen Typen nicht! vom löschen
ausgenommen. Um den IO-Bereich bei solchen AVRs komplett rauß zu
halten, müsste der Vergleich (Zeile 7-9) "aufgebohrt" werden.
Möglicherweise kann man sich aber auch mit dem Löschen der IO-Register
arangieren, da die meisten nach einem RESET eh den Wert 0 haben
sollten.

Jörg

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.