Paso 4: Software
El archivo *.asm de código fuente y archivo *.hex montado para la programación se unen. También es un diagrama de flujo de alto nivel del programa principal.
Datos de
El microprocesador utilizado es un PIC16F628A. El microprocesador ejecuta en su propio reloj interno de 4 MHz. Por lo tanto, los ciclos de instrucción interna toman 1 microsegundo.
El programa activa un temporizador interno en cuando se rompe la primera viga. El temporizador interno (temporizador 0 en este procesador PIC) cuenta hacia arriba a razón de un cargo por ciclo de instrucción. Cuando se rompe el segundo rayo, el programa desactiva el contador. Timer 0 es sólo de 8 bits, y por lo tanto se desborda en cada 256 cuenta o cada 256 microsegundos. El software comprueba desbordamientos y aumenta otra variable cada vez que se produce un desbordamiento, si esa variable se desborda (después de ciclos de 65536 instrucciones), luego otra variable se incrementa. De esta manera, se genera una cuenta de 24 bits del número de ciclos de instrucción que han ocurrido desde la última hora de la primera viga. Puesto que un ciclo de instrucción toma 1 microsegundo, la cuenta está en microsegundos.
Si la cuenta desborda la segunda variable, el programa termina y muestra un mensaje de tiempo de espera.
24 bits puede almacenar un valor de 16777215 cuenta, así que el temporizador puede medir un intervalo entre eventos tanto como de 16,78 segundos.
Si el segundo rayo se rompe antes de que haya transcurrido el tiempo máximo, el programa entonces procede a convertir el número binario 24 bits 8 ASCII decimales que se muestran en la pantalla LCD.
Cuando la unidad es primera potencia arriba o restablecer, una pantalla de introducción aparecerá en el LCD durante 1 segundo. Después, mostrará una pantalla rápida, leer "Esperando para comenzar". Seguirá mostrando este mensaje hasta después de la segunda viga se rompe (en todo el intervalo entre la ruptura de las dos vigas). Después de la segunda viga se rompe, los resultados se muestran como XXXXXXXX MICROSEGUNDOS. Este mensaje se muestra hasta que se pulsa el botón de reset o a la unidad se desenergiza y volver.
Si la cuenta excede el máximo, aparecerá el mensaje "Cuenta el desbordamiento" hasta un reset o se produce el ciclo de alimentación.