Étape 3: logiciel
Ce fichier est ici : http://electroniclessons.com/Laser.txt
Cependant, je vais aussi commenter le code principal, qui est en dessous. Essayez de suivre !
INITIALISER ; ROUTINE DE DÉMARRAGE
MOVLW B « 1001 » ; GPIO0 = ADC-IN - GPIO1 = SONNERIE - GPIO3 = BOUTON ENTRÉE
TRIS GPIO ; INITIALISER
MOVLW B'01000000 ; CONFIGURATION DE L’ADC
MOVWF ADCON0 ; INITIALISER
CLRF GPIO ; EFFACER TOUTES LES E/S
MOVLW B « 00001000 » ; PAS IMPORTANT POUR CE CODE
OPTION
APPEL LOOP3 ; COURT DÉLAI D’APPEL
DÉPART :
BTFSC GPIO, 3 ; ATTENDEZ QUE LE BOUTON À PRESSER
GOTO DÉBUT ; SI NON, PEUT À NOUVEAU
APPEL LOOP3 ; SI OUI, UNE SÉRIE DE TROIS RETARDS AVANT DE LES NUMÉRISER POUR A CHANGER DANS LA LUMIÈRE
APPEL LOOP3
APPEL LOOP3
SCAN :
MOVLW B « 01000001 » ; ALLUMEZ ADC
MOVWF ADCON0 ; INITIALISER
BSF ADCON0, GO ; PRENDRE LA LECTURE DE L’ADC
WAITADC :
BTFSC ADCON0, GO ; sondage pour la lecture à compléter
GOTO WAITADC ; sans cela, garder du scrutin
MOVLW B « 00000011 » ; Placez le 03H au registre comparer (comparer contre environ 60mv)
SUBWF ADRES, C ; comparer les instruction
BTFSC STATUS, C ; Si ADC lire n’est plus de 03H, on a décelé une violation
GOTO PROCHAINE ; Si l’infraction a été détectée, d’aller la routine suivante
GOTO SCAN ; Sinon, prendre un autre ADC lire
PROCHAINE
BSF GPIO, 1 ; activer vibreur
APPEL LOOP3 ; série de deux retards
APPEL LOOP3
BCF GPIO, 1 ; désactiver la sonnerie
APPEL LOOP3 ; série de deux retards
APPEL LOOP3
BTFSC GPIO, 3 ; le bouton a été poussé ?
GOTO PROCHAINE ; Sinon, un nouveau bip
; dans l’affirmative, goto attendre État
WAITSTATE :
BTFSS GPIO, 3 ; Vérifiez si le bouton est toujours poussé
GOTO WAITSTATE ; dans l’affirmative, vérifier de nouveau
APPEL LOOP1 ; Sinon, appelez un court délai, puis réinitialiser
REMISE À ZÉRO
; LOOP3/4 travail ensemble comme une routine de retard
LOOP3 :
MOVLW 0 X 00
MOVWF TEMP1
MOVLW 0XF0
MOVWF TEMP2
LOOP4 :
DECFSZ TEMP1
GOTO LOOP4
DECFSZ TEMP2
GOTO LOOP4
RETOUR
FIN