desktop

¿Cómo limitar el valor de una variable en PICBasic?

Hola a todos. Espero estén muy bien.

Resulta que soy nuevo en esto de la programación de PIC en PICBasic.
Estoy realizando un contador de 90 segundos para mantener un relay activo los segundos que he seleccionado con un PIC16F628A, el cual tiene 2 pulsadores, uno para subir los segundos y otro para bajarlos.

El problema es que limito la variable para un máximo de 90 y un mínimo de 0.
Al estar probándolo en ISIS, en algunas ocasiones funciona bien y en otras ocasiones no me respeta los parámetros de 0 a 90, llega a dar todo el valor de la variable Byte.

Muchas gracias por su ayuda.
Código:
DEFINE OSC 4 '4 MHZ 

 CMCON = 7      
 DATO VAR BYTE    
 SE var BYTE  
 BUZZ VAR PORTB.1
 RLY VAR  PORTB.2
 MAS Var PORTb.7
 MEN VAR PORTB.6
 SYMBOL SW = PORTB.4






inicio:
     Pause 200  
     IF Mas = 0 THEN 
     DATO = DATO +1 
     IF DATO = 90 THEN DATO = 0
     PAUSE 50
     ENDIF 
    
     
     IF MEN = 0 THEN 
     DATO = DATO - 1
     IF DATO = 0 THEN DATO = 90
     PAUSE 50
     ENDIF
 
Última edición por un moderador:
Hola. Las comparaciones deben estar antes de sumar o restar.

Ejercicio:
Revisa lógicamente que pasa con el programa si entras a decrementar y dato ya es "0" e ídem para el caso de la suma si ya entras con el dato valiendo 90 en la estructura de programa como la tienes actualmente.
Saludos.

Ric.
 
Última edición por un moderador:
Buenos días.

Nunca he programado en PicBasic pero en VBasic, sería algo así (funciona) :)

Supongo que con pequeños cambios funcionará igualmente.

Subir:

If cuenta = 89 Then
cuenta = 0
Exit Sub
EndIf

If cuenta < 90 Then
cuenta = cuenta + 1
EndIf

End Sub

---------------------------------------------------
Bajar:

If cuenta = 0 Then
cuenta = 89
Exit Sub
End If

If cuenta > 0 Then
cuenta = cuenta - 1
EndIf

End Sub


La cuenta se hace en bucle, cuando se supera el 89, la siguiente cuenta será 0, y en modo descendente, de 0 pasará a 89

Si quitas la parte en Negrita, la cuenta será de 0 a 89 y de 89 a 0, no hará bucle.

Sal U2
 
Atrás
Arriba