Vous êtes sur la page 1sur 19

Microprocesseurs-Microcontrôleurs

Compte Rendu TP

Réalise par :
Encadre par :
SALHI Abdellatif
M. Fanakh
ELBAZI Tarik
Table des matières
I- introduction .......................................................................................................................................... 3
1-Definition de Microcontrôleurs........................................................................................................ 3
2-PIC 16F84 .......................................................................................................................................... 3
3-Les objectifs et Logiciels ................................................................................................................... 4
II- Les Manipulations ................................................................................................................................ 5
1- Manip 1 ............................................................................................................................................ 5
2- Manip 2 ......................................................................................................................................... 15
3- Manip 3 ......................................................................................................................................... 19
I- introduction
1- Definition de Microcontrôleurs
Un microcontrôleur (en notation abrégée µc, ou uc ou encore MCU en anglais) est un circuit intégré
qui rassemble les éléments essentiels d'un ordinateur : processeur, mémoires (mémoire morte et
mémoire vive), unités périphériques et interfaces d'entrées-sorties. Les microcontrôleurs se
caractérisent par un plus haut degré d'intégration, une plus faible consommation électrique, une
vitesse de fonctionnement plus faible (de quelques mégahertz jusqu'à plus d'un gigahertz1) et un
coût réduit par rapport aux microprocesseurs polyvalents utilisés dans les ordinateurs personnels.

Par rapport à des systèmes électroniques à base de microprocesseurs et autres composants séparés,
les microcontrôleurs permettent de diminuer la taille, la consommation électrique et le coût des
produits. Ils ont ainsi permis de démocratiser l'utilisation de l'informatique dans un grand nombre de
produits et de procédés.

Les microcontrôleurs sont fréquemment utilisés dans les systèmes embarqués, comme les
contrôleurs des moteurs automobiles, les télécommandes, les appareils de bureau, l'électroménager,
les jouets, la téléphonie mobile, etc.

2- PIC 16F84
Un PIC est un microcontrôleur , c'est une unité de traitement de
l'information de type microprocesseur à laquelle on a ajouté des
périphériques internes permettant de faciliter l'interfaçage avec
le monde extérieur sans nécessiter l'ajout de composants
externes . Les PICS sont des composants RISC ( composant à jeu
d'instructions réduit )

Le PIC16F84 est un circuit intégré de 18 broches :

• VDD et VSS : Bornes d'alimentation + 5V et OV . C'est ici que seront branchés le régulateur de
tension et la masse .
• MCLR : " Reset " du circuit .
• OSCI et OSC2 Bornes de connexion de . l'horloge .
• RAO à RA4 : Port d'E / S A.
• RB0 à RB7 Port d'E / S B.

Microchip propose pour le développement de ses microcontrôleurs , un « Environnement de


développement Intégré » ou IDE , sous la forme d'un logiciel du nom de MPLAB . MPLAB est un
environnement de développement qui contient tous les outils nécessaires à la mise au point d'une
application avec un cœur de microcontrôleur PIC .
II- Les Manipulations de TP1
1- Manip 1
Ecrire un programme qui permet d'allumer une LED connectée à RAO si l'entrée RAI est 1 , s'elle est à
0 LED s'éteinte

Ecrire un programme en langage assembleur permettant de simuler le fonctionnement d'un


télérupteur : .

-L'action sur le bouton poussoir BP allume la LED .

LIST P=16F84A, r=dec, f-inhx8m

#include<p16F84A.inc>

_CONFIG_CP_OFF & XT_OSC & PWRTE_OFF & _WDT_OFF

BSF STATUS ,5

BCF TRISA.0

BCF STATUS,5

BSF PORTA.0

END
-La nouvelle action sur BP éteint la LED
LIST P=16F84A, r=dec, f-inhx8m
#include<p16F84A.inc>

_CONFIG_CP_OFF & XT_OSC & PWRTE_OFF & _WDT_OFF

BSF STATUS 5

MOVLW 0X02

MOVWF TRISA

BCF STATUS,5

TEST1 BTFSS PORTA,1


GOTO TEST1

BTFSS PORTA,1

GOTO LEDON

BCF PORTA,RAO

GOTO TEST1

LEDON BSF PORTA,RAO


GOTO TEST1

END
Soit le schéma à base du PIC 16F84A suivant :

L'objectif est de réaliser un compteur modulo 10 ( 0->9 )

a ) Donner la logigramme et le programme assembleur qui permet de générer le code BCD du mot
binaire présent à l'entrée du port A. Ce code est disponible en sortie du port B pour être affiché sur
un afficheur 7 segments à cathode commune
• le programme assembleur

LIST P=16F84A, r=dec, f-inhx8m

#include<p16F84A.inc>

_CONFIG_CP_OFF & XT_OSC & PWRTE_OFF & _WDT_OFF

BSF STATUS 5

CLRF TRISB

CLRF PORTB

