Hola a todos, soy Carlos y soy nuevo en el foro
Tengo un problema extraño con mi programa para un velocista, por fin he conseguido acotar un poco el problema y este es el resultado simplificado para comprobar el error:
Es con el comparador "<" (y tambien "<="), que no funciona bien.
OUTPUT_LOW(ledPlaca);
delay_ms(5000);
numero = -94;
if(numero < 0) OUTPUT_HIGH(ledPlaca); else OUTPUT_LOW(ledPlaca);//Hace OUTPUT_LOW(ledPlaca); (incorrecto)
numero += 100;
delay_ms(5000);
if(numero > 0) OUTPUT_LOW(ledPlaca); else OUTPUT_HIGH(ledPlaca);//Hace OUTPUT_LOW(ledPlaca); (correcto)
Resultado: LED siempre apagado
OUTPUT_LOW(ledPlaca);
delay_ms(5000);
numero = -94;
if(numero > 0) OUTPUT_HIGH(ledPlaca); else OUTPUT_LOW(ledPlaca);//Hace OUTPUT_HIGH(ledPlaca); (incorrecto)
numero += 100;
delay_ms(5000);
if(numero < 0) OUTPUT_LOW(ledPlaca); else OUTPUT_HIGH(ledPlaca);//Hace OUTPUT_HIGH(ledPlaca); (correcto)
Resultado:
LED 5 segundos apagado
LED 5 segundos encendido
LED sigue encendido indefinidamente
Que sistemas/programas uso:
- PIC 16F877 (fusibles NOWDT HS NOPUT NOPROTECT BROWNOUT LVP NOCPD NOWRT NODEBUG)
- Compilador CSS (Funcionando sobre wine, en ubuntu linux)
- Programador USBpicprog (por ICSP).
Antes no me habia dado problemas (lo mas probable es que no necesitase comparar numeros negativos, y no me diese el error).
Por ahora pienso que el problema debe estar en el compilador, voy a probar instalandolo en windows y comento que tal.
A ver si alguien puede ayudarme un poco, ya que es una faena no disponer de ese comparador.
Un saludo!