Autor Tema: Problemas con estructura  (Leído 1760 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado simon365

  • PIC10
  • *
  • Mensajes: 16
Problemas con estructura
« en: 12 de Julio de 2008, 19:30:07 »
Hola a todos:
                  Tengo el problema de linkeado a la llamada al archivo lcd.c el cual me da este error:
 Error 128 "LCD1.c" Line 21(1,1): A #DEVICE required before this line

el archivo es:

struct lcd_pin_map {
   BOOLEAN unused1; // RB0
   BOOLEAN unused2; // RB1
   BOOLEAN enable;  // RB2
   BOOLEAN rs;      // RB3
   int data : 4;    // RB4-RB7
} lcd;
//
#byte lcd = 0xF81  // Direccion de la estructura "lcd".
#byte lcd = 6      // Direccion del puerto B.
#define set_tris_lcd(x) set_tris_b(x)
#define lcd_type 2           // Tipo de LCD: 0=5x7, 1=5x10, 2=2 lineas
#define lcd_line_two 0x40    // Dirección de la LCD RAM para la 2da. linea
//
//Defino la cadena de inicializacion del LCD.
BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};
struct lcd_pin_map const LCD_WRITE = {0,0,0,0,0}; // For write mode all pins are out
struct lcd_pin_map const LCD_READ = {0,0,0,0,15}; // For read mode data pins are in

//Funciones//

BYTE lcd_read_byte() {
      BYTE low,high;
      set_tris_lcd(LCD_READ);
//    lcd.rw = 1;
      delay_cycles(1);
      lcd.enable = 1;
      delay_cycles(1);
      high = lcd.data;
      lcd.enable = 0;
      delay_cycles(1);
      lcd.enable = 1;
      delay_us(1);
      low = lcd.data;
      lcd.enable = 0;
      set_tris_lcd(LCD_WRITE);
      return( (high<<4) | low);
}


void lcd_send_nibble( BYTE n ) {
      lcd.data = n;
      delay_cycles(1);
      lcd.enable = 1;
      delay_us(2);
      lcd.enable = 0;
}


void lcd_send_byte( BYTE address, BYTE n ) {

      lcd.rs = 0;
      while ( bit_test(lcd_read_byte(),7) ) ;
      lcd.rs = address;
      delay_cycles(1);
//    lcd.rw = 0;
      delay_cycles(1);
      lcd.enable = 0;
      lcd_send_nibble(n >> 4);
      lcd_send_nibble(n & 0xf);
}


void lcd_init() {
    BYTE i;
    set_tris_lcd(LCD_WRITE);
    lcd.rs = 0;
//    lcd.rw = 0;
    lcd.enable = 0;
    delay_ms(15);
    for(i=1;i<=3;++i) {
       lcd_send_nibble(3);
       delay_ms(5);
    }
    lcd_send_nibble(2);
    for(i=0;i<=3;++i)
       lcd_send_byte(0,LCD_INIT_STRING);
}


void lcd_gotoxy( BYTE x, BYTE y) {
   BYTE address;

   if(y!=1)
     address=lcd_line_two;
   else
     address=0;
   address+=x-1;
   lcd_send_byte(0,0x80|address);
}

void lcd_putc( char c) {
   switch (c) {
     case '\f'   : lcd_send_byte(0,1);
                   delay_ms(2);
                                           break;
     case '\n'   : lcd_gotoxy(1,2);        break;
     case '\b'   : lcd_send_byte(0,0x10);  break;
     default     : lcd_send_byte(1,c);     break;
   }
}

char lcd_getc( BYTE x, BYTE y) {
   char value;

    lcd_gotoxy(x,y);
    while ( bit_test(lcd_read_byte(),7) ); // wait until busy flag is low
    lcd.rs=1;
    value = lcd_read_byte();
    lcd.rs=0;
    return(value);
}
gracias-

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problemas con estructura
« Respuesta #1 en: 12 de Julio de 2008, 20:08:45 »
Hola.

Cuando incluyas las librerias, es suficiente hacerlo en el programa principal, no se debe incluir en el Source File, ya que la va a compilar como un archivo C independiente y obviamente no tiene las definiciones del dispositivo. El error que te genera es porque el archivo lcd.c no tiene el archivo de cabecera del micro a usar, es decir te esta compilando el archivo como si fuera el main.

Saludos
El papel lo aguanta todo

Desconectado simon365

  • PIC10
  • *
  • Mensajes: 16
Re: Problemas con estructura
« Respuesta #2 en: 12 de Julio de 2008, 21:40:29 »
MLO: Tal cual lo hago en el ppal.Este archivo lcd.c es al q llamo pero me da el error.

#include <16F819.h>
#device adc=10 // Conversión con 10 bits
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, WRT
#use fast_io(b)
#use delay (clock=4000000)
#include <LCD.c>             //

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problemas con estructura
« Respuesta #3 en: 12 de Julio de 2008, 22:46:22 »
Hola.

Esta correcto, mi duda es si tu ademas de colocar el #include en el programa principal, tambien lo añades en el Proyect Contex Menu, dandole click derecho a Source Files y escogiendo la opcion Add Files ... ya que asi te compilara el archivo lcd.c y aparecera ese error.

Saludos
El papel lo aguanta todo

Desconectado simon365

  • PIC10
  • *
  • Mensajes: 16
Re: Problemas con estructura
« Respuesta #4 en: 13 de Julio de 2008, 02:19:16 »
MLO:
       Me cayo la ficha, efectivamente lo habia incluido en el Source Files.
Luego de dejar un rato y volver,  las cosas se aclaran.
cha gracias.


 

anything