vuelvo a pedir su ayuda amigos me tope con la instruccion for, que estoy siguiendo del microcursillo de foro vi estos casos
como funciona la instruccion for
revisando los programas coche fantastico y juego de luces observe dos
situaciones del for
en el primer caso "coche fantastico"
for(i=1;i<8;i++)
{
output_b(cont);
delay_ms(100);
cont=cont*2;
}
1.-¿al entrar en la condicion for cuando i=1 se incrementa en ese mismo instante
i++??? o sea i=2 y luego despues realiza output_b(cont);
delay_ms(100);
cont=cont*2;
o esta otra es la forma correcta?
entra a for i=1
luego reliza la instruccion
output_b(cont);
delay_ms(100);
cont=cont*2;
y aqui es donde i=i+1
2.- Esta bien esta parte for(i=1,i<8,i++) no seria for(i=0,i<8,i++)
sguiendo lo que hace yo supongo que hace asi
i=1 1<8 " si " muestra output_b(cont)
i=2 2<8 " si " muestra output_b(cont)
i=3 3<8 " si " muestra output_b(cont)
i=4 4<8 " si " muestra output_b(cont)
i=5 5<8 " si " muestra output_b(cont)
i=6 6<8 " si " muestra output_b(cont)
i=7 7<8 " si " muestra output_b(cont)
i=8 8<8 " no " NO muestra output_b(cont)
en la ultima parte no estaria mostrando el ultimo led en el puerto b
cosa que viendo en proteus muestra todos los leds
yo lo cambie a cero lo que decia ser correcto de
i=0 1<8 " si " muestra output_b(cont)
i=1 1<8 " si " muestra output_b(cont)
i=2 2<8 " si " muestra output_b(cont)
i=3 3<8 " si " muestra output_b(cont)
i=4 4<8 " si " muestra output_b(cont)
i=5 5<8 " si " muestra output_b(cont)
i=6 6<8 " si " muestra output_b(cont)
i=7 7<8 " si " muestra output_b(cont)
i=8 8<8 " no " se sale ???? digo que salta al otro for que viene de abajo del otro barrido
en este caso tendria que iluminar todos los leds cosa que no lo hace en proteus
el primer caso estaria el correcto pero no entiendo como realiza este ciclo for?????
3.- en el otro el "juego de luces"
hay otro for
for(i=0;i<4;i++)
{
output_b(leds[ i ]);
delay_ms(100);
}
en este caso estaria correcto cosa que tambien se simula bien, en i recorreria 4 barridos
i=0,1,2,3 hasta tres mostraria todos los leds de los costados de dos a dos, pero en el
barrido 3 en el momento de salir se incrementaria a 4 pero llegando en for 4<4
no se cumpliria esa condicion y estaria bien porque ya no queremos que nos muestre nada mas
ya no entraria a la instruccion y se saltaria a lo que viene?
muestro estos dos ejemplos porque no entiendo en el primer caso porque no se cumple cuando es for(i=0;i<8;i++)?????