Autor Tema: codigo ccs no funciona no responde a las condiciones  (Leído 6364 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Mikro-77

  • PIC12
  • **
  • Mensajes: 93
codigo ccs no funciona no responde a las condiciones
« en: 12 de Abril de 2013, 23:14:14 »
Hola queria preguntar si alguien sabe porque este codigo no me funciona

if ((float)temperaturadecimal < temperatura1)
output_high(pin_B0);
else
output_low(pin_B0);

if ((float)temperaturadecimal < temperatura2)
output_high(pin_B1);
else
output_low(pin_B1);

se supone que si (float)temperaturadecimal es menor a temperatura1 y temperatura2 tendrian que estar B0 y B1 en estado alto pero solo se pone en estado alto B1 pero si ago

if ((float)temperaturadecimal < temperatura2)
output_high(pin_B1);
else
output_low(pin_B1);

if ((float)temperaturadecimal < temperatura1)
output_high(pin_B0);
else
output_low(pin_B0);

se pone B0 en estado alto! esto esta dentro del while(true)...
// si quieres entender el universo, piensa en energia, frecuencia y vibración. Nikola Tesla.

// Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #1 en: 13 de Abril de 2013, 01:29:22 »
¿Puedes poner el código completo del programa?, ¿con qué micro estás trabajando?

Desconectado Mikro-77

  • PIC12
  • **
  • Mensajes: 93
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #2 en: 13 de Abril de 2013, 13:39:46 »
hola gracias por tu interes, estoy con un 16f877 el codigo es ese !

while (true)
{
if ((float)temperaturadecimal < temperatura1)
output_high(pin_B0);
else
output_low(pin_B0);

if ((float)temperaturadecimal < temperatura2)
output_high(pin_B1);
else
output_low(pin_B1);
}

la pregunta es si deverian ponerse los dos pines en alto si la variable (float)temperaturadecimal es < a temperatura1 y temperatura 2?? pasa que soy novato en ccs!
// si quieres entender el universo, piensa en energia, frecuencia y vibración. Nikola Tesla.

// Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #3 en: 13 de Abril de 2013, 13:50:43 »
Yo creo que el problema esta en el casting que estas haciendo.
Habria que ver que tipo de datos son temperaturadecimal  y temperatura, y que valores tienen.

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #4 en: 13 de Abril de 2013, 13:55:09 »
¿Puedes poner el código completo del programa?, ¿con qué micro estás trabajando?

hola gracias por tu interes, estoy con un 16f877 el codigo es ese !

Hola Miko-77, obviamente ese no es el código completo!!! Yo también creo que sin ver al menos el encabezado del programa en donde están las declaraciones de variables, fuses, includes, etc, va a ser muy difícil que alguien te ayude.

Saludos!

Desconectado Mikro-77

  • PIC12
  • **
  • Mensajes: 93
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #5 en: 13 de Abril de 2013, 14:29:03 »
# include <16f877a.h>
# device *=16 //Use 16 bit pointers (for 14 bit parts)
# device *=16
# device adc=10
# use delay(clock=4M)
# include <lcd.c>
#fuses xt,nowdt,noput,nobrownout,nolvp,noprotect


float temperatura0;
float temperatura1;
float temperatura2;
float temperatura3;
float temperatura4;
float temperatura5;
float temperatura6;
float temperatura7;

float contadorconfiguracion;
float temperaturadecimal;
//float temperaturaentero;

void main()
{

//*******************************
delay_ms(20);
setup_adc_ports (all_analog);
//setup_adc_ports(RE0_RE1_RE3_ANALOG);//entrada del LM35
setup_adc(ADC_CLOCK_INTERNAL);
setup_COUNTERS(RTCC_internal.rtcc_div_1);//marca de divicion


//*******************************

lcd_init();
delay_ms(350);

//lcd_putc("\f"); //Limpia pantalla
contadorconfiguracion = 0;
temperaturadecimal = 0;

while(true)
{
set_adc_channel(0);
delay_ms(20);
temperatura0=(float)read_adc()/2;

set_adc_channel(1);
delay_ms(20);
temperatura1=(float)read_adc()/2;

set_adc_channel(2);
delay_ms(20);
temperatura2=(float)read_adc()/2;

set_adc_channel(3);
delay_ms(20);
temperatura3=(float)read_adc()/2;

set_adc_channel(4);
delay_ms(20);
temperatura4=(float)read_adc()/2;

set_adc_channel(5);
delay_ms(20);
temperatura5=(float)read_adc()/2;

set_adc_channel(6);
delay_ms(20);
temperatura6=(float)read_adc()/2;

set_adc_channel(7);
delay_ms(20);
temperatura7=(float)read_adc()/2;

if(input(Pin_C0)==1)
{//contadorconfiguracion = 1;
//printf(lcd_putc,"\f");
contadorconfiguracion = contadorconfiguracion + 1;
delay_ms(200);}

if (contadorconfiguracion == 0)  //si no se pulso configuracion entonces
{
if(temperatura0>6)
{temperatura0 = temperatura0-0.5;}
if(temperatura0>25)
{temperatura0 = temperatura0-0.5;}
if(temperatura0>45)
{temperatura0 = temperatura0-0.5;}
/*if(temperatura0>65)
{temperatura0 = temperatura0-0.5;}
if(temperatura0>85)
{temperatura0 = temperatura0-0.5;}
if(temperatura0>104)
{temperatura0 = temperatura0-0.5;}
if(temperatura0>124)
{temperatura0 = temperatura0-0.5;}
if(temperatura0>144)
{temperatura0 = temperatura0-0.5;}*/
lcd_gotoxy(1,1);
printf(lcd_putc,"%0.1f",temperatura0);

if(temperatura1>6)
{temperatura1 = temperatura1-0.5;}
if(temperatura1>25)
{temperatura1 = temperatura1-0.5;}
if(temperatura1>45)
{temperatura1 = temperatura1-0.5;}
/*if(temperatura1>65)
{temperatura1 = temperatura1-0.5;}
if(temperatura1>85)
{temperatura1 = temperatura1-0.5;}
if(temperatura1>104)
{temperatura1 = temperatura1-0.5;}
if(temperatura1>124)
{temperatura1 = temperatura1-0.5;}
if(temperatura1>144)
{temperatura1 = temperatura1-0.5;}*/
lcd_gotoxy(12,1);
printf(lcd_putc,"%0.1f",temperatura1);

if(temperatura2>6)
{temperatura2 = temperatura2-0.5;}
if(temperatura2>25)
{temperatura2 = temperatura2-0.5;}
if(temperatura2>45)
{temperatura2 = temperatura2-0.5;}
/*if(temperatura2>65)
{temperatura2 = temperatura2-0.5;}
if(temperatura2>85)
{temperatura2 = temperatura2-0.5;}
if(temperatura2>104)
{temperatura2 = temperatura2-0.5;}
if(temperatura2>124)
{temperatura2 = temperatura2-0.5;}
if(temperatura2>144)
{temperatura2 = temperatura2-0.5;}*/
lcd_gotoxy(1,2);
printf(lcd_putc,"%0.1f",temperatura2);

if(temperatura3>6)
{temperatura3 = temperatura3-0.5;}
if(temperatura3>25)
{temperatura3 = temperatura3-0.5;}
if(temperatura3>45)
{temperatura3 = temperatura3-0.5;}
/*if(temperatura3>65)
{temperatura3 = temperatura3-0.5;}
if(temperatura3>85)
{temperatura3 = temperatura3-0.5;}
if(temperatura3>104)
{temperatura3 = temperatura3-0.5;}
if(temperatura3>124)
{temperatura3 = temperatura3-0.5;}
if(temperatura3>144)
{temperatura3 = temperatura3-0.5;}*/
lcd_gotoxy(12,2);
printf(lcd_putc,"%0.1f",temperatura3);}


if (contadorconfiguracion == 1) //se pulso configuracion
{//printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"%0.1f",temperatura4);
if(temperatura4>6)
{
temperatura4 = temperatura4-0.5;}
if(temperatura4>25)
{
temperatura4 = temperatura4-0.5;}
if(temperatura4>45)
{
temperatura4 = temperatura4-0.5;}

lcd_gotoxy(12,1);
printf(lcd_putc,"%0.1f",temperatura5);
if(temperatura5>6)
{
temperatura5 = temperatura5-0.5;}
if(temperatura5>25)
{
temperatura5 = temperatura5-0.5;}
if(temperatura5>45)
{
temperatura5 = temperatura5-0.5;}

lcd_gotoxy(1,2);
printf(lcd_putc,"%0.1f",temperatura6);
if(temperatura6>6)
{
temperatura6 = temperatura6-0.5;}
if(temperatura6>25)
{
temperatura6 = temperatura6-0.5;}
if(temperatura6>45)
{
temperatura6 = temperatura6-0.5;}

lcd_gotoxy(12,2);
printf(lcd_putc,"%0.1f",temperatura7);
if(temperatura7>6)
{
temperatura7 = temperatura7-0.5;}
if(temperatura7>25)
{
temperatura7 = temperatura7-0.5;}
if(temperatura7>45)
{
temperatura7 = temperatura7-0.5;}
}

if (contadorconfiguracion == 2)
{//lcd_gotoxy(1,1);
//Lcd_putc ("temperatura en :");
lcd_gotoxy(1,2);
printf(lcd_putc,"%0.1f",temperaturadecimal);
lcd_gotoxy(5,2);
printf(lcd_putc,"            ");
delay_ms(200);

if(input(Pin_C1)==1)
{(float)temperaturadecimal = (float)temperaturadecimal+0.50;
}
if(input(Pin_C2)==1)
{(float)temperaturadecimal = (float)temperaturadecimal-0.50;
}
}

if (contadorconfiguracion >= 3)
{
contadorconfiguracion = 0;
lcd_putc("\f"); //Limpia pantalla
}

if ((float)temperaturadecimal > temperatura1)
output_high(pin_B0);
else
output_low(pin_B0);

if ((float)temperaturadecimal > temperatura2)
output_high(pin_B1);
else
output_low(pin_B1);

}
}
// si quieres entender el universo, piensa en energia, frecuencia y vibración. Nikola Tesla.

// Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #6 en: 13 de Abril de 2013, 16:10:10 »
Hola Mikro-77, tu primera pregunta es:

Citar
Hola queria preguntar si alguien sabe porque este codigo no me funciona

Código: C
  1. if ((float)temperaturadecimal < temperatura1)
  2. output_high(pin_B0);
  3. else
  4. output_low(pin_B0);
  5.  
  6. if ((float)temperaturadecimal < temperatura2)
  7. output_high(pin_B1);
  8. else
  9. output_low(pin_B1);

Pero en el programa completo pones:

Código: C
  1. if ((float)temperaturadecimal > temperatura1)
  2. output_high(pin_B0);
  3. else
  4. output_low(pin_B0);
  5.  
  6. if ((float)temperaturadecimal > temperatura2)
  7. output_high(pin_B1);
  8. else
  9. output_low(pin_B1);

La respuesta a tu pregunta con el código del primer post es si, de tal manera que si temperaturadecimal < temperatura1 ,solamente pin_B0 se pondrá en estado alto, e independientemente de este resultado si temperaturadecimal < temperatura2, solamente pin_B1 se pondrá en estado alto.  Me gustaría preguntarte que sensor de temperatura usas y en que parte estás convirtiendo el valor de 10 bits, que estás recibiendo, en temperatura.  También veo que le estás haciendo casting a variables que no lo necesitan (todas tus variables son float).  Para recibir los valores ADC yo te recomendaría, por claridad, crear una variable tipo int16 para recibir el valor de 10 bits de la conversión ADC y luego si quieres hacer operaciones tipo float con este valor, ahí si le aplicas el casting. Por ejemplo:

Código: C
  1. long valor_adc = 0;
  2.  
  3.  
  4. set_adc_channel(0);
  5. delay_ms(20);
  6. valor_adc = read_adc();
  7. temperatura0=(float)valor_adc/2.0;

Saludos!

Desconectado Mikro-77

  • PIC12
  • **
  • Mensajes: 93
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #7 en: 13 de Abril de 2013, 19:12:39 »
Hola gracias por responder bmb, en el titulo dice codigo ccs no funciona no responde a las condiciones  :) es importante empezar a leer por el titulo para tener una idea del tema me decian las maestras, de todas maneras yo nunca les hice caso  :D el tema es que los dos pines tienen que prender si las condiciones se dan y algo ago mal ya sea en el casting o en algun lado, uso el lm35 por otro lado tu detalle es importante y gracias por tirarme las orejas con la variable long valor_adc = 0; no me di cuenta de hacer eso pero el detalle y el costo de esto es que ahora tengo un error en el compilador el error archiconocido es error 71 out of rom a segment or the program is too large main, otra cosa es que mis variables son float pero no se como pueda hacer esto sin usar float  :5]

float temperaturadecimal;
float temperatura0;

while (true)
{
if ((float)temperaturadecimal > temperatura1)
}

help me  :?
« Última modificación: 13 de Abril de 2013, 20:39:02 por Mikro-77 »
// si quieres entender el universo, piensa en energia, frecuencia y vibración. Nikola Tesla.

// Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Mikro-77

  • PIC12
  • **
  • Mensajes: 93
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #8 en: 13 de Abril de 2013, 19:45:38 »
estoy cambiando las variables de tipo float a int para ahorrar espacio asi no me da el error (error 71 de rom un segmento o el programa principal es demasiado grande)
// si quieres entender el universo, piensa en energia, frecuencia y vibración. Nikola Tesla.

// Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #9 en: 13 de Abril de 2013, 20:08:17 »
... en el titulo dice codigo ccs no funciona no responde a las condiciones  :) es importante empezar a leer por el titulo ...

Mmmmhhh si, tienes razón, debí leer el título.  Te ofrezco disculpas.

Saludos!

Desconectado Mikro-77

  • PIC12
  • **
  • Mensajes: 93
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #10 en: 13 de Abril de 2013, 20:34:52 »
y no te las acepto porque no tenes porque pedirme disculpas amigo! demaciado que me estas ayudando!!  :-/ el problema que tengo ahora es que si uso variables flotantes pierdo memoria rom y si uso enteros no tengo presicion las dos cosas me sirven pero creo que tendria que declarar todas las variables de tipo int y ver de que forma muestro floats in the lcd  :D y despues ver como ago para solucionar este tema  :?

if ((float)temperaturadecimal < temperatura1)
output_high(pin_B0);
else
output_low(pin_B0);

if ((float)temperaturadecimal < temperatura2)
output_high(pin_B1);
else
output_low(pin_B1);

y tener dos pines en alto si las dos condiciones se cumplen

saludos amigo bmb
« Última modificación: 13 de Abril de 2013, 20:37:31 por Mikro-77 »
// si quieres entender el universo, piensa en energia, frecuencia y vibración. Nikola Tesla.

// Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #11 en: 13 de Abril de 2013, 20:54:23 »
Que tal Yo recomendaria para hacer las comparaciones trabajar con long y de acuerdo al resultado luego pasarlo a float para porcesar el resultado  :mrgreen:
Te recomendaria que le heches un ojo a esto.

Saludos

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #12 en: 13 de Abril de 2013, 20:59:02 »
Ok, intenta así, aunque creo que vas a terminar cambiándote a un PIC con más memoria:

Código: C
  1. # include <16f877a.h>
  2. # device *=16 //Use 16 bit pointers (FOR 14 bit parts)
  3. # device adc=10
  4.  
  5. #fuses xt,nowdt,noput,nobrownout,nolvp,noprotect
  6. # use delay(clock=4M)
  7.  
  8. # include <lcd.c>
  9.  
  10. float temperatura0;
  11. float temperatura1;
  12. float temperatura2;
  13. float temperatura3;
  14. float temperatura4;
  15. float temperatura5;
  16. float temperatura6;
  17. float temperatura7;
  18. float contadorconfiguracion;
  19. float temperaturadecimal;
  20. long valor_adc = 0;
  21. //FLOAT temperaturaentero;
  22.  
  23. void main()
  24. {
  25.    //*******************************
  26.    delay_ms(20);
  27.    setup_adc_ports (all_analog);
  28.    //setup_adc_ports(RE0_RE1_RE3_ANALOG);//entrada del LM35
  29.    setup_adc(ADC_CLOCK_INTERNAL);
  30.    setup_COUNTERS(RTCC_internal.rtcc_div_1);//marca de divicion
  31.    //*******************************
  32.    lcd_init();
  33.    delay_ms(350);
  34.    //lcd_putc("\f"); //Limpia pantalla
  35.    contadorconfiguracion = 0;
  36.    temperaturadecimal = 0;
  37.  
  38.    WHILE(true)
  39.    {
  40.       set_adc_channel(0);
  41.       delay_ms(20);
  42.       valor_adc = read_adc();
  43.       temperatura0=(FLOAT)(valor_adc/2);
  44.       set_adc_channel(1);
  45.       delay_ms(20);
  46.       valor_adc = read_adc();
  47.       temperatura1=(FLOAT)(valor_adc/2);
  48.       set_adc_channel(2);
  49.       delay_ms(20);
  50.       valor_adc = read_adc();
  51.       temperatura2=(FLOAT)(valor_adc/2);
  52.       set_adc_channel(3);
  53.       delay_ms(20);
  54.       valor_adc = read_adc();
  55.       temperatura3=(FLOAT)(valor_adc/2);
  56.       set_adc_channel(4);
  57.       delay_ms(20);
  58.       valor_adc = read_adc();
  59.       temperatura4=(FLOAT)(valor_adc/2);
  60.       set_adc_channel(5);
  61.       delay_ms(20);
  62.       valor_adc = read_adc();
  63.       temperatura5=(FLOAT)(valor_adc/2);
  64.       set_adc_channel(6);
  65.       delay_ms(20);
  66.       valor_adc = read_adc();
  67.       temperatura6=(FLOAT)(valor_adc/2);
  68.       set_adc_channel(7);
  69.       delay_ms(20);
  70.       valor_adc = read_adc();
  71.       temperatura7=(FLOAT)(valor_adc/2);
  72.  
  73.       IF(input(Pin_C0)==1)
  74.       {
  75.          //contadorconfiguracion = 1;
  76.          //printf(lcd_putc,"\f");
  77.          contadorconfiguracion = contadorconfiguracion + 1;
  78.          delay_ms (200) ;
  79.       }
  80.  
  81.       IF (contadorconfiguracion == 0)  //si no se pulso configuracion entonces
  82.       {
  83.          IF(temperatura0>6)
  84.          {temperatura0 = temperatura0-0.5;}
  85.          IF(temperatura0>25)
  86.          {temperatura0 = temperatura0-0.5;}
  87.          IF(temperatura0>45)
  88.          {temperatura0 = temperatura0-0.5;}
  89.          /*IF(temperatura0>65)
  90.          {temperatura0 = temperatura0-0.5;}
  91.          IF(temperatura0>85)
  92.          {temperatura0 = temperatura0-0.5;}
  93.          IF(temperatura0>104)
  94.          {temperatura0 = temperatura0-0.5;}
  95.          IF(temperatura0>124)
  96.          {temperatura0 = temperatura0-0.5;}
  97.          IF(temperatura0>144)
  98.          {temperatura0 = temperatura0-0.5;}*/
  99.          lcd_gotoxy(1,1);
  100.          printf(lcd_putc,"%0.1f",temperatura0);
  101.  
  102.          IF(temperatura1>6)
  103.          {temperatura1 = temperatura1-0.5;}
  104.          IF(temperatura1>25)
  105.          {temperatura1 = temperatura1-0.5;}
  106.          IF(temperatura1>45)
  107.          {temperatura1 = temperatura1-0.5;}
  108.          /*IF(temperatura1>65)
  109.          {temperatura1 = temperatura1-0.5;}
  110.          IF(temperatura1>85)
  111.          {temperatura1 = temperatura1-0.5;}
  112.          IF(temperatura1>104)
  113.          {temperatura1 = temperatura1-0.5;}
  114.          IF(temperatura1>124)
  115.          {temperatura1 = temperatura1-0.5;}
  116.          IF(temperatura1>144)
  117.          {temperatura1 = temperatura1-0.5;}*/
  118.          lcd_gotoxy(12,1);
  119.          printf(lcd_putc,"%0.1f",temperatura1);
  120.  
  121.          IF(temperatura2>6)
  122.          {temperatura2 = temperatura2-0.5;}
  123.          IF(temperatura2>25)
  124.          {temperatura2 = temperatura2-0.5;}
  125.          IF(temperatura2>45)
  126.          {temperatura2 = temperatura2-0.5;}
  127.          /*IF(temperatura2>65)
  128.          {temperatura2 = temperatura2-0.5;}
  129.          IF(temperatura2>85)
  130.          {temperatura2 = temperatura2-0.5;}
  131.          IF(temperatura2>104)
  132.          {temperatura2 = temperatura2-0.5;}
  133.          IF(temperatura2>124)
  134.          {temperatura2 = temperatura2-0.5;}
  135.          IF(temperatura2>144)
  136.          {temperatura2 = temperatura2-0.5;}*/
  137.          lcd_gotoxy(1,2);
  138.          printf(lcd_putc,"%0.1f",temperatura2);
  139.  
  140.          IF(temperatura3>6)
  141.          {temperatura3 = temperatura3-0.5;}
  142.          IF(temperatura3>25)
  143.          {temperatura3 = temperatura3-0.5;}
  144.          IF(temperatura3>45)
  145.          {temperatura3 = temperatura3-0.5;}
  146.          /*IF(temperatura3>65)
  147.          {temperatura3 = temperatura3-0.5;}
  148.          IF(temperatura3>85)
  149.          {temperatura3 = temperatura3-0.5;}
  150.          IF(temperatura3>104)
  151.          {temperatura3 = temperatura3-0.5;}
  152.          IF(temperatura3>124)
  153.          {temperatura3 = temperatura3-0.5;}
  154.          IF(temperatura3>144)
  155.          {temperatura3 = temperatura3-0.5;}*/
  156.          lcd_gotoxy(12,2);
  157.          printf (lcd_putc, " %0.1f", temperatura3);
  158.       }
  159.  
  160.       IF (contadorconfiguracion == 1) //se pulso configuracion
  161.       {
  162.          //printf(lcd_putc,"\f");
  163.          lcd_gotoxy(1,1);
  164.          printf(lcd_putc,"%0.1f",temperatura4);
  165.  
  166.          IF(temperatura4>6)
  167.          {
  168.             temperatura4 = temperatura4 - 0.5;
  169.          }
  170.  
  171.          IF(temperatura4>25)
  172.          {
  173.             temperatura4 = temperatura4 - 0.5;
  174.          }
  175.  
  176.          IF(temperatura4>45)
  177.          {
  178.             temperatura4 = temperatura4 - 0.5;
  179.          }
  180.  
  181.          lcd_gotoxy(12,1);
  182.          printf(lcd_putc,"%0.1f",temperatura5);
  183.  
  184.          IF(temperatura5>6)
  185.          {
  186.             temperatura5 = temperatura5 - 0.5;
  187.          }
  188.  
  189.          IF(temperatura5>25)
  190.          {
  191.             temperatura5 = temperatura5 - 0.5;
  192.          }
  193.  
  194.          IF(temperatura5>45)
  195.          {
  196.             temperatura5 = temperatura5 - 0.5;
  197.          }
  198.  
  199.          lcd_gotoxy(1,2);
  200.          printf(lcd_putc,"%0.1f",temperatura6);
  201.  
  202.          IF(temperatura6>6)
  203.          {
  204.             temperatura6 = temperatura6 - 0.5;
  205.          }
  206.  
  207.          IF(temperatura6>25)
  208.          {
  209.             temperatura6 = temperatura6 - 0.5;
  210.          }
  211.  
  212.          IF(temperatura6>45)
  213.          {
  214.             temperatura6 = temperatura6 - 0.5;
  215.          }
  216.  
  217.          lcd_gotoxy(12,2);
  218.          printf(lcd_putc,"%0.1f",temperatura7);
  219.  
  220.          IF(temperatura7>6)
  221.          {
  222.             temperatura7 = temperatura7 - 0.5;
  223.          }
  224.  
  225.          IF(temperatura7>25)
  226.          {
  227.             temperatura7 = temperatura7 - 0.5;
  228.          }
  229.  
  230.          IF(temperatura7>45)
  231.          {
  232.             temperatura7 = temperatura7 - 0.5;
  233.          }
  234.       }
  235.  
  236.       IF (contadorconfiguracion == 2)
  237.       {
  238.          //lcd_gotoxy(1,1);
  239.          //Lcd_putc ("temperatura en :");
  240.          lcd_gotoxy(1,2);
  241.          printf(lcd_putc,"%0.1f",temperaturadecimal);
  242.          lcd_gotoxy(5,2);
  243.          printf(lcd_putc,"            ");
  244.          delay_ms(200);
  245.  
  246.          IF(input(Pin_C1)==1)
  247.          {
  248.             temperaturadecimal = temperaturadecimal+0.50;
  249.          }
  250.  
  251.          IF(input(Pin_C2)==1)
  252.          {
  253.             temperaturadecimal = temperaturadecimal-0.50;
  254.          }
  255.       }
  256.  
  257.       IF (contadorconfiguracion >= 3)
  258.       {
  259.          contadorconfiguracion = 0;
  260.          lcd_putc("\f"); //Limpia pantalla
  261.       }
  262.  
  263.       IF (temperaturadecimal > temperatura1)
  264.          output_high(pin_B0);
  265.       ELSE
  266.          output_low(pin_B0);
  267.  
  268.       IF (temperaturadecimal > temperatura2)
  269.          output_high(pin_B1);
  270.       ELSE
  271.          output_low(pin_B1);
  272.    }
  273. }

Si yo hago aquí una pequeña prueba con esa parte de código que estás cuestionando, simplemente funciona (quítale el casting como te muestro en el código), de modo que no se por que no te ha de funcionar.  Lo que te preguntaba ahora, es sobre la forma en que la variable que captura la conversión de ADC, convierte este valor a temperatura.  Eso lo debes revisar tu mismo, porque no tengo la forma de hacer el montaje físico del circuito para ver el problema.  Tienes un programador ICD?  Si es así, te va a ser muy útil aprender a usar el modo debug de este.

Saludos!

Desconectado Mikro-77

  • PIC12
  • **
  • Mensajes: 93
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #13 en: 13 de Abril de 2013, 21:04:44 »
y seguro que tenes razon!!! pero lo que me da bronca, o no se como le diran en tu pais, es que el pic no llega a usar toda la memoria y supuestamente tengo que pasar a otro banco de memoria con la instruccion # separate pero resulta que ni eso puedo hacer porque no necesito funciones ni procedimientos! son solo condiciones lo que necesito!  :5]

pd: 18f ahi vamos  :D
« Última modificación: 13 de Abril de 2013, 21:19:40 por Mikro-77 »
// si quieres entender el universo, piensa en energia, frecuencia y vibración. Nikola Tesla.

// Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Mikro-77

  • PIC12
  • **
  • Mensajes: 93
Re: codigo ccs no funciona no responde a las condiciones
« Respuesta #14 en: 13 de Abril de 2013, 21:07:19 »
Hola ralf2 gracias por tu interes amigo! una pregunta... si uso long no me trunca el valor que esta despues de la coma??
// si quieres entender el universo, piensa en energia, frecuencia y vibración. Nikola Tesla.

// Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.