Vous êtes sur la page 1sur 9

A3 4éme

CHAPITRE A3 LOGIQUE PROGRAMMÉE Lycée Elguettar


4ème SC.Tech

Leçon A3-2 : LES MICROCONTRÖLEURS

I- Rappel et mise en situation :


1- Définition : Un microcontrôleur se présente sous la forme d’un circuit intégré réunissant tous les
éléments d’une structure à base de microprocesseur
Donc il fonctionne de façon autonome au sein d’une application.

1.1.1.1 2-Structure interne : Généralement on trouve à


l’intérieur d’un microcontrôleur :
w Un microprocesseur (C.P.U.),
w Une mémoire de donnée (RAM et EEPROM),
w Une mémoire programme (ROM, OTPROM,
UVPROM ou EEPROM),
w Des interfaces parallèles pour la connexion
des entrées/sorties,
w Des interfaces séries (synchrone ou
w asynchrone) pour générer
Des timers pour le dialogue avec d’autres
ou mesurer unités, avec une grande précision temporelle,
des signaux
w Des convertisseurs analogique / numérique pour le traitement de signaux analogiques.

Architecture générale d'un microcontrôleur

CPU

1
A3 4éme

3- Caractéristiques :
Caractéristiques 16F628A 16F88A 16F876A 16F877A
Mémoire programme (octets) 2048 4096 8192 8192
Mémoire SRAM (octets) 224 368 368 368
Mémoire EEPROM (octets) 128 256 256 256
Entrées/Sorties 16 (2ports) 16 (2ports) 22 (3ports) 33 (5ports)
Fréquence d’horloge (MHz) 20 20 20 20
Sources d’interruptions 10 12 14 15
TMR0 (8 bits) TMR0 (8 bits) TMR0 (8 bits) TMR0 (8 bits)
Timer (TMR)/Compteur TMR1(16bits) TMR1 (16 bits) TMR1 (16 bits) TMR1 (16 bits)
TMR2 (8 bits) TMR2 (8 bits) TMR2 (8 bits) TMR2 (8 bits)
Convertisseur 1 ADC 10bits 1 ADC 10bits 1 ADC 10bits
-
analogique/numérique (ADC) 7 canaux 5 canaux 8 canaux
Tension de référence interne Oui Oui Oui Oui
CCP 1 1 2 2
Comparateur analogique 2 2 2 2
Ecriture et lecture en mémoire
- Oui Oui Oui
programme
SSP (Synchronous Serial port) : Maître ou Maître ou Maître ou
 SPI (Serial Peripheral Interface) - esclave esclave esclave
 I²C (Inter Integrated Circuit Bus) Esclave Esclave Esclave
USART (SCI) Oui Oui Oui Oui
PSP (Parallel Slave Port) - - - 8 bits
Jeux d’instructions 35 35 35 35
Nombre des broches 18 18 28 40
4- Les registres de configuration et de contrôle :
STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx
OPTION_REG RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111
INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x
PIE1 PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000
PIR1 PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000
PIE2 N.I. Réservé N.I. EEIE BCLIE N.I. N.I. CCP2IE -r-0 0--0
PIR2 N.I. Réservé N.I. EEIF BCLIF N.I. N.I. CCP2IF -r-0 0--0
EECON1 EEPGD — — — WRERR WREN WR RD x--- x000
TXSTA CSRC TX9 TXEN SYNC — BRGH TRMT TX9D 0000 -010
RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x
CCPxCON — — DCxB1 DCxB0 CCPxM3 CCPxM2 CCPxM1 CCPxM0 --00 0000
T1CON — — T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --00 0000
T2CON — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000
SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000
SSPCON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000 0000
SSPSTAT SMP CKE D/A P S R/W UA BF 0000 0000
CCP1CON — — CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000
RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x
CCP2CON — — CCP2X CCP2Y CCP2M3 CCP2M2 CCP2M1 CCP2M0 --00 0000
ADCON0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE — ADON 0000 00-0
ADCON1 ADFM — — — PCFG3 PCFG2 PCFG1 PCFG0 0--- 0000
TRISx 1111 1111

II- Programme en langage évolué :

2
A3 4éme

Un langage évolué de programmation est une notation conventionnelle destinée à formuler des algorithmes
afin de produire des programmes informatiques qui les traduisent.
Démarche :
Cahier des charges Algorithme Programme Compilation Chargement
(fichier.hex dans µC)

Simulation Mise en œuvre


(Logiciel ISIS) (µC)

1- Structure d’un programme :


Un programme est un texte que le compilateur va le traduire en fichier hexadécimal, pour cela il doit avoir
une structure particulière.
Le texte d’un programme doit contenir au moins trois parties :
 Entête : constituée d’une seule ligne, commençant par le mot  «Program» suivi du« nom_programme  ».
 Déclarations (variables, constantes).
 Corps du programme : commence par « Begin » et se termine par «  End. »
Langage Algorithmique Langage Mikropascal
Algorithme nom algorithme ; Program nom_programme ;
Variables nom_variable : type ; Var nom_variable : type ;
Constantes nom_constante : type = valeur ; Const nom_constante : type = valeur ;
Début Begin
Instruction1 ; Instruction1 ;
……………………  ; ……………………  ;
Fin. End.

2- Les Types de variables utilisées en Mikropascal :


Voir manuel de cours page 126
3- Les opérations arithmétiques et logiques  :
Voir manuel de cours page 126
4- Les bases du compilateur Mikropascal :
 Le décimal: A=15 ;  L’hexadécimal : A=…..… ; ou A=…………. ; Le binaire :A=…………

5- Configuration des ports :

3
A3 4éme

MODE ANALOGIQUE ET MODE NUMÉRIQUE :

- Le Port A est un Port multiplexé en mode analogique (AN) et en mode numérique (logique) noté (RA) :
- Une entrée en mode logique : noté (RA) : peut
prendre l’état 0 ou 1
- Une entrée en mode analogique : noté (AN) : peut
prendre une tension continue variable de 0 à 5V.
- Les entrées multiplexées en mode logique et
analogique sont : RA0/AN0; RA1/AN1; RA2/AN2 et
RA3/AN3 pour le PIC16F628A.
- Par défaut les broches du PortA sont initialisées en mode …………………………………..
- Pour PIC16F628A : Pour initialiser les broches du PortA en mode logique on doit configurer le registre
…………………………….. et écrire dans le programme : CMCON :=7 ;
- Pour PIC16F876A ou PIC16877A : Pour initialiser les broches du PortA en mode logique en doit
configurer le registre …………………………….. et écrire dans le programme : ADCON1 :=6 ;
- Pour PIC16F84A : les broches du PortA sont non multiplexées et ils sont en mode………………
EVALUATION N°1 : Compléter la déclaration des variables en respectant le montage ci-dessous :
Déclaration des Commentaire Montage à base d’un PIC
variables
E0 : sbit at porta.0; // bouton E0 est branché à RA0
E1 : sbit at RA1_bit; // …………………………………
……………………………; // bouton E2 est branché à RA2
E3 : sbit at RA3_bit; // …………………………………
S0 : sbit at RB0_bit; // Lampe S0 est branché à RB0
……………………………; // ……………………………….
……………………………; // Lampe S2 est branché à RB2
S3 : sbit at PortB.3; // ……………………..…………..
EVALUATION N°2 :
1/ Configurer le PortA en entrée ou en sortie ou non utilisé en respectant le montage :
PortA (8bits)
RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0
…… …… …… …… …… …… …… ……
Le registre TRISA permet de configurer le PORTA en entrée ou en sortie :
Si TrisA.i :=….. alors PortA.i est ……………
Si TrisA.i := ….. alors PortA.i est …………..
2/ Déduire la valeur du registre TRISA en binaire, en décimal et en hexadécimal :
TrisA := ……………………………; // en binaire
TrisA := ……. ; // en décimal
TrisA := ………. ; // en hexadécimal ou bien TrisA :=……………. ;
3/ Configurer le PortB en entrée ou en sortie ou non utilisé en respectant le montage :
PortB (8bits)
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
…… …… …… …… …… …… …… ……
Le registre TRISB permet de configurer le PORTB en entrée ou en sortie
Si TrisB.i :=… alors PortB.i est …………….
Si TrisB.i := … alors PortB.i est ……………..
4/ Déduire la valeur du registre TRISB en binaire, en décimal et en hexadécimal :
TrisB := ………………………….. ; // en binaire
TrisB :=…….. ; // en décimal
TrisB := ……… ; // en hexadécimal ou bien TRISB :=…………… ;

6- Les structures usuelles


Activité : Réaliser  :
l’activité pratique N°1 dans le manuel d’activités page 85..89
4
A3 4éme

a- Structures alternatives (conditionnelles) :


- - Voir manuel de cours page 127 
b- Structure répétitive:
- Voir manuel de cours page 128 
Activité : Réaliser l’activité pratique N°2 dans le manuel d’activités page 90..93
- Compteur modulo 10 :
Compléter le programme suivant et testez-le sur la maquette d’expérimentation :
Version 2
program compteur10; for i:=0 to 9 do
var i : byte; begin
begin portb:=…… ;
trisb:= ………… ; delay_ms(1000);
Portb:= ……….. ; end;
while true do end;
begin end.
 STRUCTURE: FOR .. DOWNTO .. DO :
Langage Graphique Langage algorithmique Langage mikropascal

POUR n variant de FOR n :=valeur_finale


valeur_finale JUSQU’A DOWNTO valeur_initiale DO
valeur_initiale FAIRE BEGIN
DEBUT Action ;
Action ; END;
FIN ; END ;
FINFAIRE ;

Parcourir des nombres : dans l'ordre décroissant, cette structure utilisée dans le cas
d’un décomptage Nombre de parcours : valeur_finale – valeur_initiale + 1
c- Procédure prédéfinie:
 PROCÉDURE INC ( ) ;
L’instruction N :=N+1 peut être remplacée par la procédure prédéfinie INC
Prototype Procedure Inc (var p : longint);
Description Incrémenter p par 1.
Exemple p := 4; // p =4 Inc(p); // p = 5
 PROCÉDURE DEC ( ) ;
L’instruction N :=N-1 peut être remplacée par la procédure prédéfinie DEC
Prototype Procedure Dec (var p : longint);
Description décrémenter p par 1.
Exemple p := 4; // p =4
Dec(p); // p = 3
 PROCÉDURE DELAY_MS ( ) ;
Prototype procedure Delay_ms(time_in_ms : const dword);
Exemple Delay_ms(1000); // pause d’une seconde
 PROCÉDURE VDELAY_MS ( ) ;
Prototype procedure Vdelay_ms(time_in_ms : word);
Exemple Vdelay_ms(1000); // pause d’une seconde
REMARQUE : Différence entre delay_ms() et vdelay_ms() :
- Delay_ms(N) : Pause de N ms avec N est une constante de type dword.
- Vdelay_ms(N) : Pause de N ms avec N peut-être une constante ou variable de type word.

5
A3 4éme

d- Autres routines prédéfinies :


SetBit :
Prototype procedure SetBit(var register : byte; bit_registre : byte);
Description Mettre le bit du registre à 1
Exemple SetBit(PORTB, 2); // mettre à 1 le bit N°2 du registre PORTB
équivalence L’instruction SetBit(PORTB,2) est équivalente à l’instruction : PORTB.2 :=1 ;
ClearBit:
Prototype procedure ClearBit(var register : byte; bit_registre : byte);
Description Mettre le bit du registre à 0
Exemple ClearBit(PORTC,7) ; // mettre à 0 le bit N°7du registre PORTC
Equivalence L’instruction ClearBit(PORTC,7) est équivalente à l’instruction : PORTC.7 := 0;
TestBit :
Prototype function TestBit(register, bit_registre : byte) : byte;
Description Si le bit du regsitre égale 1 alors TestBit = 1 sinon alors TestBit = 0
Exemple KM:= TestBit(PORTD,3); // Si PORTD.3 = 1 alors le relais KM =1 si PORTD.3 = 0
alors le relais KM=0
Equivalence If PortD.3 = 1 then KM :=1 else KM :=0 ; est équivalent à
KM :=TestBit(Portd,3) ;
- Application:
Commande d’une lampe H par deux boutons poussoirs S1 et S2
 Cahier des charges : 
On désire commander une lampe H par deux boutons poussoirs S1 et S2 en utilisant un microcontrôleur de type
PIC 16F84A.

PIC 16F84A
Deux ports A et B
PortA : 5 entrées/sorties numériques
PortB : 8 entrées/sorties numériques

On donne :
 Table de vérité :  Tableau d’affectation :
S1 S2 H Entrées / Sorties Broches du µC
0 0 0 Entrée : Bouton poussoir S1 RA0
0 1 1 Entrée : Bouton poussoir S2 RA1
1 0 1 Sortie : Lampe H RA2
1 1 0

H=S1 S 2 +S 1 S 2 =.. ... .. ... ..


 Travail demandé :
1- Configurer les deux ports A et B en utilisant respectivement les registres TRISA et TRISB.

RA4 RA3 RA2 RA1 RA0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
TRISA TRISB

Binaire Décimal Hexadécimal


TRISA
TRISB

6
A3 4éme

2- Compléter l’algorithme.
Algorithme
Algorithme XOR ;
DEBUT
Trisa  ….. ; // RA0 et RA1 sont des entrées et les autres broches sont des sorties.
Porta.2  ….. ; // Initialisation de RA2 (H = 0).
TANT QUE vrai FAIRE // Boucle infinie.
SI (((porta.0=1) ET (porta.1=0)) OU ((…………) ET (………….))) ALORS porta.2  1 SINON
……………. ;
FIN.
3-Traduire l’algorithme en un programme en Mikropascal.
Programme en Mikropascal
Program XOR ;
BEGIN
Trisa :=….. ; // RA0 et RA1 sont des entrées et les autres broches sont des sorties.
Porta.2 :=….. ; // Initialisation de RA2 (H = 0).
………. ……………… // Boucle infinie.
IF (((porta.0=1) AND (porta.1=0)) OR ((………….) AND (………….))) THEN porta.2 :=1 ELSE ………….. ;
END.

Application : Porte automatique d’un entrepôt réfrigéré


Ce système est destiné à ouvrir ou fermer une porte de sortie d’un
entrepôt réfrigéré d’une usine de produits laitiers de manière
automatique.
La porte est initialement fermée et la lampe rouge allumée, un
détecteur infrarouge signale la présence d’un camion à la sortie, à
ce moment, la porte s’ouvre automatiquement et la lampe verte
s’allume, une fois le camion sort, la porte se ferme et la lampe
rouge s’allume de nouveau.

Capteurs Préactionneurs
IR1 Camion devant la porte LR Lampe rouge
IR2 Sortie du camion de l’entrepôt LV Lampe verte
Pf Porte fermée KM1 Ouverture de la porte
Po Porte ouverte KM2 Fermeture de la porte

Choisir le Pic 16F628A


On donne le GRAFCET PC et le tableau d’affectation des entrées/sorties :

Entrées Sorties
Système microcontrôleur Système microcontrôleur
IR1 RB0 LR RA0
IR2 RB1 LV RA1
Pf RB2 KM1 RA2
P0 RB3 KM2 RA3

7
A3 4éme

 Compléter le grafcet codé microcontrôleur


et proposer un schéma de simulation :

