Étape 4: logiciels
Le fichier *.asm de code source et le fichier *.hex assemblés pour la programmation sont attachés. On trouve également un diagramme haut niveau du programme principal.
Détails
Le microprocesseur utilisé est un PIC16F628A. Le microprocesseur fonctionne sur sa propre horloge interne de 4 MHz. Les cycles d’instruction interne donc prennent chaque 1 microseconde.
Le programme tourne une horloge interne lorsque le premier faisceau est cassé. L’horloge interne (timer 0 sur ce processeur PIC) décompte progressif à un taux d’un chef d’accusation par cycle d’enseignement. Lorsque la deuxième poutre est rompue, le programme désactive le compteur. Minuterie 0 est seulement de 8 bits, et donc il déborde de chaque 256 compte, ou toutes les 256 microsecondes. Le logiciel vérifie les débordements et incrémente une autre variable à chaque fois qu’un dépassement de capacité se produit, si cette variable déborde (après cycles de 65536 instructions), puis une autre variable est incrémentée. De cette manière, un nombre de 24 bits du nombre de cycles d’instruction qui ont eu lieu depuis la rupture de la première poutre est généré. Comme un cycle d’instruction prend 1 microseconde, le comte est en microsecondes.
Si le comte déborde la deuxième variable, le programme se termine et affiche un message de délai d’expiration.
24 bits peut stocker une valeur de 16777215 comtes donc le minuteur peut mesurer un intervalle entre les événements autant que 16,78 secondes.
Si la deuxième poutre est rompue avant l’expiration de la durée maximale, le programme procède ensuite à convertir le nombre binaire 24 bits en 8 chiffres décimaux ASCII qui sont ensuite affichées sur l’écran LCD.
Lorsque l’unité est la première puissance vers le haut, ou le réinitialiser, une intro s’affiche sur l’écran LCD pendant environ 1 seconde. Par la suite, il affichera un écran rapide, lecture « En attente pour démarrer ». Il continuera à afficher ce message jusqu'à ce qu’après la deuxième poutre est cassé (tout au long de l’intervalle entre la rupture de deux faisceaux). Après que la deuxième poutre est cassée, les résultats sont affichés puis comme XXXXXXXX MICROSECONDES. Ce message s’affiche jusqu'à ce que vous appuyez sur le bouton reset ou l’alimentation de l’appareil est à vélo et rallumez-le.
Si le nombre dépasse la valeur maximale, le message « COUNT OVERFLOW » sera affiché jusqu'à ce qu’une réinitialisation ou cycle d’alimentation se produit.