Forum: Projekte & Code PIC Strings im Flash ablegen


von MooseChecker (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

da ja immer wieder PIC's hier auftauchen und auch die User mit LCD auch 
dort zunehmen, stelle ich nun meine Lösung Texte bequem zu handlen 
(soweit es auf dem PIC möglich ist) hier rein.

Sicherlich hat es schon so manchen genervt, die Character einzeln mit 
< movlw  'A' >  zu laden. Sollte dem so sein, bietet dieses Beispiel 
bestimmt eine Lösung.

Die Texte sind im Flash durch die Source abgelegt und werden durch einen 
16Bit-Zeiger, der auf einen String zeigt, in einen RAM-Buffer (z.B. 
LCDBUFFER oder UARTBUFFER) geladen. Dort steht der String dann zur 
weiteren Verarbeitung bereit.

MooseChecker

von Steffen (Gast)


Lesenswert?

Den Text könnte man auch mit DA im Speicher ablegen. Dabei werden die 
einzelnen ASCII-Zeichen im 7-Bit Format abgespeichert und man benötigt 
für zwei ASCII-Zeichen nur ein WORD im Programmspeicher.

Noch ein kleiner Tipp: Bei den 18Fxx werden mit DE deklarierte Werte im 
EEPROM und nicht an der aktuellen Programmspeicheradresse abgelegt.

MfG
Steffen

von Markus Burrer (Gast)


Lesenswert?

Ist das bei PIC's nicht Platzverschwendung? Die haben doch im Flash eine 
krumme Worbreite von 12 oder 14 Bit. Da muß man doch für ein Zeichen 
(Byte) ein komplettes Wort (12 oder 14 Bit) opfern. Oder ist das bei den 
neuesten mittlerweile behoben?

von Steffen (Gast)


Lesenswert?

Wie gesagt, bei den 14-Bit-Pic´s lassen sich Texte mit DA .... als 7-Bit 
ASCII speichern also 2 Zeichen pro Word. Funktionieren tut das aber nur 
mit den PIC´s, die ihren Programmspeicher auch lesen können also z.B. 
mit der 16F87x Serie. Mit einem 16f62x funktioniert das nicht. Da muss 
ich auf RETLW XX -Folgen zurückgreifen also ein Zeichen pro Word.

MfG
Steffen

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
Noch kein Account? Hier anmelden.