MOVLW 0x1F

MOVWF TRISA

BCF STATUS,5

MOVLW 0X00

MOVWF TRISB

TEST1 MOVF PORTA.0

SUBLW 0x00

BTFSS STATUS,2

GOTO TEST2

MOVLW 0x3F

MOVWF PORTB

GOTO TEST1

TEST2 MOVF PORTA,0

SUBLW 0x01

BTFSS STATUS,2

GOTO TEST3

MOVLW 0x06

MOVWF PORTB

GOTO TEST1

TEST3 MOVF PORTA,0

SUBLW 0x02
BTFSS STATUS,2

GOTO TEST4

MOVLW 0x5B

MOVWF PORTB

GOTO TEST1

TEST4 MOVF PORTA,0

SUBLW 0x03

BTFSS STATUS,2

GOTO TEST5

MOVLW 0x4F

MOVWF PORTB

GOTO TEST1

TEST5 MOVF PORTA,0

SUBLW 0x04

BTFSS STATUS,2

GOTO TEST6

MOVLW 0x66

MOVWF PORTB

GOTO TEST1

TEST6 MOVF PORTA,0

SUBLW 0x05

BTFSS STATUS,2

GOTO TEST7

MOVLW 0x6C

MOVWF PORTB

GOTO TEST1

TEST7 MOVE PORTA.0

SUBLW 0x06

BTFSS STATUS,2

GOTO TEST8

MOVLW 0x7C

MOVWF PORTB
GOTO TEST1
TEST8 MOVF PORTA,0

SUBLW 0x07

BTFSS STATUS,2

GOTO TEST9

MOVLW 0x07

MOVWF PORTB

GOTO TEST1

TEST9 MOVE PORTA,0


SUBLW 0x08

BTFSS STATUS,2

GOTO TEST10

MOVLW 0x7F

MOVWE PORTB

GOTO TEST1

TEST10 MOVF PORTA,0


SUBLW 0x09

BTFSS STATUS,2

GOTO TEST1

MOVLW 0x6F

MOVWF PORTB

GOTO TEST1

END

b ) Donner la logigramme et le programme assembleur permettant de concevoir un compteur BCD


modulo 10. L'incrémentation du compteur se fait s'il y un front montant sur l'entrée logigramme et
le programme assembleur permettant de concevoir un compteur BCDmodulo 10. L'incrémentation
du compteur se fait s'il y un front montant sur l'entrée A0.
• le programme assembleur

LIST P=16F84A, r=dec, f=inhx8m

#include<P16F84A.inc>

_CONFIG CP OFF & XT OSC & PWRTE OFF & WDT OFF

BSF STATUS,5

MOVLW 0X00

MOVWF TRISB

BSF TRISA,

BCF STATUS,5

CLRF PORTB

CLEAR MOVLW 0X00

MOVWF COMPTEUR

START BTFSC PORTA,0

GOTO START

STR BTFSS PORTA.0

GOTO STR

TEST1 MOVE COMPTEUR,W

SUBLW 0x00

BTFSS STATUS,2

GOTO TEST2

INCF COMPTEUR

MOVLW 0x3F

MOVWF PORTB

GOTO START

TEST2 MOVE COMPTEUR.W

SUBLW 0x01

BTFSS STATUS,2

GOTO TEST3
INCE COMPTEUR

MOVLW 0x06

MOVWF PORTB
GOTO START

TEST3 MOVE COMPTEUR.W

SUBLW 0x02

BTFSS STATUS,2

GOTO TEST4

INCE COMPTEUR

MOVLW 0x5B

MOVWF PORTH

GOTO START

TEST4 MOVF COMPTEUR.W

SUBLW 0x03

BTFSS STATUS,2

GOTO TEST5

INCE COMPTEUR

MOVLW 0x4F

MOVWF PORTB

GOTO START

TEST5 MOVE COMPTEUR.W

SUBLW 0x04

BTFSS STATUS,2

GOTO TEST6

INCE COMPTEUR

MOVLW 0x66

MOVWF PORTB

GOTO START

TEST6 CO MOVF COMPTEUR.W

SUBLW 0x05

BTFSS STATUS,2

GOTO TEST7

INCF COMPTEUR

MOVLW 0x6C
MOVWF PORTB
GOTO START

TEST7 MOVE COMPTEUR.W

SUBLW 0x06

BTFSS STATUS,2

GOTO TEST8

INCF COMPTEUR

MOVLW 0x7C

MOVWF PORTB

GOTO START

TEST8 MOVF COMPTEUR.W

SUBLW 0x07

BTFSS STATUS,2

GOTO TEST9

INCF COMPTEUR

MOVLW 0x07

MOVWF PORTB

GOTO START

TEST9 MOVE COMPTEUR.W

SUBLW 0x08

BTFSS STATUS,2

GOTO TEST10

INCF COMPTEUR

MOVLW 0x7F

