Título: Re: Como hacer que una vareable no cambie hasta darle un nuevo valor
Publicado por: KILLERJC en 20 de Mayo de 2015, 21:53:51
Una variable no va a cambiar hasta que no le des un nuevo valor.
ese if va a entrar siempre, por que si o si dly0 va a ser igual a si mismo, por lo tanto lo que esta en el else no se va a ejecutar nunca.
No entiendo cual es tu objetivo a donde queres llegar... O que estas persiguiendo ( para que lo necesitas )
Título: Re: Como ejecutar algo solo si una vareable a cambiado por un nuevo valor
Publicado por: MINDFIELD en 20 de Mayo de 2015, 22:10:34
Primero que todo pedir disculpas, el titulo esta mal! porque quiero ejecutar algo solo si dly0 a cambiado a un nuevo valor, no recuerdo como lo hacia antes, hace años cuando solia estudiar delphi 6
Título: Re: Como hacer que una vareable no cambie hasta darle un nuevo valor
Publicado por: KILLERJC en 20 de Mayo de 2015, 23:15:09
Ahora si, depende entonces de como asignas el valor. Se me ocurren 2 formas segun sea la aplicacion, doy un ejemplo
Código: C
int8 valor_nuevo,valor_viejo;
while(1)
{
if(valor_nuevo != valor_viejo)
{
.....
....
...
valor_viejo= valor_nuevo;
}
}
funcion_interrupcion_UART()
{
valor_nuevo = DATO_RECIBIDO_UART;
}
Vamos a suponer que ambas variables comienzan en 0, ocurre una interrupcion y se le asigna un dato a "valor_nuevo" Entonces cuando vuelva al programa principal van a ser distintos esas 2 varaibles, va a entrar al if y al final de if, guardo en "valor_viejo" el dato que ya paso, entonces cuando se vuelva a preguntar el if va a ocurrir que ahora son iguales. y no va a ejecutarse mas hasta que no se cargue un nuevo dato.
Deventaja: si pongo un nuevo dato que resulta ser el mismo valor que el anterior no va a detectarse que se cambio
Otro caso:
Código: C
int8 dato,flag;
while(1)
{
if(flag)
{
.....
....
...
flag=0;
}
}
funcion_interrupcion_UART()
{
dato = DATO_RECIBIDO_UART;
flag =1;
}
En este caso utilizo la variable flag para determinar si hay un dato nuevo o no, salvando de la "desventaja" (puede no serlo si no necesitas detectar un dato nuevo) del anterior.
Obviamente estos son ejemplos, donde asignas el valor a la variable puede ser cualquier lado, no solo una interrupcion.