Paso 5: Montar el código.
El código es esencialmente determinar cuándo alguien ha convertido el disco y entonces hace detección de bordes en la señal (determinación de transiciones de baja-alta) hasta la esfera retrocede a su estado inicial. Después de un recuento del número de veces que mide una transición de la señal, luego parpadea el LED en consecuencia.
Por ejemplo, si usted marca 3, el PIC cuenta tres transiciones de menor a mayor y luego parpadear un LED 3 veces.
El LED, como puede haber deducido, no es necesario para que esto funcione y está allí para darle feedback visible. Se puede sustituir ningún dispositivo de salida que estimes necesario.
*********************
Aquí está algo de código:
*********************
CPU = 16F877
MHZ = 20
CONFIG 16254
var palabra de Clicker
startcountin var palabra
countclicks var palabra
repvar var palabra
Palabra de var clacker
largefig var palabra
principal:
countclicks = 0
repvar = 0
' establece/restablece los valores
nivel B2
rctime B2, 1, startcountin
countclicks = 0
Si startcountin > 10 entonces goto countmeup
' comprueba si marcado y que va a la subrutina si tiene
Goto principal
'================
countmeup:
alto B1
rctime B1, 1, clacker
' juegos de comparar el valor
Goto countmeuploop
'================
countmeuploop:
alto B1
rctime B1, 1, clicker
' cheques con valor
largefig = clacker + 100
' establece un valor para el umbral que será más grande
' que 0 pero menor que los valores posibles de pin de alto
Si largefig < clicker entonces
countclicks = countclicks + 1
endif
' agrega 1 valor cada vez que se registra una baja a la transición de alta
nivel B2
rctime B2, 1, startcountin
Si startcountin < 10 entonces
Si countclicks > 0 entonces
Goto blink
otra cosa
Goto principal
endif
endif
' comprueba si el dial se retrocedió de nuevo a su estado inicial
' si tiene y marcó un número va a la rutina de LED
' en caso contrario, si no hay número marcó va a principal
clacker = clicker
' restablece el valor de comparación con el valor de pin actual
Goto countmeuploop
' no se detiene en todo en esta rutina!
'================
luz intermitente:
repvar = repvar + 1
' cuenta cada repetición de esta rutina
B3 alta
PAUSE 1000
bajo B3
PAUSE 1000
' parpadea el LED
Si repvar = countclicks entonces
repvar = 0
Goto principal
endif
' si las repeticiones es igual al número de veces que el LED debe parpadear
' a continuación, vuelve a la rutina principal
Goto intermitente