3 dic 2012

EDATA (Escritura de Memoria EEPROM)


Sintaxis

EDATA Constante1 { ,...Constanten etc }  

Detalles


Almacena constantes o cadenas directamente en la memoria EEPROM de PICmicro.



 
Operators

  • Constante1, Constanten - valores a ser almacenados en la memoria EEPROM, los valores son almacenados  a partir de la dirección inicial 0. Esta instrucción no permite especificar la dirección de memoria de almacenamiento de los datos. Para almacenar en una dirección especifica diferente a la cero (0), es necesario usar el comando EWrite .
Ejemplo ' Almacena los datos 1000,20,255,15, y los valores ASCII para  
 ' H','e','l','l','o' en la memoria EEPROM iniciando en la dirección 0. 


   EDATA
1000 , 20 , $FF , 001111 , "Hello"



Nota

    Valores de 16-bit, 32-bit y punto flotante, pueden ser almacenados en la EEPROM, y estos son colocados  de manera tal que el byte menos significativo ocupe la primera dirección de memoria. 

    Por ejemplo,  si el valor a almacenar es 1000 con la sentencia Edata, entonces la instrucción seria la siguiente :

    EDATA 1000

Los datos en la EEPROM quedan así :  
232, 03  


Tabla de Direccionamiento  (EDATA)

     Los de la memoria EEPROM inicia en la dirección 0 y finaliza en un máximo de acuerdo a la capacidad de PICmicro.  En raras ocasiones la información almacenada en la EEPROM es una sola pieza continua de informacion, por el contrario, normamalmente es usada para almacenar valores o cadenas  de texto, de manera tal que acceder a cada uno de estos es esencial.  Considerando el siguiente codigo :
 EDATA "HOLA"
 EDATA 
"MUNDO"

      El texto "HOLA" sera almacenado a partir de la direccion, contiene 4 caracteres y cada uno ocupa un byte de la memoria EEPROM, de esta manera el texto "MUNDO" comienza a almacenarse a partir de la dirección 4, y contiene 5 caracteres; asi que la proxima cadena de texto a alamecenar estara localizada a partir de la direccion 9.   Para  acceder de manera separada a cada una de las cadenas de textos o valores es necesario mantener un registro  de la direccion de inicio o cabezera   y final de cada cadena de texto.

   Para esto un nombre de identificacion antes de la sentencia EDATA permite al compilador hacer el conteo de bytes. El compilador almacena las direcciones asociada a cada texto o valor, con un nombre de identificacion en la tabla.

 Por Ejemplo :

HOLA_TEXT  EDATA "HOLA"
MUNDO_TEXT EDATA 
"MUNDO"


  El nombre HOLA_TEXT is ahora reconocido por el compilado como una constante, y de ser la primera sentencia EDATA, esta tomara el valor  de 0, refiriendose a la direccion de inicio de la cadena "HOLA".

  

MUNDO_TEXT es una contante y mantendra un valor de 4, el cual se refiere a la direccion de inicio de la cadena d etexto "MUNDO".

Note que el identificador debe ser localizado en la misma linea que la directiva EDATA. 


Cualquier Directiva EDATA debe ser colocada en la cabecera del Programa, al igual que los simbolos, estos nombre son reconocidos en el resto del programa cada vez que estos aparezcan .



El ejemplo de abajo ilustra el uso del direccionamiento de la EEPROM:

' Muestra dos textos almacenados en la memoria EEPROM





 Include "PROTON_4.INC"      
  
 Dim
CHAR as Byte           ' Carácter
 Dim CHARPOS as Byte        
' Dirección 

HELLO EDATA
"HOLA ",0      ' Crea una cadena de Texto en la EEPROM. terminación.
WORLD EDATA "MUNDO",0       ' Crea una cadena de Texto en la EEPROM. terminación.

 Delayms
200                 ' retardo 200 ms
 Cls                        
' Limpia LCD
 CHARPOS = HELLO   
          ' CHARPOS <= direccion de inicio del texto "HOLA"
 Gosub DISPLAY_TEXT  
        ' Muestra el  texto "HOLA"
 CHARPOS = WORLD             CHARPOS <= direccion de inicio del texto "MUNDO"
 Gosub DISPLAY_TEXT  
        ' Muestra el  texto "MUNDO"
 Stop     
                   ' Fin

' subrutina pata leer y mostrar el texto almacenado en la dirección correspondiente al valor de CHARPOS

DISPLAY_TEXT:
 While
1 = 1                 ' Bucle infinito
 
CHAR = EREAD CHARPOS        ' Lee EEPROM
 If
CHAR = 0 Then Break      ' Sale del Bucle cuando CHAR = 0   (terminación)
 Print
CHAR                  ' Muestra el caracter
 Inc CHARPOS                
' Incrementa CHARPOS
 Wend                       
' Cierra bucle While
 Return                     
' Sale de la subrutina




2 comentarios: