Vous êtes sur la page 1sur 73

Définition

Un microcontrôleur est un Circuit intégré. qui rassemble les


éléments essentiels d'un ordinateur :

• Processeur
• Mémoires
• Unités périphériques et interfaces d‘E/S
Du µprocesseur au µcontroleur

• Pour réaliser un système (micro computer) minimum, il


• faut ajouter au microprocesseur les éléments suivants :
• Mémoire de programme ROM.
• Mémoire de données RAM.
• Circuits d’Entrées/Sorties.
Du µprocesseur au µcontroleur
• Les microcontrôleurs améliorent l'intégration et
le coût (lié à la conception et à la réalisation) d'un
système à base de microprocesseur
• Microcontrôleur = Microprocesseur + Ram + Rom
+ E/S
• Un microcontrôleur est donc un composant
autonome,
• Les microcontrôleurs peuvent fonctionner sans
l’addition de circuits externes
Caractéristique d’un µcontrôleur
• Circuit imprimé peu complexe
• Faible consommation
• Coût réduit
• Encombrement réduit
• Programmation nécessitant un matériel adapté
• une vitesse de fonctionnement et taille mémoire
plus faible par rapport aux microprocesseurs
Application
• Informatique et télécommunication (souris,
modems…)
• Contrôle de processus industriels (régulation,
pilotage)
• Vidéo (Appareil photos et caméra numériques…),
• Multimédia (téléviseur, carte audio, carte
• vidéo,MP3,…)
• Systèmes embarqués, comme les contrôleurs des
moteurs automobiles (ABS, injection,GPS, airbag),
• les télécommandes, jouets, la téléphonie mobile,…
Les pics de microChips

La société Américaine Microchip Technologie a mis au


point dans les années 90 un microcontrôleur CMOS :
le PIC (Peripheral Interface Controller).
Ses caractéristiques principales sont :
Architecture RISC : Reduced Instruction Set Computer
- Jeu d’instruction réduit
- instruction et opérande codés sur un seul mot
- Toutes les instructions (hors saut) sur un cycle machine
Architecture Harvard :
-Le programme et les données sont stockées dans
des mémoires physiquement séparées.
MICROCONTROLEUR
Architecture interne
Mémoire flash : C'est une mémoire
réinscriptible qui conserve ses données
lorsque la PIC n'est pas alimentée. Elle est
utilisée pour stocker le programme.
Mémoire RAM : C'est une mémoire volatile.
Les variables utilisées au cours du
programme sont stockées à cet endroit.
Unité de Calcul : C'est là où se déroulent
toutes les opérations à une vitesse définie
par la fréquence d'horloge.
registre temporaire W : C'est ici qu'est
stockée la valeur nécessaire pour une
opération de l'unité de calcul.
Ports E/S ( Entrées/Sorties ) : Ce sont les
unités qui font le lien entre ce qui se passe
à l'intérieur du PIC et l'extérieur.
Modules annexes : Toutes les fonctions
annexes (timers, comparateurs,
convertisseurs analogiques/numériques ...)
Les différents familles de pic
• Base-line (Les instructions sont codées sur12 bits)
- PIC 10 - PIC 12
- Certains PIC12F & PIC16F
• Mid-range (Les instructions sont codées sur 14
bits)
- La plupart des PIC 16
- Certains PIC12F
• High-end (Les instructions sont codées sur 16
bits)
- PIC 17
- PIC 18
Références des Microchips
µcontrôleur 16f877
• Le numéro 16 signifie qu'il fait partie de la famille
"MID-RANGE". C'est la famille de PIC qui travaille
sur des mots de 14 bits.
• La lettre F indique que la mémoire programme de
cette PIC est de type "Flash".
• Les derniers chiffres permettent d'identifier
précisément la PIC, ici c'est une PIC de type 877.
• La référence 16F877 peut avoir un suffixe du type
"-XX" dans lequel XX représente la fréquence
d'horloge maximale que la PIC peut recevoir.
Notion de bases: Les mémoires

• RAM:Random Access Memory). Ce type de mémoire est volatile,


