TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Mikro-77 en 17 de Enero de 2015, 22:25:27
-
Hola buen dia o buenas noches, queria consultar por un codigo en picc que no alcanzo a entender ya que soy demaciado novato, el codigo es este
IF ((temperaturadecimal + 2 < restemp) | (temperaturadecimal - 2 > restemp))
{
generate_tone(DO_NOTE[4],62.5);
//delay_ms(250);
//generate_tone(DO_NOTE[4],62.5);
//printf(lcd_putc,"\f");
lcd_gotoxy(1,3);
printf(lcd_putc,"CONTROLE TEMPERATURA");
lcd_gotoxy(1,4);
printf(lcd_putc,"CONTROLE TEMPERATURA");
delay_ms(1000);
lcd_gotoxy(1,3);
printf(lcd_putc," ");
lcd_gotoxy(1,4);
printf(lcd_putc," ");
}
else
output_low(pin_D0);
donde temperaturadecimal es del tipo float y restemp esta dentro de una funcion como int16 pero despues se declara como float, mi pregunta es si dentro del IF estaria todo correcto cosa que no creo...
-
estaria bueno ver la otra parte del codigo. Digo donde se declara como int y como float.
Pero si podes compararlos
float > int
C termina casteando int a float y hace la comparacion.
http://www.tutorialspoint.com/cprogramming/c_type_casting.htm
http://stackoverflow.com/questions/759014/comparing-a-float-to-an-integer-in-c
-
Hola gracias por responder, estará bien declarado?
#fuses nowdt,noput,nobrownout,nolvp/*,noprotect*/
int contadorconfiguracion;
float temperaturadecimal;
...
void sht_rd (float & temp, float & truehumid)
{
int16 restemp, reshumid;
float realhumid;
restemp = 0; truehumid = 0;
restemp = measuretemp(); //measure temp
reshumid = measurehumid(); //measure RH
calculate_data (restemp, reshumid, temp, realhumid, truehumid); //calculate temp & RH
}
//***** Function to initialise SHT75 on power-up *****
void sht_init (void)
{
comreset(); //reset SHT75
delay_ms(20); //delay for power-up
}
...
float restemp, truehumid;
delay_ms(50);
lcd_init();
delay_ms(50);
sht_init();
...
while(true)
{
...
}