fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Simplificar un codi...
 
Avisos
Vaciar todo

Simplificar un codigo

6 Respuestas
3 Usuarios
0 Reactions
2,397 Visitas
vcs
Respuestas: 114
 vcs
Topic starter
(@vcs)
Estimable Member
Registrado: hace 18 años

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

Responder
5 respuestas
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

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

Responder
vcs
Respuestas: 114
 vcs
Topic starter
(@vcs)
Estimable Member
Registrado: hace 18 años

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é.

Responder
Lorth
Respuestas: 188
(@lorth)
Estimable Member
Registrado: hace 17 años

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,

Responder
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

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

Responder
Página 1 / 2
Compartir: