Paso 4: Microcontrolador código
Explicación del código:
Cronometraje:
La relación mágica para convertir tiempo regular al nuevo tiempo de la tierra es de 0,25 minutos neto por 1 segundo (o 1 minuto neto para cada 4 segundos de tiempo transcurrido). Se calcula con los cocientes 360 grados red por 24 horas y 60 minutos de red por cada grado de la red.
A cuenta de la red, el código utiliza Timer1 incorporado del PIC (TMR1) módulo con un cristal de 32,768 kHz externo para timekeeping. Para lograr la relación mágica de 1 minuto neto por 4 segundos, podemos utilizar el registro de 16 bits TMR1 con un prescaler de 1:2. (Desborda el TMR1 16 bits 65536 cuentas, cristal funciona a 32768 cuentas por segundo. 65536/32768 = desbordamiento cada 2 segundos. Sólo tiene que añadir en el prescaler de 1:2 y listo! Interrumpir cada 4 segundos!)
Pantalla:
El PIC se ejecuta en el oscilador interno de 4MHz. Se analizan las cinco pantallas de LED de 7 segmentos en un intervalo fijo controlado por Timer0 (TMR0). Cada vez que se desborda el TMR0, el PIC se cambiará a la siguiente pantalla (multiplexación por división de tiempo). La clave de división de tiempo multiplexación de displays es escanear como rápidamente como sea posible y a intervalos regulares. De lo contrario, el ojo percibirá parpadeo en la pantalla.
Tiempo/botones de configuración:
Puesta en hora se realiza mediante dos botones - un botón de incrementos de grados de la red y una red minutos. Los botones son supervisados continuamente por el PIC en el bucle principal del programa. Para ahorrar pines de I/O, los botones están conectados a lo que normalmente es un pin de salida. Cuando el PIC para el estado de botón, interruptores pin I/O a la entrada y toma una lectura.
Cuando se detecta una pulsación de botón, el programa va a una función de ajuste de tiempo específica a cada botón. Esta función incrementa la variable de seguimiento de tiempo, al igual que la interrupción del TMR1. Una sola vez incrementará el paso de un reloj, mientras sostiene que el botón resultará en continuo avance. Hay una función de retardo en el código debounce la prensa inicial y la sincronización para el avance continuo.