Extrenely känsliga laser detektor security device - nr HW komparator eller förstärkare (3 / 4 steg)
Steg 3: programvara
Filen finns här: http://electroniclessons.com/Laser.txt
Men ska jag också kommentera den viktigaste koden, som ligger under. Försök att följa med!
INITIERA; START-UP RUTIN
MOVLW B "1001"; GPIO0 = ADC-IN - GPIO1 = SUMMER - GPIO3 = KNAPPEN INPUT
TRIS GPIO; INITIERA
MOVLW B'01000000; ADC KONFIGURATION
MOVWF ADCON0; INITIERA
CLRF GPIO; RENSA ALLA I/O
MOVLW B '00001000'; INTE VIKTIGT TILL DENNA KOD
ALTERNATIVET
KALLA LOOP3; RING KORT FÖRDRÖJNING
START:
BTFSC GPIO, 3. VÄNTA PÅ KNAPP VARA INTRYCKT
GÅ TILL START; OM INTE, KAN IGEN
KALLA LOOP3; OM JA, EN SERIE AV TRE FÖRSENINGAR INNAN SKANNING FÖR EN ÄNDRA I LJUS
KALLA LOOP3
KALLA LOOP3
SKANNING:
MOVLW B '01000001'; SLÅ PÅ ADC
MOVWF ADCON0; INITIERA
BSF ADCON0, GO; TA ADC BEHANDLINGEN
WAITADC:
BTFSC ADCON0, GO; avsökning efter behandlingen för att slutföra
GÅ TILL WAITADC; om inte gjort, hålla röstningen
MOVLW B '00000011'; Placera 03H i jämför register (jämför mot ungefär 60mv)
SUBWF ADRES, C; jämföra instruktion
BTFSC STATUS, C; om ADC läsa mer än 03H, har ett brott upptäckts
GÅ TILL NÄSTA; om brott har upptäckts, för att gå nästa rutin
GÅ TILL SCAN; om inte, ta en annan ADC läsning
NÄSTA
BSF GPIO, 1; Aktivera summern
KALLA LOOP3; serie två förseningar
KALLA LOOP3
BCF GPIO, 1; stänga av summern
KALLA LOOP3; serie två förseningar
KALLA LOOP3
BTFSC GPIO, 3. har blitt skubbet knappen?
GÅ TILL NÄSTA; om inte, pip igen
; Om ja, gå till vänta staten
WAITSTATE:
BTFSS GPIO, 3. Kontrollera om knappen fortfarande skjuts
GÅ TILL WAITSTATE; Om ja, kolla igen
KALLA LOOP1; om inte, ring en kort fördröjning och sedan återställa
ÅTERSTÄLLA
; LOOP3/4 arbete tillsammans som en lång fördröjning rutin
LOOP3:
MOVLW 0X00
MOVWF TEMP1
MOVLW 0XF0
MOVWF TEMP2
LOOP4:
DECFSZ TEMP1
GÅ TILL LOOP4
DECFSZ TEMP2
GÅ TILL LOOP4
RETURNERA
SLUTET