PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datentabelle aus Programmspeicher in Ram laden



the_Ghost666
22.10.2007, 21:38
Moin zusammen.

Ich arbeite momentan in meinem Praxissemestern mit Attinys und hab nun endlich vor meine eigenen Basteleien mit meinen PICs fortzusetzen.

Es geht darum, dass ich eine größere Menge Daten im Programmspeicher ablegen will, die ich dann im Programm auslesen und ins Ram speichern will.

Es gibt dazu ja Assembler Anweisungen wie DB, DA, DT und DATA.
Diese ermöglichen das Ablegen von Bytes (DB), Ascii-Codes (DA), Bytes mit RETLW Befehl (DT) oder DATA (Mischung aus DB und DA).

Nun hab ich noch den Code der Attiny im Kopf und würde einfach einen Pointer auf die Adresse setzen und die Sachen ins Ram schreiben

Der PIC16F hat dazu ja ein FSR Register, allerdings bekomme ich es nicht hin, die Tabellenadresse mittels Label in das FSR zu bekommen.
Hat jemand von euch eine Lösung?
Ich bin doch langsam am Schwanken, ob die PICs so das wahre sind.

MfG
Björn

PICture
23.10.2007, 06:19
Hallo the_Ghost666!

Der FSR Register ist nur für indirekte Adressierung im RAM und nicht im Programmspeicher. Das kannst Du nutzen um die Daten vom W-Register im RAM sequenziell zu speichern.

Vielleicht findest Du auch etwas unter "Tabellen" im Artikel "PIC Assembler" in Wiki.

MfG

the_Ghost666
23.10.2007, 17:19
Hab gerade etwas gegoogelt, die PIC18 Serie hat 3 Pointer, die wie das FSR Register funktionieren, und einen Pointer auf den Programmspeicher, mh mal schauen ob ich umsteige, ich denke das wir kompliziert.

PICVB
23.10.2007, 17:21
Hallo,
Also ich Habe mir ein Tabelle für die Umwandlung von BCD nach 7-Segment-ANzeige erstellt. Das sieht dann folgender Maßen aus:

;************************************************* ************************************************** *********************************
; Tabelle der Siebensegmentcodes von 0 bis 9 an RB1...RB7
;************************************************* ************************************************** *********************************
tab addwf PCL,1 ; Addiert W und PCL. Ergebnis steht in PCL,was Sprung zum entsprechenden Ausgabewert ergibt
retlw 0x7E ; 0
retlw 0xC ; 1
retlw 0xB6 ; 2
retlw 0x9E ; 3
retlw 0xCC ; 4
retlw 0xDA ; 5
retlw 0xFA ; 6
retlw 0xE ; 7
retlw 0xFE ; 8
retlw 0xDE ; 9


Hoffe es Hilft dir vllt.

Gruß Carsten

Siro
21.11.2007, 17:55
Die 18F Serie hat spezielle Register TBLPTRL,TBLPTRH,TBLPTRU
und TABLAT. Mit denen kann man direkt auf den Programmspeicher
"Code Bereich" zugreifen.
Bei den kleineren PIC Serien geht das wie schon von erwähnt wurde nur mittels RETLW xx . Hier muss man aber auf Seiten (PAGE) Übergange achten. Solche Tabellen sollte man im unterem Speicherbereich anlegen, sonst wirds kompliziert.

mit freundlichen Bits
Bernd Sirozynski