PIC Assembler: Daten im Programmspeicher ablegen

OP #3655236
Lesenswert?
• ▲
▼
Hallo Zusammen,

ich möchte gerne Daten im Speicher des PIC16F616 ablegen und diese 
später im Programm abrufen. Ich habe diesbezüglich schon zwei Varianten 
ausprobiert:

Tabelle

   IDATA
   db    0xFA
   db    0xFB

oder
  retlw  0xFA
  retlw  0xFB


In beiden Varianten stehen die Werte zwar dann im HEX File aber immer 
gefolgt von einer 0x34. Was hat dieser Wert zu bedeuten?

Vielen Dank,

Ernie
Gast #3655328
Lesenswert?
• ▲
▼
Es gibt program memory und data memory.Program memory ist wo das program 
abgelegt wird und es ist nicht veränderbar wärend des program läuft.
Deswegen kannst du nur deine daten im EEPPOM oder im Arbeisspeicher 
ablegen, alerdings werden sie im Arbeisspeicher nach dem ausschalten 
gelöscht.
#3655330
Lesenswert?
• ▲
▼
Sascha T. schrieb:
>
> Ich wollte mir eigentlich im Programm die Adresse berechnen und jetzt
> müsste ich ja den OPCODE berücksichtigen!

Bei Verwendung von RETLW data gibts es nichts zu berücksichtigen.

Bei direkten Zugriff auf den Flashspeicher via PMADRL:PMADRH etc. muss 
auch nichts berechnet werden. Es wird immer der Inhalt der Flashadresse 
in ganzer Breite (je nach PIC 12/14/....Bit) gelesen und in 
PMDATH:PMDATL zurückgegeben. Die Daten stehen dann in PMDATL, der Inhalt 
von PMDATH ist bei den "kleinen" PIC unbrauchbar weil nur 4 bzw. 6 Bit 
physikalisch implementiert sind.
OP #3655364
Lesenswert?
• ▲
▼
Vielen Dank, ich habe jetzt auch mal viel bei SPRUT gelesen und die 
Tabelle folgendermaßen angelegt:

TABELLE

    addwf PCL,f
    retlw 0x5F
    retlw 0x1F
    retlw 0x5F
    retlw 0x1F
    retlw 0x5F

Jetzt müsste ich doch den Aufruf im Programm folgendermaßen machen:

   movlw   3
   call    TABELLE
   movwf   Temp

Damit würde ich dann den dritten Wert der Tabelle erhalten und Temp 
speichern, oder?
#3655397
Lesenswert?
• ▲
▼
Nein den 4.
Unmittelbar nach Lesen des Befehls <addwf PCL,f> wird der PC um 1 erhöht 
und zu diesem Wert wird der Inhalt von W addiert. Zählung also wie 
"Üblich" bei 0 beginnend.

Hier noch ein Link wo die ganzen Fallen und deren Umgehung (Page 
boundaries) beschrieben sind, wie auch "berechnete" GOTO und CALL 
Anweisungen.
http://ww1.microchip.com/downloads/en/AppNotes/00556e.pdf
#6168547
Lesenswert?
• ▲
▼
Zusammenfassung: Daten in (hier: 14-Bit) Flash-Speicher ablegen:
1
 de  "ABCÄÖÜ"        ; legt UTF-8 in die Low-Bytes ab, Nullen in die High-Bytes (wenn Quelltext in UTF-8 vorliegt)
2
 dt  "ABCÄÖÜ"        ; wie oben, aber 0x34 ins High-Byte = retlw
3
;de  L"ABCÄÖÜ"       ; Syntaxfehler
4
 de  0x1234          ; legt 0x0034 ab
5
 da  0x1234          ; legt 0x1234 ab
6
 da  '1','2','3','4' ; legt effektiv UTF-16 ab, aber nicht bei Umlauten!
7
;da  '12'            ; Syntaxfehler
8
;da  L'1',L'2',L'Ä'  ; Syntaxfehler
9
 da  "1","2","3","4" ; Legt jedes Zeichen 7-Bit in den High-Teil ab, also '1'<<7, '2'<<7 usw.
10
 da  "1234"          ; Legt '1'<<7|'2' und '3'<<7|'4' ab
11
 dw  1234            ; legt - wie da - 0x1234 ab
12
 db  0x12,0x34       ; legt 0x12 in das High-Byte(!), 0x34 in das Low-Byte
Leider keine Möglichkeit, UTF-16 (<0x4000) abzulegen! Würde für alle 
Buchstabenschriften reichen.

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.