cela veut dire que les données qu'elle contient seront perdues si
l'alimentation en électricité s'arrête.
• ROM (Read Only Memory), cela veut dire que la mémoire n'efface pas
les données qu'elle contient lorsqu'elle n'est plus alimentée en
électricité, ce sont des mémoires NON volatiles.
• EPROM :(Erasable Programmable Read Only Memory). Ce type de
mémoire est effaçable par exposition aux ultraviolets .
• EEPROM :(Electrically Erasable Programmable Read Only Memory).
Ce type de mémoire est effaçable électriquement .
• FLASH:ce sont une variété de mémoire EEPROM mais plus rapide,
ce type de mémoire peut se faire effacer par secteur complet.
Architecture interne16f877
Les éléments essentiels du pic
• Une mémoire programme de type Flash de 8K mots de 14 bits
• Une RAM Donnée 368 octets
• Cinq port d’entrée sortie A( 6bits),B(8bits),C(8bits),D(8bits) et E(3bits).
• Convertisseur analogique numériques(CAN) 10 bits à 8 canaux
• USART:Port série universel, mode asynchrone(RS232) et mode synchrone
• Trois TIMERS:TMR0,TMR1,TMR2
• Deux modules de comparaison et capture CCP1 ET CCP2
• Fonctionnement en mode sleep pour réduction de la consommation
Architecture externe
Exemple d’application

Configurer les
entrées et sorties
Exemple d’application

RB1:SORTIE

RB5: entrée

Comment dire ça au
microcontrôleur ???
C’est le rôle des registres
TRISX
TRISA,TRISB,TRISC…..
Bank 1

-bit i =0
le bit i de portB est
configuré en sortie
-bit i=1
Le bit i de portB est
configuré en entrée
À l’aide des jeux
d’instructions
Entrée sortie

BCF TRISB,RB1 ; RB1 est une sortie


BSF TRISB,RB5 ; RB2 est une entrée

 Notant au démarrage le microcontrôleur pointe sur le bank0,mais le TRISB se trouve


dans le bank1
 C’est le rôle des bits RP0 et RP1 du registre STATUS

BCF STATUS,RP1 ;
BSF STATUS,RP0 ;
Le programme principale:

BCF STATUS,RP1 Accès au bank0


BSF STATUS,RP0
BCF TRISB,RB1 ; configuré en sortie
BSF TRISB,RB5 ; configuré en entrée
BCF STATUS,RP0 ; retour au bank0
LABEL1 BCF PORTB,RB1
LABEL2 BTFSC PORTB,RB5 ; test du RB5
GOTO LABEL1
BSF PORTB,RB1
GOTO LABEL2
Sous-programme et temporisation
Sous programme
1. Définition
Un sous programme est une séquence
d’instructions chargé d’effectuer un traitement
particulier.
• Les sous programmes permettent ainsi de
décomposer un programme en plusieurs sous
parties
2. Structure
Programme principal Sous-programme
…….. X …………..
……………
…….. …………..
RETURN
……..
CALL X
CALL: instruction d’appel du sous-
…….. programme
CALL X RETURN: instruction de retour du sous-
programme
…….
3.Avantages
• Un sous-programme permet de réduire la
taille d’un programme. En effet, il évite de
répéter plusieurs fois une mêmes séquences
d’instructions
• Un sous programmes permet de simplifier la
réalisation et la mise au pont du programme
Temporisation
• Il s’agit de réaliser ici une temporisation
logicielle et de l ’associer à un sous-
programme ’’Tempo’’
Tempo MOVLW 0xFF; NFF
SSOUS- MOVWF N
PROGRAMME
Loop DECFSZ N,f ; décrémenter N et tester si N=0
Tempo
GOTO loop ;sinon retour à l’étiquette ‘loop’
RETURN ;si oui retour au programme
principal
NFF

NN-1
Appel du programme par CALL tempo
NON
N=0

retour
• Calculé la durée de temporisation
La fréquence de l’horloge interne est le quart de celle de l’oscillateur,soit
f=FOSC/4 ainsi pour FOSC=4MHz, f=1 MHz et TC=1 µs(cycle d’instruction)

Nombre de cycle du sous Tempo MOVLW 1


programme de temporisation = MOVWF N 1
Loop DECFSZ N,f 1(2)
1+1+255(1+2)+2=769 cycles GOTO loop 2
Soit avec un quartz de 4 MHz, une RETURN 2
durée de T=769 µs
Le module Timer 0
• Le timer est un compteur de 8 bits
Configuration
• Timer 0 est configuré par le registre OPTION_REG

• L’horloge de Timer 0 peut étre interne ou externe


• T0CS=0horloge interne du microcontroleur(de fréquence FOSC/4):mode timer
• T0CS=1horloge externe appliqué à la broche RA4:mode compteur
On peut utiliser le prédiviseur de fréquence
PSA=0le prédiviseur est affecté à Timer 0
PSA=1le prédiviseur n’est pas affecté à Timer0
Le facture de division de la fréquence est fixé par les bits PS2,PS1 et PS0

