PIC Strings im Flash ablegen

Gast #41862
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
Angehängte Dateien:
Gast #41863
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
Gast #41864
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?
Gast #41865
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren