Stap 5: SOFTWARE
Ik heb mijn best gedaan om commentaar uit dit programma zo goed als ik kon. U moet zitten kundig voor volgen. Het is geen meesterwerk, maar nogmaals, ik werkte met een inferieur instructieset. U kunt downloaden het. ASM code en gebruiken met uw PIC ICD2 programmeur puck, zoals te zien in de afbeelding. Ik ben ook graag antwoord op alle vragen die u kan hebben met betrekking tot de software!
De ASM-code kan hier gedownload worden: http://www.electroniclessons.com/10F222TMPO.ASM
*********************************************************************************************
MAIN CODE 0X000
MOVWF OSCCAL; Update inschrijven bij fabriek cal waarde
INITIALISEREN
MOVLW B '0010'; GPIO1 = COMPARATOR IN - GPIO0-RELAY ACTIVEREN
TRIS GPIO; INITIALISEREN
CLRF ADCON0; ADC UITSCHAKELEN
CLRF DE GPIO; DUIDELIJKE UITGANGEN
MOVLW B '00001000'
OPTIE; GPIO2 AS A DIGITAL POORT INSCHAKELEN
SCAN1:
BTFSS GPIO, 1; CHECK TO SEE ALS LUID LAWAAI (CLAP IS GEDETECTEERD)
GOTO SCAN1; ZO NIET, SCAN OPNIEUW (LOOP)
ER ZORG VOOR:
BTFSC GPIO, 1; IS DE GOLFVORM GEGAAN VAN HOOG NAAR LAAG?
GOTO ZORGEN; ZONIET, CHECK OPNIEUW (LOOP). ALS ZO, GOTO VOLGENDE INSTRUCTIE
OPROEP LOOP1; VERTRAGING
COUNTDOWN:; COUNTDOWN ROUTINE
MOVLW 0XFF; REFERENTIEWAARDE VAN BELASTING
MOVWF TEMP5; BELASTING TIMING REGISTREREN #1 MET DE REFE-RENTIEWAARDE HIERBOVEN
MOVLW 0XFF; REFERENTIEWAARDE VAN BELASTING
MOVWF TEMP6; BELASTING TIMING REGISTER #2 MET REFERENTIEWAARDE
COUNTDOWN2:; WERKELIJKE DOUNTDOWN ROUTINE
BTFSC GPIO, 1; CONTROLEER OM TE ZIEN OF LUID IS LAWAAI HERKENBAAR.
GOTO RELAYACTIVATE; ZO JA, ACTIVEREN RELAY (WISSELKNOP)
DECFSZ TEMP5; ZO NIET, DECREMENT TELLER #1 ALS REG = 0, DE VOLGENDE STAP OVERSLAAN
GOTO COUNTDOWN2; GA TERUG EN KIJK OPNIEUW VOOR TWEEDE LAWAAI
MOVLW 0XFF; BELASTING TIMING REGISTER #1 MET VOLLEDIGE WAARDE WEER
MOVWF TEMP5; BELASTING
DECFSZ TEMP6; DECREMENT T-REGISTER #2
GOTO COUNTDOWN2; ALS DE TIMING REGISTER #2 IS NIET Z, TWEEDE SCAN OPNIEUW
GOTO SCAN1; ALS TIMING REGISTER #2 0 WAS, GA TERUG NAAR START
RELAYACTIVATE:
BSF GPIO, 0; RELAY ACTIVEREN
OPROEP LOOP1; SERIE VAN 3 VERTRAGINGEN
OPROEP LOOP1
OPROEP LOOP1
; DEZE VOLGENDE VOLGORDE IS ALLEEN EEN NAÄPER VAN DE EERSTE REEKS, ALLEEN WIJ ZIJN
; WACHTEN OM TE SCHAKELEN DE RELAIS TERUG NAAR HAAR OORSPRONKELIJKE POTISION.
; IK HEB TOEGEVOEGD IN EEN KORTE VERTRAGING AAN HET BEGIN, AANGEDUID MET ***
SCAN2:
OPROEP LOOP1; SERIE VAN 3 VERTRAGINGEN
OPROEP LOOP1
OPROEP LOOP1
BTFSS GPIO, 1
GOTO SCAN2
ENSURE2:
BTFSC GPIO, 1
GOTO ENSURE2
OPROEP LOOP1
COUNTDOWN3:
MOVLW 0XFF
MOVWF TEMP5
MOVLW 0XFF
MOVWF TEMP6
COUNTDOWN4:
BTFSC GPIO, 1
GOTO RELAYDEACTIVATE
DECFSZ TEMP5
GOTO COUNTDOWN4
MOVLW 0XFF
MOVWF TEMP5
DECFSZ TEMP6
GOTO COUNTDOWN4
GOTO SCAN2
RELAYDEACTIVATE:
BCF GPIO, 0; DEACTIVEREN VAN RELAY
RESET ; RESET PROGRAMMA
LOOP1:
; DE LUS ROUTINE WERKT ALS DIT. WE LADEN TIMING REGISTER TEMP1/2 MET 8-BITS
WAARDEN EN IT WORKS IN WEZEN AF TE TELLEN HET EERSTE REGISTER, EN
WANNEER HET EERSTE REGISTER IS 0, HET PROGRAMMA VERLAAGT DE TWEEDE TIMING-REGISTER (TEMP2). OP DIT PUNT, HOUDT DIT OP DOET HET ZELFDE DING TOT TEMP2 REGISTER WAARDE = 0, OP DAT PUNT, DE UITEINDEN VAN DE VERTRAGING EN WIJ GA TERUG NAAR HET PROGRAMMA.
MOVLW 0X00
MOVWF TEMP1
MOVLW 0XF0
MOVWF TEMP2
LOOP2:
DECFSZ TEMP1
GOTO LOOP2
DECFSZ TEMP2
GOTO LOOP2
TERUGKEER
EINDE
***********************************************************************************************