Hola, quiero aprender a usar la EEPROM interna del 16F84A usando como compilador el XC8.
En el programa la idea es almacenar 4 mensajes en la EEPROM e ir mostrándolos por un LCD 16x2. Me estoy basando en la estructura de un programa hecho en CCS.
Estoy dando palos de ciego a parte de que hay algún fallo de sintaxis.
El código:
Los errores que me da el compilador (He puesto en los comentarios del programa el número de línea correspondiente entre paréntesis):
main.c:30: warning: illegal conversion of pointer to integer
main.c:31: warning: illegal conversion of pointer to integer
main.c:32: warning: illegal conversion of pointer to integer
main.c:33: warning: illegal conversion of pointer to integer
main.c:56: error: function or function pointer required
main.c:56: error: pointer required
main.c:57: warning: illegal conversion of integer to pointer
He mirado por el foro pero no acabo de aclararme en cuanto al procedimiento (y sintaxis) de escribir/leer en EEPROM.
Agradecería ayuda.
1 Saludo.
En el programa la idea es almacenar 4 mensajes en la EEPROM e ir mostrándolos por un LCD 16x2. Me estoy basando en la estructura de un programa hecho en CCS.
Estoy dando palos de ciego a parte de que hay algún fallo de sintaxis.
El código:
PHP:
/*
* File: main.c
* Author: nimio
*
* 16F84A
*
* COMPILADOR XC8
*
* EN ESTE PROGRAMA SE USA LA EEPROM PARA ALMACENAR 4 MENSAJES QUE SE MOSTRARÁN
* EN EL LCD 16X2
*
* Created on 5 de abril de 2013, 5:10
*/
#include <xc.h>
#include "LCD/LCDGeneric.h"
#define _XTAL_FREQ 4000000
#pragma config FOSC=XT, WDTE=OFF, PWRTE=ON, CP=OFF
void main(void) {
char ultdire=0, dire; // VARIABLES DE DIRECCIÓN ESCRITURA EEPROM Y MENSAJE.
// ÚLTIMA DIRECCIÓN Y DIRECCIÓN.
//MENSAJES A ESCRIBIR EN EEPROM INTERNA Y MOSTRAR EN LCD.
char mensaje1="MENSAJE 1"; // (30) MENSAJE 1
char mensaje2="PRUEBA"; // (31) MENSAJE 2
char mensaje3="FUNCIONAMIENTO EEPROM"; // (32) MENSAJE 3
char mensaje4="nimio 2013"; // (33) MENSAJE 4
vInitLCD();
EECON1bits.WREN=1; // HABILITA ESCRITURA
EEADR=ultdire; // SE ALMACENA LA POSICIÓN DE MEMORIA EN EEADR.
EEDATA=mensaje1; // ALMACENA EL DATO.
ultdire++;
EEADR=ultdire;
EEDATA=mensaje2;
ultdire++;
EEADR=ultdire;
EEDATA=mensaje3;
ultdire++;
EEADR=ultdire;
EEDATA=mensaje4;
for (;;) {
for (ultdire=0;ultdire<4;ultdire++) {
dire=EEADR(ultdire); // (56) ALMACENA MENSAJE DE LA DIRECCIÓN EEPROM
vPuts_LCD(dire); // (57) MUESTRA MENSAJE POR PANTALLA LCD
__delay_ms(500);
vLCD_Putc('\f'); // BORRA LCD
}
}
}
Los errores que me da el compilador (He puesto en los comentarios del programa el número de línea correspondiente entre paréntesis):
main.c:30: warning: illegal conversion of pointer to integer
main.c:31: warning: illegal conversion of pointer to integer
main.c:32: warning: illegal conversion of pointer to integer
main.c:33: warning: illegal conversion of pointer to integer
main.c:56: error: function or function pointer required
main.c:56: error: pointer required
main.c:57: warning: illegal conversion of integer to pointer
He mirado por el foro pero no acabo de aclararme en cuanto al procedimiento (y sintaxis) de escribir/leer en EEPROM.
Agradecería ayuda.
1 Saludo.