Può essere utile inserire dati nella EEEPROM
all' atto della programmazione del chip.
In pratica la zona EEPROM può essere dichiarata e
inizializzata nel suo contenuto come si fa normalmente con le altre aree di
memoria programma.
(Va compreso che qui stiamo pre caricando il contenuto della
EEPROM e non scrivendo come abbiamo visto finora.)
Un esempio con l' uso delle direttive ORG e DB:
Si avrà la
seguente situazione:
|
|
|
eeptxt1
|
0xF00000-0xF0000b
|
contiene i caratteri
ASCII di "Messaggio1"
|
eeptxt2
|
0xF0000C-0xF00014
|
contiene i caratteri
ASCII di "Warning !"
|
|
0xF00015
|
contiene 0, che
completa il numero dispari di byte , dato che il
messaggio
precedente è composto da un numero dispari di caratteri
|
eeptb1
|
0xF00016-19
|
contiene 00h, 05h, 01h,
04h
|
eeptb2
|
0xF001A-1C
|
contiene
16h, 37h, 11h
|
|
0xF001D
|
contiene 0, che completa il
numero dispari di byte , dato la stringa
precedente è composta da un
numero dispari di caratteri
|
Ovvero, lo statement DB di MPASM lavora su word (2 bytes) ed
eventualmente completa con uno 00h.
Va notato che non sarà possibile utilizzare le label di
indirizo assegnato nella forma semplice:
; scrivi messaggio da
EEPROM
;---------------------------------------------------------
SCRMEEP
movlw
eeptxt1 ;
indirizzo del messaggio
movwf EEADR
; carica indirizzo
|
in quanto MPASM genererà il messaggio:
Warning[202] C:\PIC\PICbyDS\samples\SCRMEEP.ASM
252 : Argument out of range. Least significant bits used.
dato che eeptxt2
vale 0xF00000, che è un indirizzo a 24 bit, mentre l' oggetto di movlw
può essere al massimo di 8 bit.
Per un massimo di 256 bytes di EEPROM, l' indirizzo
relativo è costituito solamente dai primi 8 bit meno significativi dell'
indirizzo assoluto, il che ci permetterà di scrivere:
;
scrivi messaggio da EEPROM
;---------------------------------------------------------
SCRMEEP
movlw low
(eeptxt1) ;
indirizzo relativo del
messaggio
movwf EEADR
;
carica indirizzo
|
scrittura che viene accettata dall' Assembler e compilata
correttamente.
Un' altra via può essere quella di dichiarare un offset in
fase di definizione della memoria EEPROM:
ORG
0xF00000
; area EEPROM
; carico stringhe di testo
eep_txt1
DB "Messaggio #1"
eep_txt2 DB "Warning !"
;
carico tabelle
eep _tb1
DB 0x00, 0x05, 0x01, 0x04
eep_tb2
DB d'22', d'55'
DB d'11'
eeptxt1
EQU low (eep_txt1)
eeptxt2 EQU low (eep_txt2)
eeptb1 EQU low (eep_tb1)
eeptb2 EQU low (eep_tb2)
|
I valori inizializzati nel sorgente saranno scritti, all'
atto della programmazione del chip, direttamente in EEPROM senza alcuna
particolare altra necessità di azione da parte dell' utente.