TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: amospi 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
for(i=0;i<700;i++). Realmente no se que es lo que pasa. Cuando lo llevo al segundo FOR 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
#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
#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)
-
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 !
-
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
-
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:
-
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!!!!
-
Gracias muchachos, esa era la falla, lo probé y me funcionó. Yo tengo en mis notas que
unsigned short i;
, asigna una variable de 16 bits, no se si tendré un error.
-
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!