Académique Documents
Professionnel Documents
Culture Documents
Dr : A. ABBOU
IGA 2013
ABBOU
DEFINITION
Un microcontrleur est un C.I qui rassemble les
lments essentiels d'un ordinateur :
Processeur
Mmoires
Units priphriques et interfaces dE/S
ABBOU
Du -processeur au -contrleur
Du -processeur au -contrleur
Les microcontrleurs amliorent l'intgration et le cot (li
la conception et la ralisation) d'un systme base de
microprocesseur
Microcontrleur = Microprocesseur + Ram + Rom + E/S
Faible consommation
Cot rduit
Encombrement rduit
Programmation ncessitant un matriel adapt
une vitesse de fonctionnement et taille mmoire
plus faible par rapport aux microprocesseurs
ABBOU
Applications
Informatique et tlcommunication (souris,
modems)
Contrle de processus industriels (rgulation,
pilotage)
Vido (Appareil photos et camra numriques),
Familles de microcontrleurs
la famille Atmel AT91 , Atmel AVR ;
le C167 de Siemens;
la famille Hitachi H8;
lIntel 8085 , Intel 8051
la famille Motorolla 68HC11, 68HC08 , 68HC12 ;
la famille des PIC de Microchip ;
la famille des ST6, ST7, ST10, STR7, STR9 de
STMicroelectronics ;
la famille ADuC d'Analog Devices ;
la famille MSP430 de Texas Instruments ;
la famille LPC21xx ARM7-TDMI de Philips ;
ABBOU
-Architecture Harvard :
Le programme et les donnes sont stockes dans
des mmoires physiquement spares.
ABBOU
Architecture
Architecture de Von Neumann :
Un seul Bus malgr la
sparation de lespace
mmoire donnes et
mmoire programme.
Occupation mmoire dune
instruction variable.
Architecture Harvard :
Un bus pour chaque Mmoire
(Donnes et programme)
Occupation mmoire fixe
pour toutes les instructions
ABBOU
Architecture
RISC & CISC
RISC Reduced Instruction Set Computer
Toutes les instructions ont la mme taille
ABBOU
10
Architecture
RISC & CISC
Exemple: on dplace 100 octets de l'adresse mmoire src vers l'adresse mmoire dst.
A gauche on utilise une macro-instruction (RISC) REP MOVSB quivalent la partie figure en
vert droite.
RISC
MOV CX,100
MOV DI,dst
MOV SI,src
REP MOVSB
CISC
MOV CX,100
MOV DI,dst
MOV SI,src
boucle:
MOV AL,[DI]
MOV [SI],AL
INC SI
INC DI
DEC CX
JNZ boucle
Pascal
Var
i : integer;
src, dst : array[1..100] of byte;
for i:=1 to 100 do
dst[i]=src[i];
ABBOU
11
ABBOU
12
Microcontrleurs
Architecture interne
Mmoire flash : C'est une mmoire
rinscriptible qui conserve ses donnes
lorsque la PIC n'est pas alimente. Elle est
utilise pour stocker le programme.
Mmoire RAM : C'est une mmoire volatile.
Les variables utilises au cours du
programme sont stockes cet endroit.
Unit de Calcul : C'est l o se droulent
toutes les oprations une vitesse dfinie
par la frquence d'horloge.
Registre temporaire W : C'est ici qu'est
stocke la valeur ncessaire pour une
opration de l'unit de calcul.
Ports E/S ( Entres/Sorties ) : Ce sont les
units qui font le lien entre ce qui se passe
l'intrieur du PIC et l'extrieur.
Modules annexes : Toutes les fonctions
annexes (timers, comparateurs,
convertisseurs analogiques/numriques ...)
ABBOU
13
14
ABBOU
15
16
ABBOU
17
ABBOU
18
ABBOU
19
ABBOU
20
La mmoire
ABBOU
21
ABBOU
22
ABBOU
23
ABBOU
24
ABBOU
25
Le TIMER0
ABBOU
26
Le TIMER1
ABBOU
27
Le TIMER2
ABBOU
28
ABBOU
29
ABBOU
30
LUSART
ABBOU
31
32
33
ABBOU
34
Zone Slectionne(Bank)
00
De 00h 7Fh
: BANK 0
01
De 80h FFh
: BANK 1
10
11
ABBOU
35
ABBOU
36
ABBOU
37
ABBOU
38
ABBOU
39
ABBOU
40
ABBOU
41
42
ABBOU
43
44
Adresse dimplantation
Boitier 1
1000h - 17FFh
Boitier 2
1800h - 1FFFh
Boitier 3
C000h - C7FFh
Boitier 4
CA00h - D0FFh
46
Jeu dinstructions
Opration sur les registres
47
Jeu dinstructions
Suite
ABBOU
48
Jeu dinstructions
{W,F ? d} signifie que le rsultat va soit dans W si d=0 ou w, soit dans F si d= 1 ou f
LEGENDE DES TABLEAUX DINSTRUCTIONS
d
Dtermine la destination :
d=0 Registre Travail
d=1 Registre Mmoire SFR ou
RAM.
fff ffff
bbb
ABBOU
49
50
Exemples:
BSF STATUS,2 ; signifie : placer 1 le bit 2 (3me bit partir de la
droite) du registre STATUS
BCF 45h,6 ; signifie : placer 0 le bit 6 (7me bit partir de la droite)
du registre de la case mmoire dadresse 45h
ABBOU
51
52
ABBOU
53
ABBOU
54
Linstruction goto
Permet de transfrer lexcution une autre position du programme
repre par une tiquette (label)
Exemple:
ABBOU
55
Linstruction call
Linstruction call permet dappeler une fonction. Une fonction est un sous
programme crit la suite du programme principal. Sa premire ligne doit
comporter une tiquette et elle doit se terminer par return.
Exemple:
56
57
ABBOU
58
ABBOU
59
60
61
ABBOU
62
63
ABBOU
64
Allumer
Eteindre
65
Exercices
Exercice 5)
Ecrire un programme qui incrmente indfiniment la position mmoire (RAM) 60h.
Exercice 6) : Accs la RAM par l'adressage direct
Donner le programme qui copie :
35 dans la position 20h, 'A' dans la position A0h
b11101 dans la position 110h, 35h dans la position 190h
Exercice 7) : Soustraction
Donner le programme qui :
-soustrait la constante 33 de l'accumulateur W (W-33)
-Soustrait la constante 40h de la case mmoire d'adresse 70h ([70h]-40h [70h])
-qui soustrait le contenu de la case mmoire 70h de l'accumulateur W avec le
rsultat dans W ( W [70h] W )
- qui soustrait le contenu de la case mmoire 71h de l'accumulateur W avec le
rsultat dans la case mmoire ( W [71h] [71h] )
Exercice 8) : Accs la RAM par l'adressage indirect
Donner le programme qui copie l'alphabet majuscule dans la RAM partir de la
position 190h
Exercice 9) : (comp1.asm)
Comparer les contenus des cases mmoire 6Fh et EFh, sil son gaux mettre zro
66
tous les bits de la case 16Fh sinon mettreABBOU
1 tous les bits de la case 1EFh
Boucles de temporisation
ralisation des temporisations l'aide de simples boucles, sans recours aux 3
TIMER du PIC:
A-Temporisation avec une boucle
movlw 4
movwf 70h
ici decfsz 70h,f
goto ici
- Les instructions movlw et movwf prennent 1 cycle chacune
- L'instruction decfsz prend un cycle si elle ne saute pas et 2 cycles quand elle saute
- L'instruction goto prend 2 cycles
- chaque passage dans la boucle prend (1+2) cycle sauf le dernier qui prend 2 cycle
67
Boucles de temporisation
B-Temporisation avec 2 boucles imbriques
La boucle intrieure (N1) se fait toujours 256 fois. La boucle extrieure se fait N2
fois. Cest N2 qui constituera le paramtre de la fonction, Il faut le placer dans W
avant de lappeler.
tempo2 :
principal
t2 :
ABBOU
68
Exercices
Exercice 5) : Accs la RAM par l'adressage direct
Donner le programme qui copie :
35 dans la position 20h, 'A' dans la position A0h
b1010 dans la position 110h, 35h dans la position 190h
Exercice 6) : Soustraction
Donner le programme qui :
-soustrait la constante 33 de l'accumulateur W (W-33)
-Soustrait la constante 40h de la case mmoire d'adresse 70h ([70h]-40h
[70h])
-qui soustrait le contenu de la case mmoire 70h de l'accumulateur W avec
le rsultat dans W ( W [70h] W )
- qui soustrait le contenu de la case mmoire 71h de l'accumulateur W avec
le rsultat dans la case mmoire ( W [71h] [71h] )
Exercice 7) : Accs la RAM par l'adressage indirect
Donner le programme qui copie l'alphabet majuscule dans la RAM partir
de la position 190h
Exercice 8) : (comp1.asm)
Comparer les contenus des cases mmoire 6Fh et EFh, sil son gaux mettre
69
zro tous les bits de la case 16Fh ABBOU
sinon mettre 1 tous les bits de la case
1EFh
outils de dveloppement
Loutil de dveloppement principal est lenvironnement de
dveloppement intgr MPLAB fournit gratuitement par Microchip
Procdure de travail:
Les tapes ncessaires permettant de voir un programme s'excuter sur un PIC sont :
Ecrire un programme en langage assembleur dans un fichier texte et le sauvegarder
avec l'extension .asm
Compiler ce programme avec l'assembleur MPASM fourni par Microchip. Le rsultat
est un fichier excutable avec l'extension .hex contenant une suite d'instruction
comprhensible par le pic.
Transplanter le fichier .hex dans la mmoire programme du PIC (mmoire flash)
l'aide d'un programmateur adquat. On peut utiliser les programmateurs de Microchip
ou tout autre programmateur achet .
Mettre le PIC dans son montage final, mettre sous tension.
Microchip propose gratuitement l'outil de dveloppement MPLAB qui regroupe l'diteur
de texte, le compilateur MPASM, un outil de simulation et le logiciel de programmation.
Le programmateur lui-mme, n'est malheureusement pas gratuit.
ABBOU
70
outils de dveloppement
Lenvironnement de dveloppement MPLAB
Sance de
Prise en main de MPLAB
ABBOU
71
- un bit 1 --> I --> Input --> entre - un bit 0 --> O --> Output --> sortie Le courant absorb ou fourni peut atteindre 25 mA
ABBOU
72
La majorit des broches sont
multiplexes avec d'autres fonctions
Le port A
Cest un port de 6bits (RA0 RA5). RA6 et RA7 ne sont pas
accessibles.
ABBOU
73
Le port B
Le port B dsign par PORTB est un port bidirectionnel
de 8 bits (RB0 RB7). Toutes les broches sont compatibles TTL.
La configuration de direction se fait l'aide du registre TRISB,
positionner un bit de TRISB 1 configure la broche
correspondante de PORTB en entr et inversement.
Au dpart toutes les broches sont configures en entre.
En entre, la ligne RB0 appele aussi INT peut
dclencher linterruption externe INT.
En entre, une quelconque des lignes
RB4 RB7 peut dclencher l'interruption RBI.
75
Le port C
N'existe que pour les botiers 28 et 40 broches,
Partag avec les liaisons sries, les Timers 1,2 et les modules CCP,
port bidirectionnel de 8 bits (RC0 RC7).
Toutes les broches sont compatibles TTL.
ABBOU
76
Le port D
Le port D dsign par PORTD est un port bidirectionnel de 8 bits (RD0
RD7). Toutes les broches sont compatibles TTL et ont la fonction trigger de
Schmitt en entre.
Chaque broche et configurable en entre ou en sortie
laide du registre TRISD.
PORTD nest pas implment sur tous les processeurs
16F87X, il est disponible sur le 16F877, le 16F874 et le 16F871
Le port E
PORTE contient seulement 3 bits RE0, RE1 et RE2. Les 3 sont configurables
en entre ou en sortie laide des bits 0, 1 ou 2 du registre TRISE.
PORTE nest pas implment sur tous les processeurs 16F87X, il est
disponible sur le 16F877, le 16F874 et le 16F871
Les 3 bits de PORTE peuvent tre utiliss soit comme
E/S numrique soit comme entres analogiques du CAN.
La configuration se fait laide du registre ADCON1.
Si le bit PSPMODE de TRISE est plac 1, Les
trois bits de PORTE deviennent les entres de control
du PORTD qui (dans ce cas) fonctionne en mode parallele
Slave mode
A la mise sous tension (RESET), les 3 broches de PORTE sont configures
comme entres analogiques.
ABBOU
78
EXERCICES
Exercice 9 : Clignoter une LED
Donner le programme qui fait clignoter une LED branche
sur RA0 avec une temporisation voisine de 0.5s. Sachant
que le PIC est dot d'un quartz de 4 MHz. la temporisation
sera ralise l'aide de boucles imbriques
Exercice 10 : Clignoter une LED
79
EXERCICES
Exercice 11 : BCD 7 segments
On branche un bouton poussoir sur la broche RA4 de
sorte que celle-ci passe 0 quand on appuie
On branche un afficheur 7 segments cathode commune
sur le port C
Chaque fois quon appuie sur le bouton poussoir, le
contenu de lafficheur doit sincrmenter
80
LES TIMERS
Les processeurs de la famille PIC16
Peuvent avoir trois timers:
- Le timer 0 - TMR0 - 8 bits
- Le timer 1 - TMR1 - 16 bits
81
Le Timer 0 - TMR0
TMR0 est un compteur 8 bits
ABBOU
82
ABBOU
83
ABBOU
84
Le Timer 0
Cest un compteur 8 bits ayant les caractristiques
suivantes :
Il est incrment en permanence soit par lhorloge interne Fosc/4
(mode timer) soit par une horloge externe applique la broche RA4
du port A (mode compteur).
La slection de mode de fonctionnement seffectue par le bit 5 du registre
OPTION : T0CS pour Tmr0 Clock Source select bit.
T0CS = 1 : Fonctionnement en mode compteur
T0CS = 0 : Fonctionnement en mode timer
ABBOU
85
Le Timer 0
* Si on dcide de travailler en mode compteur, on doit prciser lors de
quelle transition de niveau le comptage est effectu. Ceci est prcis grce
au bit 4 du registre OPTION : T0SE pour Timer0 Source Edge select bit.
T0SE = 1 : comptage si lentre RA4/TOKI passe de 1 0
T0SE = 0 : comptage si lentre RA4/TOKI passe de 0 1
* A son dbordement (FFh 00h) le drapeau T0IF est positionn ce qui
peut dclencher l'interruption si elle est valide (GIE=1 et T0IE=1 ).
Lorsque T0IE est positionn dans le registre INTCON, chaque fois que le
flag T0IF passe 1, une interruption est gnre,
il faut repositionner T0IF 0 aprs traitement de l'interruption
ABBOU
86
ABBOU
87
Le Timer 0: Le prdiviseur
Quelque soit l'horloge choisie, on peut la passer dans un diviseur de
frquence programmable (prescaler) dont le rapport est fixs par les
bits PS0, PS1 et PS2 du registre OPTION_REG.
L'affectation ou non du prdiviseur se fait
l'aide du bit PSA du registre OPTION_REG
o PSA = 0 on utilise le prdiviseur
o PSA = 1 pas de prdiviseur
(affect au chien de garde)
ABBOU
88
Le Timer 0: Le prdiviseur
Le prdiviseur est un diviseur dvnements situ
AVANT lentre de comptage du timer0.
PS2
PS1
PS0
/TIMER0
Temps Timer0
Qz = 4Mhz
Temps Timer0
Qz = 8Mhz
512 s
256 s
1024 s
512 s
2048 s
1024 s
16
4096 s
2048 s
32
8192 s
4096 s
64
16384 s
8192 s
128
32768 s
16384 s
256
65536 s
32768 s
ABBOU
89
void interrupt ( )
{
OPTION_Reg = ? ;
if (INTCON. T0IF == 1)
{
..
..
INTCON.T0IE = 1;
while (1)
{
INTCON.T0IF = 0;
}
}
}
}
ABBOU
90
APPLICATIONS
ABBOU
91
INTERRUPTIONS
Une interruption est un signal demandant au processeur de
suspendre temporairement lexcution du programme courant afin
deffectuer des oprations particulires.
Intrt: Ce mcanisme permet dimplmenter une raction une
sollicitation
offrant un dlai de rponse trs bref,
programme de faon indpendante du code en cours
dexcution.
Les interruptions peuvent tre dclenches soit par un composant
extrieur au processeur:
changement de valeur logique une entre dsigne
soit par le processeur lui-mme:
chance dune temporisation,
interruption logicielle,
ABBOU
...
92
INTERRUPTIONS
Une interruption provoque larrt du programme principal pour
aller excuter une procdure d'interruption.
A la fin de cette procdure, le microcontrleur reprend le
programme principale lendroit o il la laiss.
A chaque interruption sont associs deux bits, un bit de
validation et un drapeau.
Le premier permet d'autoriser ou non l'interruption, le second
permet au programmeur de savoir de quelle interruption il
s'agit.
Les interruptions sont classes en deux catgories:
- les interruptions primaires
- les interruptions priphriques.
ABBOU
93
INTERRUPTIONS PRIMAIRES
Quelques sources dinterruption
..
.
ABBOU
94
INTERRUPTIONS
Toutes les interruptions peuvent tre
valides/interdites par le bit INTCON.GIE
Toutes les interruptions priphriques peuvent
tre valides/interdites par le bit INTCON.PEIE
Chaque interruption peut tre valide/interdite par
son bit de validation individuel
En rsum, pour valider une interruption
primaires, il faut positionner 3 bits, GIE, PEIE et le
bit individuel de linterruption.
ABBOU
95
INTERRUPTIONS
Elles sont gres par les registres :
ABBOU
96
INTERRUPTIONS
Le registre OPTION permet de choisir le type de front
pour linterruption INT/RB0
- Le registre INTCON
ABBOU
97
ABBOU
98
99
ABBOU
100
101
Fonction dinterruption
Comme le PIC na quun seul programme de traitement
dinterruption, il faut absolument commencer par rechercher la
source de linterruption, lorsque plusieurs sources sont possibles.
Ceci seffectue en testant les drapeaux (bits dtat). Une
interruption provoque une mise 1 du drapeau correspondant.
A la fin de linterruption, on remet le drapeau 0. Cela permet de
prendre en compte la prochaine interruption.
Exemple :
void interrupt()
{ if (INTCON. INTF)
{
.
INTCON. INTF = 0;
}
ABBOU
}
102
Application
Exercice (int.asm)
Programme qui utilise linterruption INT comme suit :
ABBOU
103
Il est compos de :
Un chantillonneur bloqueur.
104
Organisation interne
ABBOU
105
106
ABBOU
107
configuration du convertisseur :
- Le nombre dentres analogiques.
- Le nombre dentres logiques.
- Le type de tension de rfrence :
- Interne VREF =VDD-VSS.
108
ABBOU
109
ABBOU
110
ABBOU
111
ABBOU
112
Le registre ADCON0
ABBOU
113