Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

28/11/2013 #1


Ejemplo de I2C, con errores
Este es un ejemplo de I2C del libro Compilador C CCS y simulador PROTEUS para microcontroladores PIC, Eduardo Garcia Breijo.
Cuando compilo el programa me aparecen 100 errores y lo he revisado muchas veces y lo escribí igual que como aparece en el libro.
Agradecería mucho su ayuda, esta es una implementación de mi trabajo final para graduarme.
Código:
#include <16F876.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8,parity=N)
#use i2c(Master,sda=PIN_C4,scl=PIN_C3)

#include <lcd.c>
#include "EEPROM_24512.c"     //Ficheros driver de los perifericos
#include "RTC_ds1307.c"
#include "TEMP_ds1621.c"
#include "FLOATEE.c"

int dat_in, cnt, hr,min,sec;
int16 address=0;
int dat_serie[7];
float dato;


#int_rda              //Interrupcion para el puerto serie
   rda_isr()
   {
   dat_in=getc();  //Lee el puerto serie
   printf("\r");
   if (dat_in=\'2\') //Si es "2" se visualizan los primeros datos de la EEPROM
     {
        for(cnt=0;cnt&lt;=6;cnt++)   //Lectura de los 7 primeros bytes de la EEPROM
        {
        dat_serie[cnt]=read_ext_eeprom(cnt);
        }
        for(cnt=0;cnt&lt;=6;cnt++)   //Visualiza los primeros 7 bytes de la EEPROM
        {
        printf("Byte %u=%3u  \r",cnt,dat_serie[cnt]);
        }
     }
   }
   void main() {
      lcd_init();
      enable_interrupts(int_rda);
      enable_interrupts(global);
      address=0;
      
     printf("Pulsar 1 para leer datos\r");   //Menu para el terminal serie
     printf("Pulsar 2 para visualizar datos\r");
      
   while(1) {
   
     if(dat_in==\'1\')   //Si es "1" se inicia la lectura y grabado en la EEPROM
      {
       init_temp(0x01);     //Inicializa el DS1621
       delay_ms(100);
       tiempo(hr,min,sec);  //Lee tiempo del DS1307
       dato = read_full_temp(0x01);  //Lee temperatura del DS1621
       WRITE_FLOAT_EXT_EEPROM(address,dato);  //Guarda 4 bytes del FLOAT
       address=address+4;
       
       WRITE_EXT_EEPROM(address++,hr);   //Guarda byte de hora
       WRITE_EXT_EEPROM(address++,min);   //Guarda byte de minuto
       WRITE_EXT_EEPROM(address++,sec);   //Guarda byte de segundo
       lcd_gotoxy(1,1);
       printf(lcd_putc,"Temp=%4.1f C\n",dato);   //Visualiza la temperatura
       printf(lcd_putc,"%2u:%2u:%2u",hr,min,sec);   //Visualiza la hora
       
     if (address==0xffff) address=0;  //Cuando se termina la EEPROM vuelve
                                      //al principio
                                      
      }
   }
   }
28/11/2013 #2

Avatar de ByAxel

Hola.
En principio seria bueno saber cuales son esos 100 errores, pero es posible que no tengas algunas de las librerias puestas en #Include... que pueden ser la EEPROM, RTC_DS1307, TEMP_ds1621... las cuales no tiene el CCS.
Podria especular y especular pero hace faltan más datos (los errores...).
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.