Autor Tema: Otros problemas con C  (Leído 1976 veces)

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

Desconectado amospi

  • PIC10
  • *
  • Mensajes: 15
Otros problemas con C
« en: 28 de Mayo de 2008, 14:05:22 »
Hola Muchachos en mi nuevo programa tengo los sigientes problemas: me ingresa al seguno for, pero no se sale, se queda ahí, únicamente se sale cuando se da uno de los dos IF que están dentro de este for; creo que está bien planteado
Código: [Seleccionar]
for(i=0;i<700;i++).  Realmente no se que es lo que pasa.  Cuando lo llevo al segundo FOR
Código: [Seleccionar]
for(i=0;i<=1000;i++), pasa lo mismo, se queda ahí, no se sale.

Otra consulta: cómo hago para que me salgan los números de las líneas cuando pego un código???.  Las líneas están activas en mi editor pero, no las puedo seleccionar.

Gracias por colaborarme

Este es el código
Código: [Seleccionar]
#include "C:\Archivos de programa\PICC\hopper.h"
char n=' ';
int cont= 0;
unsigned char x=0;
unsigned short i;
int j;
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_spi(FALSE);
   setup_counters(RTCC_INTERNAL,RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   output_high (pin_c0);
   output_high (pin_c1);
iter:
   for(;;)

   {
    if (!input (pin_b0))
     {
       for(i=0;i<700;i++)
        {
          delay_ms(10);
          if (input (pin_b0))
            {
              output_low (pin_c1);
              delay_ms (400);
              output_high (pin_c1);
              i==0;
              goto iter;
             }

           if (!input (pin_b1))
             {
              i==0;
              goto iter;
             }
         }
         i==0;
         output_low (pin_c0);
         for(i=0;i<=1000;i++)
         {
          delay_ms(10);
         if(input (pin_b0))
           {
            output_low (pin_c1);
            delay_ms (2000);
            output_high (pin_c1);
            output_high (pin_c0);
            i==0;
            break;
           }
         }
        output_high(pin_c0);
       }
     }
 }

Este es el .H

Código: [Seleccionar]
#include <16F873.h>
#device adc=8
#use delay(clock=4000000)
#fuses NOWDT,RC, NOPUT, NOPROTECT, BROWNOUT, LVP, NOCPD, NOWRT, NODEBUG
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7,bits=8)


Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Otros problemas con C
« Respuesta #1 en: 28 de Mayo de 2008, 15:25:30 »
Hola deberias verificar cual es el alcance de un unsigned short en tu compilador, porque si es de 0-255 nunca llegas a 700, podrias probar probar reemplazando el int por unsigned long.

Saludos !
« Última modificación: 28 de Mayo de 2008, 16:02:05 por RICHI777 »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Otros problemas con C
« Respuesta #2 en: 28 de Mayo de 2008, 16:28:51 »
Hola.

Revisando la ayuda del CCS encontre lo siguiente: El int1 equivale a un numero de un bit, no tiene signo y el equivalente en ansiC es short entonces la declaracion unsigned short i, primero que todo no tiene sentido en el unsigned  y segundo, el valor maximo que puede tomar la variable i es 2!!!! por lo que nunca va a llegar a 700.

Prueba cambiar a int16 i a ver que sucede

Saludos
El papel lo aguanta todo

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Otros problemas con C
« Respuesta #3 en: 28 de Mayo de 2008, 16:33:24 »
Saludos!
Totalmente de acuerdo con ustedes, Richi y MLO!
Ese seguramente es el problema... la variable i tiene que ser declarada como int16.
Nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Otros problemas con C
« Respuesta #4 en: 28 de Mayo de 2008, 16:37:05 »
Citar
el valor maximo que puede tomar la variable i es 2!!!!

Lo siento ....... estos dedos solo responden bien en el sweep y en el alternate picking pero en el teclado son un desastre!!!!
El papel lo aguanta todo

Desconectado amospi

  • PIC10
  • *
  • Mensajes: 15
Re: Otros problemas con C
« Respuesta #5 en: 29 de Mayo de 2008, 14:56:56 »
Gracias muchachos, esa era la falla, lo probé y me funcionó.  Yo tengo en mis notas que
Código: [Seleccionar]
unsigned short i;
, asigna una variable de 16 bits, no se si tendré un error.

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Otros problemas con C
« Respuesta #6 en: 29 de Mayo de 2008, 15:52:59 »
Hola amospi, La declaración de un tipo de datos unsigned short es en forma predeterminada equivalente a la declaración int1, es decir a la de un bit, con lo cual la variable podrá tomar valores 0 o 1. Digo en forma predeterminada porque puedes cambiar las declaraciónes estándar en tu programa mediante el uso de la directiva de preprocesador #TYPE. Espero haber sido de ayuda.

Saludos!
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."


 

anything