Autor Tema: Como hacer que una vareable no cambie hasta darle un nuevo valor  (Leído 1335 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Hola queria hacer que una vareable no cambie hasta darle un nuevo valor, pero como se hace?

Código: [Seleccionar]
int8 dly0;
int8 dly_igual;

...

if (dly0 == dly0)
   
   {
   }

   else

   dly0 = dly_igual;

...

   }

esta forma es valida o hay alguna mejor?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Como hacer que una vareable no cambie hasta darle un nuevo valor
« Respuesta #1 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 )
« Última modificación: 20 de Mayo de 2015, 21:56:15 por KILLERJC »

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Re: Como ejecutar algo solo si una vareable a cambiado por un nuevo valor
« Respuesta #2 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

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Como hacer que una vareable no cambie hasta darle un nuevo valor
« Respuesta #3 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
  1. int8 valor_nuevo,valor_viejo;
  2.  
  3. while(1)
  4. {
  5. if (valor_nuevo != valor_viejo)
  6.  {
  7.   .....
  8.   ....
  9.   ...
  10.   valor_viejo = valor_nuevo;
  11.  }
  12. }
  13.  
  14. funcion_interrupcion_UART()
  15. {
  16.    valor_nuevo = DATO_RECIBIDO_UART;
  17. }

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
  1. int8 dato,flag;
  2.  
  3. while(1)
  4. {
  5. if (flag)
  6.  {
  7.   .....
  8.   ....
  9.   ...
  10.   flag =0;
  11.  }
  12. }
  13.  
  14. funcion_interrupcion_UART()
  15. {
  16.    dato = DATO_RECIBIDO_UART;
  17.    flag = 1;
  18. }

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.


 

anything