Stap 4: Software
De broncode *.asm bestand en geassembleerde *.hex bestand voor de programmering zijn gekoppeld. Ook inbegrepen is een hoog niveau stroomdiagram van het hoofdprogramma.
Details
De microprocessor gebruikt is een PIC16F628A. De microprocessor draait op zijn eigen interne klok van 4 MHz. Daarom nemen de interne instructie cycli elke 1 microseconde.
Het programma draait een interne timer op als de eerste bundel verbroken wordt. De interne timer (timer 0 op deze PIC processor) telt omhoog met een snelheid van een telling per instructiecyclus. Wanneer de tweede balk verbroken wordt, schakelt het programma de teller. Timer 0 is alleen 8 bits, en dus het loopt over elke 256 graven of elke 256 microseconden. De software controleert op overstorten en een andere variabele telkens wanneer die een overloop optreedt, als die variabele (na 65536 instructies cycli), doorloopt en vervolgens een andere variabele wordt verhoogd verhoogd. Op deze manier ontstaat een 24-bits-telling van het aantal cycli van de instructie die zich hebben voorgedaan sinds het breken van de eerste straal. Aangezien een instructiecyclus 1 microseconde neemt, is de telling in microseconden.
Als de graaf de tweede variabele doorloopt, wordt het programma eindigt en wordt een time-out bericht weergegeven.
24 bits kunt opslaan een waarde van de graven van de 16777215, zodat de timer een interval tussen gebeurtenissen van maar liefst 16.78 seconden kunt meten.
Als de tweede balk verbroken is voordat de maximale tijd is verstreken, wordt het programma vervolgens overgaat tot het omzetten van de 24-bits binaire telling in 8 ASCII-decimalen die vervolgens op het LCD-scherm weergegeven worden.
Wanneer de eenheid is eerste macht omhoog of op beginstand zetten, introscherm zal verschijnen op het LCD-scherm voor ongeveer 1 seconde. Daarna, zal tonen een snel scherm lezen "Wachten voor beginnen". Het blijft dit bericht pas na de tweede balk gebroken (gedurende het interval tussen het breken van de twee balken is) weergegeven. Nadat de tweede balk verbroken is, worden vervolgens de resultaten weergegeven als XXXXXXXX MICROSECONDEN. Dit bericht wordt weergegeven totdat de reset-knop wordt gedrukt of als de macht aan de eenheid is uit en weer gefietst.
Als het aantal groter is dan het maximum, verschijnt het bericht "COUNT OVERFLOW" worden tot een reset of macht cyclus optreedt.