Étape 5: logiciels
J’ai fait de mon mieux commenter ce programme mieux que je pouvais. Vous devriez être en mesure de suivre le long. Ce n’est aucun chef-d'œuvre, mais encore une fois, je travaillais avec un jeu d’instructions inférieure. Vous pouvez télécharger le. ASM le code et l’utiliser avec votre rondelle de programmeur PIC ICD2, comme on le voit dans l’image. Je suis également heureuse de répondre à toute question que vous pourriez avoir concernant le logiciel !
Le code ASM peut être téléchargé ici : http://www.electroniclessons.com/10F222TMPO.ASM
*********************************************************************************************
CODE 0X000 DE LA MAIN
MOVWF OSCCAL ; mise à jour de Registre avec la valeur d’usine cal
INITIALISER
MOVLW B « 0010 » ; GPIO1 = COMPARATEUR IN FRENCH - GPIO0-RELAIS ACTIVE
TRIS GPIO ; INITIALISER
CLRF ADCON0 ; DÉSACTIVATION DE L’ADC
CLRF GPIO ; SORTIES DE CLAIRES
MOVLW B « 00001000 »
OPTION ; ACTIVEZ LE PORT NUMÉRIQUE GPIO2 AS A
SCAN1 :
BTFSS GPIO, 1 ; VÉRIFIER POUR VOIR SI FORT BRUIT (CLAP EST DÉTECTÉ)
GOTO SCAN1 ; SINON, ENCORE UNE FOIS LE SCAN (BOUCLE)
S’ASSURER QUE :
BTFSC GPIO, 1 ; LA FORME D’ONDE PASSÉE DE HAUTE À BASSE ?
GOTO ASSURER ; SINON, VÉRIFIER DE NOUVEAU (BOUCLE). IF SO, PROCHAINE INSTRUCTION GOTO
APPEL LOOP1 ; DELAY
COMPTE À REBOURS: ; COMPTE À REBOURS ROUTINE
MOVLW 0XFF ; VALEUR DE RÉFÉRENCE DE CHARGE
MOVWF TEMP5 ; CALENDRIER DE CHARGEMENT S’INSCRIRE #1 AVEC LA VALEUR DE RÉFÉRENCE CI-DESSUS
MOVLW 0XFF ; VALEUR DE RÉFÉRENCE DE CHARGE
MOVWF TEMP6 ; CHARGE TIMING REGISTRE #2 AVEC LA VALEUR DE RÉFÉRENCE
COUNTDOWN2: ; DOUNTDOWN RÉELLE ROUTINE
BTFSC GPIO, 1 ; VÉRIFIER POUR VOIR SI LE BRUIT EST APPARENT.
GOTO RELAYACTIVATE ; DANS L’AFFIRMATIVE, ACTIVER DES RELAIS (EN ALTERNANCE)
DECFSZ TEMP5 ; SI NON, DÉCRÉMENTER COMPTEUR #1 SI REG = 0, PROCHAINE ÉTAPE DE SKIP
GOTO COUNTDOWN2 ; REVENIR EN ARRIÈRE ET REVOIR POUR LE DEUXIÈME GRAND BRUIT
MOVLW 0XFF ; CHARGE TIMING REGISTRE #1 AVEC PLEINE VALEUR À NOUVEAU
MOVWF TEMP5 ; CHARGE
DECFSZ TEMP6 ; DECREMENT, T-REGISTRE #2
GOTO COUNTDOWN2 ; SI LE TIMING REGISTRE #2 N’EST PAS Z, DEUXIÈME LANCER UNE NOUVELLE RECHERCHE
GOTO SCAN1 ; SI TIMING REGISTRE #2 A 0, REVENIR AU DÉBUT
RELAYACTIVATE :
BSF GPIO, 0 ; ACTIVER LE RELAIS
APPEL LOOP1 ; SÉRIE DE 3 RETARDS
APPEL LOOP1
APPEL LOOP1
; CETTE SÉQUENCE SUIVANTE EST JUSTE UN IMITER DE LA PREMIÈRE SÉQUENCE, SEULEMENT NOUS SOMMES
; EN ATTENTE DE PASSER LE RELAIS À SON ORIGINE POTISION.
; J’AI AJOUTÉ DANS UN COURT DÉLAI AU DÉBUT, DÉNOTÉ PAR ***
SCAN2 :
APPEL LOOP1 ; SÉRIE DE 3 RETARDS
APPEL LOOP1
APPEL LOOP1
BTFSS GPIO, 1
GOTO SCAN2
ENSURE2 :
BTFSC GPIO, 1
GOTO ENSURE2
APPEL 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 ; DÉSACTIVER LE RELAIS
RESET ; PROGRAMME DE REMISE À ZÉRO
LOOP1 :
; LES TRAVAUX COURANTS DE BOUCLE COMME CELA. NOUS CHARGEONS TIMING REGISTRE TEMP1/2 AVEC 8-BIT
VALEURS ET IT WORKS À REBOURS ESSENTIELLEMENT LE PREMIER REGISTRE, ET
QUAND LE PREMIER REGISTRE EST 0, LE PROGRAMME DÉCRÉMENTE LE DEUXIÈME REGISTRE DE TIMING (TEMP2). À CE STADE, CELA TIENT À FAIRE LA MÊME CHOSE JUSQU'À LA VALEUR DE REGISTRE TEMP2 = 0, À QUI POINT, LES EXTRÉMITÉS DE RETARD ET NOUS REVENONS AU PROGRAMME.
MOVLW 0 X 00
MOVWF TEMP1
MOVLW 0XF0
MOVWF TEMP2
LOOP2 :
DECFSZ TEMP1
GOTO LOOP2
DECFSZ TEMP2
GOTO LOOP2
RETOUR
FIN
***********************************************************************************************