MOVWF PORTB

GOTO START

TEST1O MOVE COMPTEUR.W

SUBLW 0x09

BTFSS STATUS,2

GOTO START

MOVLW 0x6F

MOVWF PORTB

GOTO CLEAR

END
2- Manip 2

On désire faire clignoter une diode LED à l'aide d'un microcontrôleur 16F84A comme décrit à la figure
ci-dessous. Si une interruption arrive sur l'entrée RBO (front descendant) la LED s'allume pendant 5s.
Pour générer la temporisation on utilise le TIMERO avec horloge externe de fréquence de 1kHz

Le registre OPTION REG permet de configurer la timer 0

. 1 ) Donner la valeur en hexadécimal du registre OPTION REG . Pour avoir une temporisation de 500
ms H ‘22’

Configuration de l'interruption

2 ) Donner la valeur en hexadécimal du registre INTCON pour l'interruption INT ( front descendant
sur RB0)
H ‘90’
3 ) Donner le code en assembleur répondant à ce cahier des charges

LIST P=16F84A, r=dec, f=inhx8m

#include P16F84A.inc>

_CONFIG_CP_OFF &_XT_OSC &_PWRTE_OFF &_WDT_OFF

CPT EQU OXOC

ORG 0X00

GOTO DEBUT

ORG 0X04

BSF PORTA, RAO

MOVLW OXOA

MOVWF CPT

TEM CALL TEMPO500

DECFSZ CPT,1

GOTO TEM

BCF INTCON, INTF

BCF PORTA, RAO

RETFIE

DEBUT BSF STATUS, RPO

BCF TRISA,0

BSF TRISA,4

BSF TRISB,0

MOVLW 0X22

MOVWF OPTION_REG

MOVLW 0X90

MOVWF INTCON

BCF STATUS,5

LEDON BSF PORTA,0

CALL TEMPO500

BCF PORTA,0
CALL TEMPO500

GOTO LEDON

TEMPO500 MOVLW OXCO

TEST BTFSS INTCON, TOIF

GOTO TEST
BCF INTCON, TOIF

RETURN

END

3- Manip 3
On désire automatiser la gestion des LEDs tricolores à l'aide d'un PIC 16F84A comme le montre la
figure suivante :

1 ) Donner la logigramme et le programme assembleur qui permettent de faire clignoter les 3 LEDs
tricolores simultanément .
• le programme assembleur

Le programme assembleur principal

LIST P=16F84A, r=dec, f=inhx8m

#include<P16F84A.inc>

_CONFIG_CP_OFF &_XT_OSC &_PWRTE_OFF &_WDT_OFF

CPT EQU OXOC

BSF STATUS,5

MOVLW 0X00

MOVWE TRISA

MOVLW 0X02

MOVWF OPTION_ERG

BCF STATUS,5

START BSF PORTA,0

BSF PORTA,1

BSF PORTA,2

CALL TEMPO500

BCF PORTA,0

BCF PORTA,1

BCF PORTA 2

CALL TEMPO500

CALL TEMPO500

GOTO START 1

TEMPO500 MOVLW OXF9


MOVEW CPT

TEST1 CLRF TMRO

LOOP BTFSS INTCON,TOIF

GOTO LOOP

BCF INTCON,TOIF

DECESZ CPT,1
GOTO TEST1RETURN

END
2 ) Ecrire le programme assembleur correspond à ce cahier des charges

LIST P=16F84A, r=dec, f=inhx8m

#include<P16F84A.inc>

_CONFIG_CP_OFF &_XT_OSC &_PWRTE_OFF &_WDT_OFF

CPT EQU OXOC

CPT1 EQU OXOD

CPT2 EQU OXOE

BSF STATUS 5

MOVLW 0X00

MOVWE TRISA

MOVLW 0X02

MOVWF OPTION_REG

BCF STATUS,5

START BSF PORTA,0

BCF PORTA,1

BCF PORTA 2

MOVLW OXOA

MOVWF CPT1

TEST1 CALL TEMPO500

DECFSZ CPT1,1

GOTO TEST1

BCF PORTA,0

BSF PORTA,1

BCF PORTA,2

CALL TEMPO500

CALLPORTA,0
BCF TEMPO500

PORTA,0
BCF PORTA,1
BCF PORTA
BSF PORTA,1
2
BSF PORTA
MOVLW 2
OXOA

MOVWF CPT2
TEST2 CALL

TEMPO500DECFSZ

CPT2,1 GOTO

TEST2

GOTO START

TEMPO500 MOVLW OXFO

MOVFW CPT

TEST CLRF TMR0

LOOP BTFSS INTCON,

TOIFGOTO LOOP

BCF INTCON, TOIF

DECFSZ CPT,1

GOTO TEST

RETURN

END
III- Les Manipulations de TP2
1-Manip 1
2-Manip 2
3-Manip 3

Vous aimerez peut-être aussi