Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Buenas tardes a todos
Esta vez tengo una facilita a ver si alguien me puede hechar una mano, soy un novato en esto del C y tengo un codigo muy sencillo que me ocupa muchas lineas, ahora mismo no tengo problemas porque solo estoy trasteando y no tengo problemas de espacio pero a lo mejor con alguna cosita mayor puedo tenerlos asi que quisiera ver si esto se puede optimizar en menos lineas:
if (input(PIN_B1))
{
if (pisob|=0)
{
PORTD=pisob;
delay_ms(1000);
}
if (piso1|=0)
{
PORTD=piso1;
delay_ms(1000);
}
if (piso2|=0)
{
PORTD=piso2;
delay_ms(1000);
}
if (piso3|=0)
{
PORTD=piso3;
delay_ms(1000);
}
if (piso4|=0)
{
PORTD=piso4;
delay_ms(1000);
}
if (piso5|=0)
{
PORTD=piso5;
delay_ms(1000);
}
if (piso6|=0)
{
PORTD=piso6;
delay_ms(1000);
}
if (piso7|=0)
{
PORTD=piso7;
delay_ms(1000);
}
if (piso8|=0)
{
PORTD=piso8;
delay_ms(1000);
}
if (piso9|=0)
{
PORTD=piso9;
delay_ms(1000);
}
if (piso10|=0)
{
PORTD=piso10;
delay_ms(1000);
}
if (piso11|=0)
{
PORTD=piso11;
delay_ms(1000);
}
if (piso12|=0)
{
PORTD=piso12;
delay_ms(1000);
}
if (piso13|=0)
{
PORTD=piso13;
delay_ms(1000);
}
if (piso14|=0)
{
PORTD=piso14;
delay_ms(1000);
}
if (piso15|=0)
{
PORTD=piso15;
delay_ms(1000);
}
}
donde pisob, piso1, piso2... son int, se podria simplificar??
basicamente tengo unas variables que voy escribiendo en diferentes partes del programa y llegados a un momento quiero sacarlas por el puerto.
Esto está programado en CCS.
GACIAS
vcs, Algo sencillito: sacando factor común de cada uno de los if's y utilizando las variables en una misma matriz:
if (input(PIN_B1))
{
for(i=0;i<=15;i++)
{
if (piso|=0)
PORTD=piso;
delay_ms(1000);
}
}
S2
Ranganok Schahzaman
Muchas gracias.
No pense que se podia sustituir un caracter de un nombre por una i de un bloque for.
Asias a lugo lo probaré.
Es que lo que Ranganok hace, es crearte un Array, y entonces accede a las diferentes casillas del array, que es basicamente lo que tu haces, pero con variables diferentes.
0j0 al programar de la manera que te dice Ranganok, si tienes muchos procesos simultanios, fors muy largos, y un micro un poco lento... Podrias mirarte como se programa "cooperativamente".
Pero bueno, antes de liarte con lo anterior, aprende a programar biene n C.vcs,
Hombre, yo no le pondría el delay, lo haría directamente con interrupciones y así no tienes al micro parado (y puede estar haciendo otra cosa).
S2
Ranganok Schahzaman