Hola amigos, quería ver con un 16f877 la temperatura de 2 sensores comunicados por I2C, pero no encuentro la manera de leer mas de un sensor, quería saber si alguien me podía ayudar... les paso el programa principal y el archivo
#include <SensorI2C.h>
#include <lcd.c>
#include <TEMP_ds1621.c>
#use fast_io(D)
#define use_portd_lcd TRUE // Indico que enchufo el lcd al puerto b
int dat_in, cnt, hr,min,sec;
int16 address=0;
float dato;
float dato1;
void main() {
lcd_init();
enable_interrupts(int_rda);
enable_interrupts(global);
address=0;
while(1){
lcd_gotoxy(1,1);
printf(lcd_putc,"ENTRA WHILE"); //Visualiza en LCD la temperatura
delay_ms(300);
init_temp(0x01); //Inicializa el DS1621
init_temp(0x02);
delay_ms(100);
tiempo(hr,min,sec); //Lee tiempo del DS1307
dato = read_full_temp(0x01); //Lee temperatura del DS1621
dato = read_full_temp(0x02);
lcd_gotoxy(1,1);
printf(lcd_putc,"Temp1=%4.1f C\n",dato); //Visualiza en LCD la temperatura
delay_ms(500);
lcd_gotoxy(1,1);
printf(lcd_putc,"Temp2=%4.1f C\n",dato1); //Visualiza en LCD la temperatura
delay_ms(500);
}
}
----------------------------------------------------------------------------------------------------------------------------------------------
Esta es la libreria del sensor
void init_temp(int address) {
i2c_start();
i2c_write(0x90|(address<<1)); //Genera primer byte (1001A2A1A0W)
i2c_write(0xee); //Inicia conversión
i2c_stop();
}
float read_full_temp(int address) {
signed int datah;
int datal;
float tura;
i2c_start();
i2c_write(0x90 |(address<<1)); //Genera primer byte (1001A2A1A0-W)
i2c_write(0xaa); //Leer temperatura
i2c_start();
i2c_write(0x91 |(address<<1)); //Genera primer byte (1001A2A1A0-R)
datah=i2c_read(); //Lectura parte alta
datal=i2c_read(0); //Lectura parte baja y NACK
i2c_stop();
tura=datah; //Conversión a flotante
if (datal==128) tura=tura+0.5;
return(tura);
}

Espero que puedan ayudarme a entender como buscar en otra dirección.
Graciasss