pic assembler aus program memory laden

Gast #1808382
Lesenswert?
• ▲
▼
Hallo,

ich habe einen Pic18 und arbeite mit C18. Ich habe in C eine Variable im 
ROM definiert und eine im RAM:
1
rom unsigned char var_1[] = {0x13, 0x22, 0x20};
2
unsigned char var_2[3];

Mein Assembler code soll nun die Bytes aus var_1 nach var_2 kopieren:
1
...
2
extern var_1
3
extern var_2
4

5
code
6
asm_copy
7
movff var_1, TBLPTR ; Adresse von var_1 in Tablepointer kopieren
8
tblrd* ; laden
9
movff TABLAT, var_2 ; nach var_2 kopieren
10

11
return
12
end

Nur leider funktioniert das so nicht. Was mache ich hier falsch?
#1808476
Lesenswert?
• ▲
▼
Soweit ich mich errinnere, mußt du explizit einen const declarieren,
sonst wird das rom ins ram kopiert gleich beim Init.
Theoretisch ist deine declaration gleichwetig mit
static unsigned char var_1[] = {0x13, 0x22, 0x20};

Einfach mal das lst oder map file ansehen, welche Adresse da steht.
Gast #1808496
Lesenswert?
• ▲
▼
Muss auch beide Bytes der Adresse in den Tablepointer laden:
1
movff   HIGH(var_1), W
2
movwf   TBLPTRH
3
movff   LOW(var_1), W
4
movwf   TBLPTRL
5
tblrd*
6
movff   TABLAT, W
7
movwf   var_2
8

9
...
10

11
return
12
end

Die Adresse zeigt an die richtige stelle, nur wenn ich wie oben vorgehe, 
steht im Tablepointer eine andere Adresse.
Gast #1808565
Lesenswert?
• ▲
▼
> movff   HIGH(var_1), W
> movwf   TBLPTRH
> movff   LOW(var_1), W
> movwf   TBLPTRL

Mit movff wird doch der Inhalt einer Speicherzelle angesprochen.


Für die Adresse sollte es imho so aussehen

movlw   HIGH(var_1), W
movwf   TBLPTRH
movlw   LOW(var_1), W
movwf   TBLPTRL

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.