PS1 PS2 PS3 000 001 010 011 100 101 110 111
Division de 2 4 8 16 32 64 128 256
fréquence
TMR0 en mode timer
Dans ce mode Timer0 est piloté par l’horloge interne du
microcontrôleur et sert de temporisateur
Durée e temporisation maximale(pour un oscillateur de quartz de
FOSC=4MHZ)
Horloge interneTosc=0
Prédivision maximale de 256  PSA=0 et PS1 PS2 PS3=111

Option_reg RBPU INTEDG TOCS TOSE PSA PS1 PS2 PS3


- - 0 - 0 1 1 1
La valeur de départ nulle du timerTMR0=0(TMR0 est un
registre associé au timer0)
Fosc=4 MHZ Tc=1 Tc=256
/4 Prédiviseur Timer0

Au départ TMR0=0 LE TIMER déborde au bout de 256 périodes


soit au bout d’une durée de 256x256µ=65,536 ms
• Temporisation par scrutation du débordement du timer
Au débordement de timer 0(passage de FF à 00 soit après 256
impulsions),le bit indicateur T0IF du registre INTCON passe 1

INTCON GIE PEIE TOIE INTE RBIE T0IF INTF RBIF

…..
MOVLW 0X07 ;configurer TMR0 par option_reg
MOVWF OPTION_REG
……
Tempo CLRF TMR0 ;Valeur de départ de TMR0
BCF INTCON,T0IF ;Baisser le drapeau cad T0IF=0
Attente BTFSS INTCON,T0IF ;tester si T0IF=1
GOTO attente ;sinon revenir à attente
RETURN ;si oui retour au programme principal

D’une façon générale, la durée de temporisation s’écrit


T=TC.Prédiviseur.(256-TMR0)
• Exercice:
On désire une temporisation de 10 ms,trouver le
mot de configuration(option_reg) et la valeur
initiale de TMR0,on donne Fosc=4MHZ

Tc=1µs
Si on prend prédiviseur=64,le mot de configuration
sera:
Option_reg RBPU INTEDG TOCS TOSE PSA PS1 PS2 PS3
- - 0 - 0 1 1 1

T=TC.Prédiviseur.(256-TMR0),on trouve TMR0=100


• TMR0 en mode compteur
Dans ce mode,Timer0 est piloté par une horloge
externe(relié à la broche RA4) est sert de
compteur d’évènements
Exercice
On désire compter le nombre d’actions sur le
capteur Trouver le mot de configuration du
timer. Ranger la valeur de comptage en cours
dans le registre d’adresse 0x7F
C RA4
Timer 0
• Solution
-Horloge externeT0CS=1
-Pas de prédivition PSA=1
Option_reg RBPU INTEDG TOCS TOSE PSA PS1 PS2 PS3
- - 1 - 1 - - -

…..
MOVLW 0X28 ;configurer TMR0 PAR option_reg
MOVWF OPTION_REG
…..
MOVf TMR0,W ;mettre TMR0 en cours dans 0x7F
MOVWF 0X7F
Module de conversion A/N(CAN)
• Présentation
Il est constitué d’un module convertisseur A/N10 bits
à 8 entrées. Les 5 premiers sont sur le port A en
RA0, RA1, RA2, RA3 et RA5. Les 3 entrées
supplémentaires sont RE0, RE1 et RE2.
Les tensions de références haute et basse peuvent
être choisies par programmation comme suit:
• Vref+ : peut être VDD ou la broche RA3
• Vref- : peut être VSS ou la broche RA2
Ce module convertisseur A/N utilise 4 registres qui
sont :
- ADRESH en page 0 : MSB des 10 bits du résultat.
- ADRESL en page 1 : LSB des 10 bits du résultat.
- ADCON0 en page 0 : registre de contrôle N°0 du
Convertisseur.
- ADCON1 en page 1 : registre de contrôle N°1 du
Convertisseur.
Programmation
1. Configurer les E/S en Analogique/Numérique/Référence (ADCON1).
2. Configurer les entrées analogiques en entrées (TRISA, TRISE).
3. Définir l'horloge de conversion à l'aide du diviseur DIV dans ADCON0.
4. Choisir le canal à convertir et valider le module (ADCON0).
5. Attendre le temps d’acquisition (12 μs ).
6. Lancer la conversion, GO = 1 (ADCON0).
7. Attendre fin de conversion, GO = 0 ou drapeau ADIF = 1 (bit 5 de registre PIR1 page0).
8. Traiter le résultat.
9. Si l'on désire prendre d'autres mesures, recommencer au point6 en faisant attention aux
timings.
• Exercice d’application
Pour un PIC doté d'un quartz de 1 MHz. Etablir le programme qui converti la tension
appliquée à RA0 et recopie le résultat dans la RAM à la position 70H et 71H.
LES INTERRUPTIONS

Vous aimerez peut-être aussi