Mas un Include, no un define.
Gracias amigo KILLERJC
tengo problemas con estas dos instrucciones:
1. GrabarEEPROM16bits(Contador,0x00); //instruccion recomendada. Tiene errores
cont = read_16bits_eeprom(0x00); //instruccion cambiada. sigue con errores
2. Contador = LeerEEPROM16bits(0x00); //instruccion recomendada
cont = read_16bits_eeprom(0x00); // sigue con errores
Te consulto cual puede ser el error que me sale y no me deja compilar el programa.
También me sale error al agregar estas dos instrucciones
1. MyVar.valor8_1 = eeprom_read(0x00);
2. MyVar.valor8_2 = eeprom_read(0x01);
Este es el programa actual en MPLABX
// librerias
#include "mcc_generated_files/mcc.h"
#include <xc.h> //se incluye librerias xc8
#include <stdio.h>
#include <stdlib.h>
#include <htc.h>
# define LCD_RS RD6
# define LCD_EN RD7
#define LCD_DATA PORTB
#define Lib_Int_EEProm.c
char centenas, decenas, unidades; //defino variables char.solo van de 0 a 9
// declaracion de variables
union Data_EE MyVar; //main.c:15: error: (1442) type used in variable definition is incomplete
//main.c:15: warning: (374) missing basic type; int assumed
unsigned int valor16;
unsigned char valor8_1;
unsigned char valor8_2;
unsigned char centenas = 9;
unsigned char decenas = 9;
unsigned char unidades = 9;
uint16_t cont = 0;
// funciones
void lcd_init (void); //inicializacion del LCD
void set_lcd (void); //Configuracion del LCD
void lcd_puts(const char * s); //cadenas de caracteres al LCD
void lcd_putch(char c); //
void lcd_goto(unsigned char pos); // Direcciones en el LCD
void lcd_write(unsigned char c); //Escritura en el LCD
void binbcd ()
{
centenas=cont/100;
decenas=(cont%100)/10;
unidades=cont%10;
}
void main(void)
{
unidades = eeprom_read(0x00);
decenas = eeprom_read(0x01);
centenas = eeprom_read(0x02);
MyVar.valor8_1 = eeprom_read(0x00); //tengo duda si esta instruccion va aqui
MyVar.valor8_2 = eeprom_read(0x01); //tengo duda si esta instruccion va aqui
cont = read_16bits_eeprom(0x00);//Lee lo de la posicion 0x00 y 0x01, lo junta y lo pone en contador
// me sale el siguiente error
SYSTEM_Initialize(); //inicia el sistema
lcd_init(); //LLAMO FUNCION DE INICIALIZACION
while(1) //ciclo while para no hacer nada.ya mostro el mesaje
{
lcd_goto(0); // selecciono primera línea
lcd_puts("LA CARGA ES 1000 ");
lcd_goto(0x40); // Selecciono segunda línea
lcd_puts("CANTIDAD: "); //mensaje para la segunda linea
while(1)
{
while(cont<1000)
{
if(RD5==0) //Suciche para poner el contador a cero
{
__delay_ms(10);
cont=-1;
binbcd();
lcd_goto(0X4B); // Ubico centenas en poscion CB del LCD
lcd_putch(centenas+48); // sumo 48 para pasar a ASCLL
lcd_goto(0X4C); //Ubico decenas en posicion CC del LCD
lcd_putch(decenas+48); //sumo 48 para pasar a ASCLL
lcd_goto(0X4D); //Ubico unidades en posicion CE DEL LCD
lcd_putch(unidades+48); //Sumo 48 para pasar a Ascll
__delay_ms(10);
}
else
if(RD3==1) //S4 simula un sensor para activar el conteo
{ break;}
RA0=1;
__delay_ms(100);
RA0=0;
cont++;
// eeprom_write(0x09,cont);
if(unidades == 10)
{ decenas++; unidades = 0;}
else if(decenas == 10)
{ centenas++; decenas = 0;}
else if (centenas == 10)
{ centenas = 0; }
eeprom_write(0x00,unidades);
eeprom_write(0x01,decenas);
eeprom_write(0x02,centenas);
eeprom_write(0x00,MyVar.valor8_1);
eeprom_write(0x01,MyVar.valor8_2);
binbcd();
lcd_goto(0X4B); // Ubico centenas en poscion CB del LCD
lcd_putch(centenas+48); // sumo 48 para pasar a ASCLL
lcd_goto(0X4C); //Ubico decenas en posicion CC del LCD
lcd_putch(decenas+48); //sumo 48 para pasar a ASCLL
lcd_goto(0X4D); //Ubico unidades en posicion CE DEL LCD
lcd_putch(unidades+48); //Sumo 48 para pasar a Ascll
__delay_ms(100); //Incremento cuenta cada 500 ms
write_16bits_eeprom(cont,0x00); //Lee lo de la posicion 0x00 y 0x01, lo junta y lo pone en contador
}
}
}
}
void lcd_init(void) //funcion de inicializacion del LCD
{
LCD_DATA=2; // se manda el dato 2 al puerto para iniciar el LCD
set_lcd(); // se la funcion de configuracion
LCD_DATA=56; // mando el dato 56 al puerto para 8 bits,2 lineas y 5x7
set_lcd(); // llamo funcion de configuracion
LCD_DATA=12; // mando el dato 12 para prender el LCD con cursor
set_lcd();
LCD_DATA=6;
set_lcd();
LCD_DATA=1;
set_lcd();
}
void set_lcd (void) // funcion de configuracion
{
LCD_RS=0; //RS en cero para indicar al LCD que es configuracion
LCD_EN=1; // se habilita la operacion
__delay_ms(2); //retardo necesario para la operacion
LCD_EN=0; // termina la operacion
}
//Voy a una poscion especifica del LCD
void lcd_goto(unsigned char pos) // funcion de direcciones
{
LCD_RS = 0; //RS en cero para configuracion
lcd_write(0x80+pos); //sumo 80H a pos que viene con un dato
}
void lcd_write(unsigned char c) // funcion de escritura en el LCD
{
LCD_EN=1;//habilito la operacion
LCD_DATA = ( c );//mando al puerto el dato que hay en C.
__delay_ms(2); //retardo necesario para la operacion
LCD_EN=0;// termino la operacion
}
/* Escribo una cadena de caracteres en el LCD */
void lcd_puts(const char * s)
{
LCD_RS = 1; //habilito operacion
while(*s) //mientras haya caracteres en la cadena enviada
lcd_write(*s++); //pase al siguiente
}
/* Escribo un caracter en el LCD */
void lcd_putch(char c)
{
LCD_RS = 1; //habilito escritura en LCD
lcd_write( c );
}
Errores que me salen en el programa:main.c:15: error: (1442) type used in variable definition is incomplete
main.c:52: error: (198) undefined struct/union "Data_EE"
main.c:52: error: (182) illegal conversion between types
unsigned char -> union Data_EE
main.c:53: error: (198) undefined struct/union "Data_EE"
main.c:53: error: (182) illegal conversion between types
unsigned char -> union Data_EE
main.c:56: warning: (361) function declared implicit int
main.c:116: error: (198) undefined struct/union "Data_EE"
main.c:116: error: (182) illegal conversion between types
union Data_EE -> unsigned char
main.c:116: error: (181) non-scalar types can't be converted to other types
main.c:117: error: (198) undefined struct/union "Data_EE"
main.c:117: error: (182) illegal conversion between types
union Data_EE -> unsigned char
main.c:117: error: (181) non-scalar types can't be converted to other types
main.c:128: warning: (361) function declared implicit int
(908) exit status = 1
make[2]: *** [build/default/production/main.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2