Algorithme porte; X0 1; X1 0; X2 0; X3 0; Si ………………………….alors


Variables : Tant que vrai faire début
IR1 : bit système affecté à RB0; début X3 0;
IR2 : bit système affecté à …..; Si ((X0=1) ET (……………..)) alors X0 1;
Pf : bit système affecté à .…..; début finsi;
Po : bit système affecté à …..; X0 0; // Traitement des sorties
LR : bit système affecté à …..; X1 1; Si ((X0=1)….(…….) …..
LV : bit système affecté à …..; finsi; (X3=1)) alors LR 1 ……….
KM1 : bit système affecté à ....; Si ((…….) ET (………)) alors LR …..;
KM2 : bit système affecté à ....; début Si (…….) …….…….. sinon
X0,X1,X2,X3 : bit mémoire ; ………….. KM1 0;
DÉBUT ………….. Si (X2=1) ……………………..
TrisA……...; // tout le porta est finsi; …………………………………
configuré en sorties. Si ((X2=1) … (IR2=…) ….(….=0)) Si (X3=1) alors ……..……….
TrisB ……..; // tout le portb est alors …………………………………
configuré en entrées. début
CMCON……….…; ………….. Fin ;
LR……; LV……; KM1……; ………….. FIN.
KM2……; finsi;

 Traduire l’algorithme précédent en un programme en mikropascal.


program porte; X0:=1;X1:=0;X2:=0;X3:=0; If ………………………….then
Var while true do begin
IR1 : sbit at portb.0; begin X3:=0; X0:=1;
IR2 : sbit at RB1_bit ; if ((X0=1) AND (…..………..))then end;
Pf : …………………………..; begin if ((X0=1) OR (X1=1) OR
Po : …………………………..; X0:=0; (X3=1)) then LR:=1 else
LR : …………………………..; X1:=1; LR:=0;
LV : …………………………..; end; if X1=1 then KM1:=1 else
KM1…………………………..; if ((X1=1) AND (Po=1)) then KM1:=0;
KM2…………………………..; begin if X2=1 then
X0,X1,X2,X3 : bit; ………….. …………………………………
BEGIN ………….. ………….
TrisA:= …….;//tout le porta est end; if X3=1 then
configuré en sorties. if ((X2=1) AND (IR2=1) AND ………………………………… 8
TrisB:=……..; //tout le portb est (IR1=0)) then ………….
configuré en entrées. begin end;
…………..:= $07; ………….. END.
LR:=…; LV….; KM1:=0; …………..
A3 4éme

7- Les procédures et les fonctions :


- - Voir manuel de cours page 128-131.
Application :
1- Compteur_décompteur modulo 10 :
On désire réaliser un compteur décompteur
modulo 10 en utilisant un microcontrôleur
de type PIC 16F877A et un afficheur
sept segments.
 Schéma structurel :
S=1 : Compteur
S=0 : Décompteur

 Compléter le programme en Mikropascal.


Programme en Mikropascal
program compteur ;
var i : ……………………; // déclaration de la variable i.
const chiffre : array[10]of byte = ($00,$01,………………………………………….); // déclaration de la
constante chiffre.
procedure affichage ; // sous programme d’affichage.
begin
portb := chiffre[i] ; // affichage de i sur le portb.
delay_ms(400) ; // attente de 0.4s.
end ;
BEGIN
trisa := …….. ; // RA0 : entrée
trisb := ……… ; // Portb configuré en sorties
portb :=….. ; // initialisation du portb.
…………….. ; // Cofigurer le port A en mode numérique(ou désactivation du comparateur)
while true do // boucle infinie.
begin
if ………………………….. then // s = 1 : compteur.
begin
for i…….. to……….. do …………………….. ; // exécuter la procédure d’affichage.
end
else // s = 0 : décompteur.
begin
for i……….. downto………. do …………….; // exécuter la procédure d’affichage.
end ;
end ;
END.

Vous aimerez peut-être aussi