0% ont trouvé ce document utile (0 vote)
49 vues8 pages

Micro

tp MICROCONTROLLEUR POUR AUTOMATIQUE

Transféré par

Yacine LH
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
49 vues8 pages

Micro

tp MICROCONTROLLEUR POUR AUTOMATIQUE

Transféré par

Yacine LH
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Partie 2 : Modification pour la soustraction (Montage n°2)

Travail demandé :

1. Modifier le programme pour soustraire 0x40 de W.


2. Interpréter le résultat selon les conditions :
o Résultat négatif : LED3 (RB1) s’allume.
o Résultat positif : LED2 (RB3) s’allume.
o Résultat nul : LED1 (RB5) s’allume.

Solution :

1. Programme Assembleur :

list p=16F877
#include p16f877.inc

org 0x00
; Configuration des ports
BSF STATUS, RP0
MOVLW 0x00 ; PORTB en sortie
MOVWF TRISB
MOVLW 0xFF ; PORTA en entrée
MOVWF TRISA
BCF STATUS, RP0
BCF PORTB, 5 ; Éteindre LED1 (RB5)
BCF PORTB, 1 ; Éteindre LED3 (RB1)
BCF PORTB, 3 ; Éteindre LED2 (RB3)
; Soustraction
MOVLW 0x40
SUBWF PORTB, W ; Résultat = PORTB - 0x40
BTFSS STATUS, Z ; Si résultat nul
GOTO Test1
BSF PORTB, 5 ; Allumer LED1 (RB5)
GOTO FIN
Test1 BTFSC STATUS, C ; Si résultat négatif
GOTO Test2
BSF PORTB, 1 ; Allumer LED3 (RB1)
GOTO fin
Test2 BTFSC STATUS, C ; Si résultat positif
BSF PORTB, 3 ; Allumer LED2 (RB3)
FIN nop
END

2. Interprétation des résultats :


o La LED correspondante s'allume selon la condition du résultat.
3. Solution pour le montage 3 :

Voici le code après la modification :

list p=16F877
#include p16f877.inc

org 0x00
; Configuration des ports
BSF STATUS, RP0
MOVLW 0x00 ; PORTA en sortie
MOVWF TRISA
MOVLW 0xFF ; PORTB en entrée
MOVWF TRISB
BCF STATUS, RP0
; Soustraction
MOVLW 0x40
SUBWF PORTB, W ; Résultat = PORTB - 0x40
BTFSS STATUS, Z ; Si résultat nul
GOTO Test1
BSF PORTA, 2 ; Allumer LED1 (RA2)
GOTO FIN
Test1 BTFSC STATUS, C ; Si résultat négatif
GOTO Test2
BSF PORTA, 0 ; Allumer LED3 (RA0)
GOTO FIN
Test2 BTFSC STATUS, C ; Si résultat positif
BSF PORTA, 1 ; Allumer LED2 (RA1)
FIN nop
END

Le montage 02 (de la fiche de TP) c’est le même de la question


précédente et aussi il a le même programme.

L’organisme :
MONTAGE 04 :
list p=16F877
#include p16f877.inc
org 0x00

; Configuration des ports


BSF STATUS, RP0
MOVLW 0x00 ; PORTA en sortie
MOVWF TRISA
MOVLW 0xFF ; PORTB en entrée
MOVWF TRISB
BCF STATUS, RP0
; Soustraction
MOVLW 0x40
SUBWF PORTB, W ; Résultat = PORTB - 0x40
BTFSS STATUS, Z ; Si résultat nul
GOTO Test1
BSF PORTA, 5 ; Allumer LED1 (RAB5)
GOTO FIN
Test1 BTFSC STATUS, C ; Si résultat négatif
GOTO Test2
BSF PORTA, 3 ; Allumer LED3 (RA3)
GOTO FIN
Test2 BTFSC STATUS, C ; Si résultat positif
BSF PORTA, 4 ; Allumer LED2 (RA4)
FIN nop
END
*

Dans ce cas, le programme ne fonctionne pas car RA4 n'est pas une broche analogique et
ne peut pas être utilisée comme entrée/sortie numérique.
Les principales modifications à apporter sont les suivantes : changer le bit 4 dans le
registre TRISA.

Exemple 2 : Décodeur à LEDs

1. Programme Assembleur :

list p=16F877
#include p16f877.inc

org 0x00
bsf STATUS, RP0
movlw 0xFF
movwf TRISB
clrf TRISA
bcf STATUS, RP0

test
movf PORTB, w
btfsc PORTB, 0
movlw 0x00
goto fin
btfsc PORTB, 1
movlw 0x01
goto fin
btfsc PORTB, 2
movlw 0x02
goto fin
btfsc PORTB, 3
movlw 0x03
goto fin
btfsc PORTB, 4
movlw 0x04
goto fin
btfsc PORTB, 5
movlw 0x05
goto fin
btfsc PORTB, 6
movlw 0x06
goto fin
btfsc PORTB, 7
movlw 0x07
goto fin

clrf PORTA
goto test

fin
movwf PORTA
goto test

end

Les résistances placées entre les boutons poussoirs (BP) et l'alimentation (power) sont
appelées des résistances pull-up.

Leur rôle :

a. Stabilisation du signal logique


b. Éviter les signaux parasites
c. Simplification du câblage

PARTIE 4 : Compteur/Décompteur à LEDs (Montage n°6)

1. Programme Assembleur :

; Configuration des ports


BSF STATUS, RP0
MOVLW 0x00 ; PORTA en sortie
MOVWF TRISA
MOVLW 0xFF ; PORTB en entrée
MOVWF TRISB
BCF STATUS, RP0
; Initialisation
CLRF PORTA ; Effacer PORTA
CLRF COUNT ; Initialiser le compteur

; Boucle principale
Main:
BTFSC PORTB, 0 ; Si BP1 (RB0) appuyé
INCF COUNT, F ; Incrémenter
BTFSC PORTB, 1 ; Si BP2 (RB1) appuyé
DECF COUNT, F ; Décrémenter
MOVF COUNT, W ; Charger COUNT
MOVWF PORTA ; Afficher COUNT sur PORTA
GOTO Main ; Reboucler
END

2. Problème dû aux rebonds des boutons :


o Ajouter un délai (dé-bounce) pour éviter plusieurs incréments/décréments par
pression.
République Algérienne Démocratique et Populaire

Ministère de l'Enseignement Supérieur et de la Recherche

Scientifique
Université des Sciences et de la Technologie d'Oran

Mohamed BOUDIAF

FACULTE DE GENIE
ELECTRIQUE

SPECIALITE : Automatique

Présentée par :

Lahrour Yacine Abderrahmene

Boukhari Oussama

TP N°03

Microcontrôleur

Année universitaire :2024/2025

Vous aimerez peut-être aussi