Stap 3: Software
Dat bestand is hier: http://electroniclessons.com/Laser.txt
Ik wil echter ook commentaar geven op de belangrijkste code, hetgeen lager dan is. Probeer te volgen!
INITIALISEREN; START-UP ROUTINE
MOVLW B '1001'; GPIO0 = ADC-IN - GPIO1 = BUZZER - GPIO3 = KNOP INPUT
TRIS GPIO; INITIALISEREN
MOVLW B'01000000; ADC CONFIGURATIE
MOVWF ADCON0; INITIALISEREN
CLRF DE GPIO; WISSEN VAN ALLE I/O
MOVLW B '00001000'; NIET BELANGRIJK VOOR DEZE CODE
OPTIE
OPROEP LOOP3; OPROEP KORTE VERTRAGING
START:
BTFSC GPIO, 3; WACHTEN OP DE KNOP WORDEN INGEDRUKT
GOTO START; ZO NIET, KAN WEER
OPROEP LOOP3; ALS JA, EEN REEKS VAN DRIE VERTRAGINGEN VOOR SCANNEN VOOR A IN LICHT WIJZIGEN
OPROEP LOOP3
OPROEP LOOP3
SCAN:
MOVLW B '01000001'; ADC INSCHAKELEN
MOVWF ADCON0; INITIALISEREN
BSF ADCON0, GO; NEEM ADC LEZING
WAITADC:
BTFSC ADCON0, GO; Poll voor de lezing om te voltooien
GOTO WAITADC; Als dat niet gebeurt, houden polling
MOVLW B '00000011'; 03H plaats in Vergelijk register (vergelijk tegen ongeveer 60mv)
SUBWF ADRES, C; vergelijken van instructie
BTFSC STATUS, C; Als ADC lezen meer dan 03H is, is een schending geconstateerd
GOTO VOLGENDE; Als de overtreding is geconstateerd, te gaan van de volgende routine
GA NAAR DE SCAN; Als dit niet het geval is, neem een ander ADC lezen
VOLGENDE
BSF GPIO, 1; Schakel zoemer
OPROEP LOOP3; serie van twee vertragingen
OPROEP LOOP3
BCF GPIO, 1; zoemer uitschakelen
OPROEP LOOP3; serie van twee vertragingen
OPROEP LOOP3
BTFSC GPIO, 3; is de knop geduwd?
GOTO VOLGENDE; zo niet, piept nogmaals
; zo ja, goto wachten staat
WAITSTATE:
BTFSS GPIO, 3; controleren om te zien als knop is nog steeds geduwd
GOTO WAITSTATE; Als ja, opnieuw controleren
OPROEP LOOP1; zo niet, bel een korte vertraging, dan opnieuw instellen
RESET
; LOOP3/4 werk samen als een lange vertraging routine
LOOP3:
MOVLW 0X00
MOVWF TEMP1
MOVLW 0XF0
MOVWF TEMP2
LOOP4:
DECFSZ TEMP1
GOTO LOOP4
DECFSZ TEMP2
GOTO LOOP4
TERUGKEER
EINDE