SlideShare une entreprise Scribd logo
1  sur  44
Les Microcontrôleurs
16f877
1
2
Objectifs
Le but de ce module est de :
• Comprendre l’architecture des microcontrôleurs.
• Développer des programmes en Assembleur et en langage C
et les tester sur des simulateurs et des maquettes.
Ferchichi M.© ESTI 2012 -2013 3
Programme du module
Introduction
Architecture et fonctionnement des PIC 16F877
Le jeu d’instructions
Les modes d’adressage
Les interruptions
Le TIMER
Le WATCHDOG
Généralités sur les microcontrôleur
Un microcontrôleur PIC (Peripheral Interface Controller) est un composant
électronique Autonome doté :
• d’un microprocesseur,
• de la mémoire RAM,
• des interfaces d’E/S //, série (RS232,I2C …)
• des interfaces d’E/S analogique
• des Timers pour gérer le temps
• d’autres modules , …, selon la taille des μC
• Il est généralement moins puissant qu’un microprocesseur en terme de
rapidité (nbre d’insctructions/seconde) et de taille mémoire, il se contente le
plus souvent d’un bus 8 ou 16 bits.
•  Un composant très bon marché parfaitement adapté pour piloter les
applications embarquées dans de nombreux domaines d’application.
4
Généralités sur les microcontrôleurs
Aujourd’hui il y’a un μC dans chaque équipement électronique :
• Informatique (souris, modem …)
• Vidéo (Appareil photos numérique, caméra numérique …)
• Contrôle des processus industriels (régulation, pilotage)
• Appareil de mesure (affichage, calcul statistique, mémorisation)
• Automobile (ABS, injection, GPS, airbag)
• Multimédia (téléviseur, carte audio, carte vidéo, MP3,
magnétoscope)
• Téléphones (fax, portable, modem)
• Electroménager (lave-vaisselle, lave-linge, four micro-onde)
5
Généralités
• Un microcontrôleur peut être programmé une fois
pour toutes afin qu'il effectue une ou des tâches
précises au sein d'un appareil électronique. Mais les
μC récents peuvent être reprogrammés et ceci grâce à
leur mémoire permanente de type FLASH (d’où le
terme flasher quelque chose).
• Plusieurs Constructeurs se partagent le marché des
microcontrôleurs: INTEL, MOTOROLA, AMTEL,
ZILOG, PHILIPS et enfin MICROCHIP avec ses PICs
très populaires qui nous intéresse ici dans ce cours.
6
Généralités
• Les microcontrôleurs, quelque soit leurs constructeurs, ont des
architectures très similaires et sont constitués de modules
fondamentaux assurant les mêmes fonctions : UAL, Ports d’E/S,
interfaces de communications série, Interfaces d’E/S analogiques,
Timers et horloge.
• Seul le langage de programmation (Assembleur) constitue la
différence majeure entre deux microcontrôleur (similaires) venant de
deux constructeurs différents.
• Dans ce cours nous allons apprendre les microcontrôleurs à travers
une étude détaillée des microcontrôleur 16F87x (x=3, 4, 6, 7) qui
appartiennent à la famille mid-range qui est la famille « moyenne
puissance » de Microchip (MC).
7
Généralités
• Les PICs sont des microcontrôleurs à architecture RISC
(Reduce Instructions Construction Set), ou encore composant
à jeu d’instructions réduit.
• Rréduction du nombre d’instructions  décodage plus
rapide  augmentation de la vitesse de fonctionnement du
microcontrôleur.
• La famille des PICs est subdivisée en 3 grandes familles :
1. La famille Base-Line, qui utilise des mots d’instructions de
12 bits.
2. La famille Mid-Range, qui utilise des mots de 14 bits.
3. La famille High-End, qui utilise des mots de 16 bits.
8
Généralités
• Les PICs sont des composants STATIQUES, Ils peuvent
fonctionner avec des fréquences d’horloge allant du
continu jusqu’à une fréquence max spécifique à chaque
circuit. Un PIC16F876-04 peut fonctionner avec une
horloge allant du continu jusqu’à 4 MHz.
• Nous nous limiterons à la famille Mid-Range
(particulièrement le PIC 16F876/877).
9
Identification des PICs
• Un PIC est généralement identifié par une référence de la forme
suivante : xx(L)XXyy-zz
xx : famille du composant : 12, 14, 16, 17 et 18.
L : tolérance plus importante de la plage de tension
XX : type de mémoire programme
C : EPROM ou EEPROM
CR : PROM
F : Flash
yy : Identificateur
zz : vitesse maximale du quartz de pilotage.
exemple : 16 F 877
10
Famille Mide-Range
Flash
Identificateur
Tableaux comparatifs des PICs (Microchip)
11
PIC16F877
12
© ESTI 2012-2013 Ferchichi M. 13
Architecture interne
© ESTI 2012-2013 Ferchichi M. 14
© ESTI 2012-2013 Ferchichi M. 15
© ESTI 2012-2013 Ferchichi M. 16
© ESTI 2012-2013 Ferchichi M. 17
Les éléments essentiels du PIC 16F877
• Une mémoire programme de type Flash de 8K mots de 14 bits,
• Une RAM donnée de 368 octets,
• Cinq ports d'entrée sortie, A (6 bits), B (8 bits), C (8 bits), D (8 bits) et E (3 bits).
• Convertisseur Analogiques 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,
• Tension de fonctionnement de 2 à 5V
• 13 sources d'interruption,
• Protection de code,
• Jeux de 35 instructions
18© ESTI 2012-2013 Ferchichi M.
Les éléments de base du PIC 16F876/877
• 1. L'Horloge: L'horloge peut être soit interne soit
externe. L'horloge interne est constituée d'un oscillateur à
quartz ou d'un oscillateur RC.
• Avec l'oscillateur à Quartz, on peut avoir des fréquences
allant jusqu'à 20 MHz selon le type du μC.
19
Oscillateur
à Quartz
Les éléments de base du PIC 16F876/877
• Avec un oscillateur RC, la fréquence de l'oscillation est fixée par
Vdd, Rext et Cext. Elle peut varier légèrement d'un circuit à l'autre.
• Dans certains cas, une horloge externe au microcontrôleur peut
être utilisée pour synchroniser le PIC sur un processus particulier.
20
Oscillateur RC
Horloge
• Quelque soit l'oscillateur utilisé, l'horloge
système dite aussi horloge instruction est
obtenue en divisant la fréquence de l’horloge
par 4.
• Dans la suite de ce document on utilisera le
terme Fosc/4 pour désigner l'horloge système.
• Avec un quartz de 4 MHz, on obtient une
horloge instruction de 1 MHz, soit le temps
pour exécuter une instruction de 1μs.
21
2. L'ALU et l’accumulateur W
• L’ALU est une Unité Arithmétique et logique 8 Bits qui réalise
les opérations arithmétiques et logique de base. L’accumulateur
W (registre Work) est un registre de travail 8 bits, toutes les
opérations à deux opérandes passe par lui.
• On peut avoir :
- Une instruction sur un seul opérande qui est en général un
registre situé dans la RAM
- Une instruction sur 2 opérandes. Dans ce cas, l’un des deux
opérandes est toujours l’accumulateur W, l’autre peut être soit
un registre soit une constante.
• Pour les instructions dont un des opérandes est un registre, le
résultat peut être récupéré soit dans l’accumulateur, soit dans le
registre lui-même.
22
3. Organisation de la mémoire RAM
• L’espace mémoire RAM adressable est de 512 positions
de 1 octet chacune:
• 96 positions sont réservées au SFR (Special Function
Registers) qui sont les registres de configuration du PIC.
• Les 416 positions restantes constituent les registres GPR
(General Propose Registers) ou RAM utilisateur. Sur le
16F876 et 16F877, 3 blocs de 16 octets chacun ne sont pas
implantés physiquement d’où une capacité de RAM
utilisateur de 368 GPR.
• Pour accéder à la RAM, on dispose de deux modes
d’adressage : adressage directe et adressage Indirecte
23
3.1. Accès à la RAM par adressage DIRECT
• Avec ce mode d’adressage, on précise dans l’instruction la valeur de
l’adresse à laquelle on veut accéder. Par exemple, pour copier le contenu
de l'accumulateur W dans la case mémoire d'adresse 50, on utilise
l'instruction MOVWF 50 (move from W to Folder d’adresse 50h).
• Cette instruction sera codée sur 14 bits, la partie adresse est codée sur
7 bits ce qui va poser quelques petits problèmes: En effet, 7 bits
permettent d’adresser seulement 128 positions (27). Pour pouvoir
adresser les 512 positions accessibles, il faut 9 bits d’adresse.
• Pour avoir ces 9 bits, le PIC complète les 7 bits venant de l’instruction
par deux bits situés dans le registre de configuration STATUS. Ces bits
sont appelés RP0 et RP1 et doivent être positionnés correctement avant
toute instruction qui accède à la RAM par l’adressage direct.
24
© ESTI 2012-2013 Ferchichi M. 25
Détail des registres de configuration (appartenant aux registres
SFR) et leurs états au démarrage (ou après un RESET)
Accès à la RAM par adressage DIRECT
• La RAM est organisée donc en 4 banks de 128 octets chacun.
• L'adresse instruction permet d'adresser à l'intérieur d'un bank
alors que les bits RP0 et RP1 du registre STATUS permettent de
choisir un bank. Les zones hachurées ne sont pas implantées
physiquement. Si on essaye d’y accéder, on est aiguillé automatiquement
vers la zone [70h,7Fh] appelée zone commune.
© ESTI 2012-2013 Ferchichi M. 26
Organisation
de la RAM du
PIC 16F877
Accès à la RAM par adressage DIRECT
• Même si on précise une adresse supérieure à 127 (+ de 7 bits) dans une
instruction, elle est tronquée à 7 bits puis complétée par les bits RP0 et RP1
pour former une adresse 9 bits.
• Par exemple, pour copier l’accumulateur W dans la case mémoire
d’adresse 1EFh, il faut d’abord placer les bits RP0 et RP1 à 1 (bank 3),
ensuite on utilise soit l’instruction MOVWF 6Fh soit directement
l’instruction MOVWF 1EFh, qui donne le même résultat.
• En effet, que l’on écrive 6Fh = 0110 1111 ou 1EFh = 0001 1110 1111, le PIC
ne prend que 7 bits soit : 1101111 = 6Fh et complète avec les bits RP1,RP0
pour obtenir 11 1101111 = 1EFh
• Nous allons anticiper un peu et présenter les instructions bcf et bsf qui
permettent de positionner un bit à 0 ou à 1
• bcf STATUS,RP0 ; place le bit RP0 à 0
• bsf STATUS,RP1 ; place le bit RP1 à 1 27
3.2. Accès à la RAM par l’adressage INDIRECT
• Pour accéder à une position de la RAM en utilisant
l’adressage indirect, on passe toujours par une
position fictive appelée INDF.
• Exemple : l’instruction CLRF INDF signifie : mettre à
zéro la case mémoire d’adresse INDF. Mais quelle est
l’adresse de cette position appelée INDF ?
• INDF est un registre pointeur de case mémoire, cela
signifie que si on place 74h dans ce registre et ensuite
on exécute l’instruction CLRF INDF, cela va remettre
à zéro la case mémoire d’adresse 74h.
28
Accès à la RAM par l’adressage INDIRECT
• Ceci n’est pas tout à fait complet car
(comme pour l’adressage direct) on va
avoir un problème de capacité
d’adressage.
• En effet, comme tous les registres, le
registre de pointage est un registre 8 bits,
il peut donc adresser au maximum 256
positions mémoire (de 00h à FFh), c’est
seulement la moitié de la RAM dont on
dispose.
• Il nous manque un bit pour avoir les 9
bits nécessaires. On utilise le bit IRP qui
se trouve dans le registre STATUS.
29
30
Registres SFR et leurs positions dans la RAM
Accès à la RAM par l’adressage INDIRECT
• Chaque fois que le PIC rencontre le mot INDF dans un
programme, il sait qu’il s’agit de la case mémoire d’adresse (9
bits) dont les 8 premiers bits se trouvent dans le registre
INDF doivent être complété par le bit IRP du registre
STATUS (voir diapo 38).
© ESTI 2012-2013 Ferchichi M. 31
4. Les instructions du 16F876/877
• Tous les PICs Mid-Range ont un jeu de 35 instructions, Chaque
instruction est codée sur un mot de 14 bits qui contient le code
opération (OC) ainsi que l'opérande.
• Toutes les instructions sont exécutées en un cycle d'horloge, à part
les instructions de saut qui sont exécutées en 2 cycles d’horloge.
• Sachant que l’horloge système est égale à fosc/4, si on utilise un
quartz de 4MHz, on obtient une horloge fosc/4 = 1000000
cycles/seconde, cela nous donne une puissance de l’ordre de
1MIPS (1 Million d’ Instructions Par Seconde).
• Avec un quartz de 20MHz, on obtient une vitesse de traitement de
5 MIPS.
32
4.2. Les instructions « orientées Registres»
• Ce sont des instructions qui manipulent un octet se trouvant dans la RAM. Ça peut
être un registre de configuration SFR ou une case mémoire quelconque (Registre
GPR).
• Dans le tableau F représente l’adresse d’un registre et d est la destination du résultat de l’instruction.
33
Exemple
ADDWF 70h,1 ou ADDWF 70h,f
Signifie : additionner le contenu de W avec le contenu
de la case mémoire d’adresse 70h et placer le résultat
dans la case mémoire 70h
XORWF 35h,0 ou XORWF 35h,w
Signifie : faire un ou exclusif entre W et le contenu de
la case mémoire d’adresse 35h et placer le résultat
dans l’accumulateur W
34
Suite les instructions agissants sur registres
• Les instruction MOVWF et MOVF ce sont
les instructions les plus utilisées,
• MOVWF permet de copier l’accumulateur
W dans un registre (SFR ou GPR):
• MOVWF STATUS ; signifie : Copier le
contenu de W dans le registre STATUS
• MOVWF 55h ; signifie : Copier le contenu
de W dans la case mémoire d’adresse 55h
35
Suite les instructions agissants sur registres
• MOVF permet de copier le contenu d’un registre
(SFR ou GPR) dans l’accumulateur W, le paramètre
d doit être = 0
• MOVF STATUS,0 ; Copier le contenu du registre
STATUS dans l’accumulateur W
• MOVF 35h,0 ; Copier le contenu de la case mémoire
d’adresse 35h dans l’accumulateur W
• Avec le paramètre d=1, l’instruction MOVF semble
inutile car elle permet de copier un registre sur lui-
même ce qui à priori ne sert à rien.
• MOVF STATUS,1 ; Copier le contenu du registre
STATUS dans lui même
• En réalité cette instruction peut s’avérer utile car,
comme elle positionne l’indicateur Z, elle permet de
tester si le contenu d’un registre est égal à zéro
36
Suite les instructions agissants sur registres
• L’instruction goto : Permet de transférer l’exécution à une autre
position du programme repérée par une étiquette (label)
• Exemple:
Instruction 1
Instruction 2
Goto bonjour
instruction 3
instruction 4
instruction 5
bonjour instruction 6
instruction 7
37
4.3. Les paramètres des instructions agissant sur bit
• Pour les instructions agissant sur un bit, le paramètre F indique le registre qui
contient le bit à modifier et le paramètre b indique le numéro du bit à modifier; on
compte à partir de zéro en commençant à droite :
• Exemple:
BSF STATUS,2 ; signifie : placer à 1 le bit 2 (3ème bit à partir de la droite) du
registre STATUS
BCF 45h,6 ; signifie : placer à 0 le bit 6 (7ème bit à partir de la droite) du
registre de la case mémoire d’adresse 45h
38
Suite
• Les instructions btfss et btfsc : ces instructions permettent de tester un bit et de
sauter ou non une ligne de programme en fonction de la valeur du bit.
• btfsc F,b : bit test skip if clear : teste le bit b du registre F et saute l’instruction
suivante si le bit testé est nul.
• btfss F,b : bit test skip if set : teste le bit b du registre F et saute l’instruction suivante
si le bit testé est égal à 1.
• exemple :
sublw 100 ; 100 – W  W
btfss STATUS,Z ; tester le bit Z du registre STATUS et sauter une ligne si Z=1
clrf 70h ; après btfss, le programme continue ici si Z=0
cmpf 70h,f ; après btfss, le programme continue ici si Z=1
suite du programme
suite du programme
…
39
Autres Instructions
• Dans les deux tableaux ci-dessous k représente une constante et L une fonction.
40
Différence entre Call et Goto
• L’instruction call permet d’appeler une
fonction. Une fonction est un sous
programme écrit à la suite du
programme principal. Sa première ligne
doit comporter une étiquette et elle doit
se terminer par return
• La différence en call et goto est que,
quant le processeur rencontre
l’instruction call, il sauvegarde l’adresse
de la ligne suivante avant d’aller exécuter
les instructions constituant la fonction.
• Comme ça, quand il rencontre
l’instruction return, il sait où il doit
retourner pour continuer l’exécution du
programme principal.
41
Synthèse
Les étapes de développement
42
6. Les étapes de développement
• Les étapes nécessaires permettant de voir un programme s'exécuter
sur un PIC sont :
1. Ecrire un programme en langage assembleur dans un fichier texte et
le sauvegarder avec l'extension .asm
2. Compiler ce programme avec l'assembleur MPASM fourni par
Microchip. Le résultat est un fichier exécutable avec l'extension .hex
contenant une suite d'instruction compréhensible par le pic.
3. Transplanter le fichier .hex dans la mémoire programme du PIC
(mémoire flash) à l'aide d'un programmateur adéquat. On peut utiliser
les programmateurs de Microchip ou tout autre programmateur
acheté ou réalisé par soit même.
4. Mettre le PIC dans son montage final puis mettre sous tension.
43
Microchip propose gratuitement l'outil de développement MPLAB qui regroupe
l'éditeur de texte, le compilateur MPASM, un outil de simulation et le logiciel de
programmation. Le programmateur lui-même, n'est malheureusement pas
gratuit.
pour implanter les programmes dans la mémoire flash du PIC, nous pouvons
utiliser un programmateur fait maison piloter par le logiciel ICPROG (Free)
44
6. Les étapes de développement

Contenu connexe

Tendances

Microcontroleur Pic16 F84
Microcontroleur Pic16 F84Microcontroleur Pic16 F84
Microcontroleur Pic16 F84guest1e7b02
 
Supervision industrielle www.automate pro.blogspot.com
Supervision industrielle www.automate pro.blogspot.comSupervision industrielle www.automate pro.blogspot.com
Supervision industrielle www.automate pro.blogspot.comAdnane Ahmidani
 
Le microprocesseur
Le microprocesseurLe microprocesseur
Le microprocesseurISIG
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1SinGuy
 
Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2Mohammed Lamghari
 
Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86Sana Aroussi
 
Câblage Entrées / Sorties Automate programmable
Câblage Entrées / Sorties Automate programmable Câblage Entrées / Sorties Automate programmable
Câblage Entrées / Sorties Automate programmable morin moli
 
introduction automatisme industriel
introduction automatisme industrielintroduction automatisme industriel
introduction automatisme industrielAdnane Ahmidani
 
Conception avec pic
Conception avec pic Conception avec pic
Conception avec pic nawzat
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Hajer Dahech
 
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésProgrammation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésECAM Brussels Engineering School
 
API et Supervision industrielle
API et Supervision industrielle API et Supervision industrielle
API et Supervision industrielle sarah Benmerzouk
 
Instrumentation et régulation
Instrumentation et régulationInstrumentation et régulation
Instrumentation et régulationPierre Maréchal
 
STM32 F4 (PWM,SPI And ADC Test Examples)
STM32 F4 (PWM,SPI And ADC Test Examples)STM32 F4 (PWM,SPI And ADC Test Examples)
STM32 F4 (PWM,SPI And ADC Test Examples)Aymen Lachkhem
 

Tendances (20)

Microcontroleur Pic16 F84
Microcontroleur Pic16 F84Microcontroleur Pic16 F84
Microcontroleur Pic16 F84
 
Supervision industrielle www.automate pro.blogspot.com
Supervision industrielle www.automate pro.blogspot.comSupervision industrielle www.automate pro.blogspot.com
Supervision industrielle www.automate pro.blogspot.com
 
Microcontrôleur
MicrocontrôleurMicrocontrôleur
Microcontrôleur
 
Le microprocesseur
Le microprocesseurLe microprocesseur
Le microprocesseur
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1
 
States machines (1)
States machines (1)States machines (1)
States machines (1)
 
Pic 16 f84
Pic 16 f84Pic 16 f84
Pic 16 f84
 
Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2
 
Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86
 
Câblage Entrées / Sorties Automate programmable
Câblage Entrées / Sorties Automate programmable Câblage Entrées / Sorties Automate programmable
Câblage Entrées / Sorties Automate programmable
 
introduction automatisme industriel
introduction automatisme industrielintroduction automatisme industriel
introduction automatisme industriel
 
Conception avec pic
Conception avec pic Conception avec pic
Conception avec pic
 
Mcc
MccMcc
Mcc
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32
 
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarquésProgrammation de systèmes embarqués : Introduction aux systèmes embarqués
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
 
API et Supervision industrielle
API et Supervision industrielle API et Supervision industrielle
API et Supervision industrielle
 
Microcontroleurs
MicrocontroleursMicrocontroleurs
Microcontroleurs
 
Série révision. 2
Série révision. 2Série révision. 2
Série révision. 2
 
Instrumentation et régulation
Instrumentation et régulationInstrumentation et régulation
Instrumentation et régulation
 
STM32 F4 (PWM,SPI And ADC Test Examples)
STM32 F4 (PWM,SPI And ADC Test Examples)STM32 F4 (PWM,SPI And ADC Test Examples)
STM32 F4 (PWM,SPI And ADC Test Examples)
 

Similaire à Pic 16f877 ..

Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Karim Touati
 
Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655Abdo Brahmi
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).pptAbdo Brahmi
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).pptAbdo Brahmi
 
Cours de PIC Généralités.pdf
Cours de PIC Généralités.pdfCours de PIC Généralités.pdf
Cours de PIC Généralités.pdfAliRami3
 
Cours Systemes embarques.pptx
Cours Systemes embarques.pptxCours Systemes embarques.pptx
Cours Systemes embarques.pptxSihemNasri3
 
Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfHouBou3
 
pic16f84-200306072553.pdf
pic16f84-200306072553.pdfpic16f84-200306072553.pdf
pic16f84-200306072553.pdfAbdo Brahmi
 
Généralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasicGénéralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasicmorin moli
 
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDmohamedsaidi212001
 
Composants reconfigurables
Composants reconfigurablesComposants reconfigurables
Composants reconfigurablesPeronnin Eric
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le MicroprocesseurTheCrazyMan
 
Les Microcontrôleurs 68HCXX.ppt
Les Microcontrôleurs 68HCXX.pptLes Microcontrôleurs 68HCXX.ppt
Les Microcontrôleurs 68HCXX.pptwafawafa52
 
Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------NasriMohsen2
 
Fpga handout
Fpga handoutFpga handout
Fpga handoutassnad
 
Chap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfChap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfDAPcreat
 
Chapitre 05 architecture microprocesseur (2).pptx
Chapitre 05 architecture microprocesseur (2).pptxChapitre 05 architecture microprocesseur (2).pptx
Chapitre 05 architecture microprocesseur (2).pptxFazaTabbana1
 

Similaire à Pic 16f877 .. (20)

Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)
 
Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
 
Cours de PIC Généralités.pdf
Cours de PIC Généralités.pdfCours de PIC Généralités.pdf
Cours de PIC Généralités.pdf
 
Cours Systemes embarques.pptx
Cours Systemes embarques.pptxCours Systemes embarques.pptx
Cours Systemes embarques.pptx
 
Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdf
 
pic16f84-200306072553.pdf
pic16f84-200306072553.pdfpic16f84-200306072553.pdf
pic16f84-200306072553.pdf
 
Généralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasicGénéralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasic
 
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
 
Composants reconfigurables
Composants reconfigurablesComposants reconfigurables
Composants reconfigurables
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
 
Mini projet 3t2i se
Mini projet 3t2i seMini projet 3t2i se
Mini projet 3t2i se
 
Les Microcontrôleurs 68HCXX.ppt
Les Microcontrôleurs 68HCXX.pptLes Microcontrôleurs 68HCXX.ppt
Les Microcontrôleurs 68HCXX.ppt
 
Assembleur
AssembleurAssembleur
Assembleur
 
Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------
 
Fpga handout
Fpga handoutFpga handout
Fpga handout
 
003404788(1).pptx
003404788(1).pptx003404788(1).pptx
003404788(1).pptx
 
Chap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfChap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdf
 
Chapitre 05 architecture microprocesseur (2).pptx
Chapitre 05 architecture microprocesseur (2).pptxChapitre 05 architecture microprocesseur (2).pptx
Chapitre 05 architecture microprocesseur (2).pptx
 

Pic 16f877 ..

  • 2. 2 Objectifs Le but de ce module est de : • Comprendre l’architecture des microcontrôleurs. • Développer des programmes en Assembleur et en langage C et les tester sur des simulateurs et des maquettes.
  • 3. Ferchichi M.© ESTI 2012 -2013 3 Programme du module Introduction Architecture et fonctionnement des PIC 16F877 Le jeu d’instructions Les modes d’adressage Les interruptions Le TIMER Le WATCHDOG
  • 4. Généralités sur les microcontrôleur Un microcontrôleur PIC (Peripheral Interface Controller) est un composant électronique Autonome doté : • d’un microprocesseur, • de la mémoire RAM, • des interfaces d’E/S //, série (RS232,I2C …) • des interfaces d’E/S analogique • des Timers pour gérer le temps • d’autres modules , …, selon la taille des μC • Il est généralement moins puissant qu’un microprocesseur en terme de rapidité (nbre d’insctructions/seconde) et de taille mémoire, il se contente le plus souvent d’un bus 8 ou 16 bits. •  Un composant très bon marché parfaitement adapté pour piloter les applications embarquées dans de nombreux domaines d’application. 4
  • 5. Généralités sur les microcontrôleurs Aujourd’hui il y’a un μC dans chaque équipement électronique : • Informatique (souris, modem …) • Vidéo (Appareil photos numérique, caméra numérique …) • Contrôle des processus industriels (régulation, pilotage) • Appareil de mesure (affichage, calcul statistique, mémorisation) • Automobile (ABS, injection, GPS, airbag) • Multimédia (téléviseur, carte audio, carte vidéo, MP3, magnétoscope) • Téléphones (fax, portable, modem) • Electroménager (lave-vaisselle, lave-linge, four micro-onde) 5
  • 6. Généralités • Un microcontrôleur peut être programmé une fois pour toutes afin qu'il effectue une ou des tâches précises au sein d'un appareil électronique. Mais les μC récents peuvent être reprogrammés et ceci grâce à leur mémoire permanente de type FLASH (d’où le terme flasher quelque chose). • Plusieurs Constructeurs se partagent le marché des microcontrôleurs: INTEL, MOTOROLA, AMTEL, ZILOG, PHILIPS et enfin MICROCHIP avec ses PICs très populaires qui nous intéresse ici dans ce cours. 6
  • 7. Généralités • Les microcontrôleurs, quelque soit leurs constructeurs, ont des architectures très similaires et sont constitués de modules fondamentaux assurant les mêmes fonctions : UAL, Ports d’E/S, interfaces de communications série, Interfaces d’E/S analogiques, Timers et horloge. • Seul le langage de programmation (Assembleur) constitue la différence majeure entre deux microcontrôleur (similaires) venant de deux constructeurs différents. • Dans ce cours nous allons apprendre les microcontrôleurs à travers une étude détaillée des microcontrôleur 16F87x (x=3, 4, 6, 7) qui appartiennent à la famille mid-range qui est la famille « moyenne puissance » de Microchip (MC). 7
  • 8. Généralités • Les PICs sont des microcontrôleurs à architecture RISC (Reduce Instructions Construction Set), ou encore composant à jeu d’instructions réduit. • Rréduction du nombre d’instructions  décodage plus rapide  augmentation de la vitesse de fonctionnement du microcontrôleur. • La famille des PICs est subdivisée en 3 grandes familles : 1. La famille Base-Line, qui utilise des mots d’instructions de 12 bits. 2. La famille Mid-Range, qui utilise des mots de 14 bits. 3. La famille High-End, qui utilise des mots de 16 bits. 8
  • 9. Généralités • Les PICs sont des composants STATIQUES, Ils peuvent fonctionner avec des fréquences d’horloge allant du continu jusqu’à une fréquence max spécifique à chaque circuit. Un PIC16F876-04 peut fonctionner avec une horloge allant du continu jusqu’à 4 MHz. • Nous nous limiterons à la famille Mid-Range (particulièrement le PIC 16F876/877). 9
  • 10. Identification des PICs • Un PIC est généralement identifié par une référence de la forme suivante : xx(L)XXyy-zz xx : famille du composant : 12, 14, 16, 17 et 18. L : tolérance plus importante de la plage de tension XX : type de mémoire programme C : EPROM ou EEPROM CR : PROM F : Flash yy : Identificateur zz : vitesse maximale du quartz de pilotage. exemple : 16 F 877 10 Famille Mide-Range Flash Identificateur
  • 11. Tableaux comparatifs des PICs (Microchip) 11
  • 13. © ESTI 2012-2013 Ferchichi M. 13 Architecture interne
  • 14. © ESTI 2012-2013 Ferchichi M. 14
  • 15. © ESTI 2012-2013 Ferchichi M. 15
  • 16. © ESTI 2012-2013 Ferchichi M. 16
  • 17. © ESTI 2012-2013 Ferchichi M. 17
  • 18. Les éléments essentiels du PIC 16F877 • Une mémoire programme de type Flash de 8K mots de 14 bits, • Une RAM donnée de 368 octets, • Cinq ports d'entrée sortie, A (6 bits), B (8 bits), C (8 bits), D (8 bits) et E (3 bits). • Convertisseur Analogiques 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, • Tension de fonctionnement de 2 à 5V • 13 sources d'interruption, • Protection de code, • Jeux de 35 instructions 18© ESTI 2012-2013 Ferchichi M.
  • 19. Les éléments de base du PIC 16F876/877 • 1. L'Horloge: L'horloge peut être soit interne soit externe. L'horloge interne est constituée d'un oscillateur à quartz ou d'un oscillateur RC. • Avec l'oscillateur à Quartz, on peut avoir des fréquences allant jusqu'à 20 MHz selon le type du μC. 19 Oscillateur à Quartz
  • 20. Les éléments de base du PIC 16F876/877 • Avec un oscillateur RC, la fréquence de l'oscillation est fixée par Vdd, Rext et Cext. Elle peut varier légèrement d'un circuit à l'autre. • Dans certains cas, une horloge externe au microcontrôleur peut être utilisée pour synchroniser le PIC sur un processus particulier. 20 Oscillateur RC
  • 21. Horloge • Quelque soit l'oscillateur utilisé, l'horloge système dite aussi horloge instruction est obtenue en divisant la fréquence de l’horloge par 4. • Dans la suite de ce document on utilisera le terme Fosc/4 pour désigner l'horloge système. • Avec un quartz de 4 MHz, on obtient une horloge instruction de 1 MHz, soit le temps pour exécuter une instruction de 1μs. 21
  • 22. 2. L'ALU et l’accumulateur W • L’ALU est une Unité Arithmétique et logique 8 Bits qui réalise les opérations arithmétiques et logique de base. L’accumulateur W (registre Work) est un registre de travail 8 bits, toutes les opérations à deux opérandes passe par lui. • On peut avoir : - Une instruction sur un seul opérande qui est en général un registre situé dans la RAM - Une instruction sur 2 opérandes. Dans ce cas, l’un des deux opérandes est toujours l’accumulateur W, l’autre peut être soit un registre soit une constante. • Pour les instructions dont un des opérandes est un registre, le résultat peut être récupéré soit dans l’accumulateur, soit dans le registre lui-même. 22
  • 23. 3. Organisation de la mémoire RAM • L’espace mémoire RAM adressable est de 512 positions de 1 octet chacune: • 96 positions sont réservées au SFR (Special Function Registers) qui sont les registres de configuration du PIC. • Les 416 positions restantes constituent les registres GPR (General Propose Registers) ou RAM utilisateur. Sur le 16F876 et 16F877, 3 blocs de 16 octets chacun ne sont pas implantés physiquement d’où une capacité de RAM utilisateur de 368 GPR. • Pour accéder à la RAM, on dispose de deux modes d’adressage : adressage directe et adressage Indirecte 23
  • 24. 3.1. Accès à la RAM par adressage DIRECT • Avec ce mode d’adressage, on précise dans l’instruction la valeur de l’adresse à laquelle on veut accéder. Par exemple, pour copier le contenu de l'accumulateur W dans la case mémoire d'adresse 50, on utilise l'instruction MOVWF 50 (move from W to Folder d’adresse 50h). • Cette instruction sera codée sur 14 bits, la partie adresse est codée sur 7 bits ce qui va poser quelques petits problèmes: En effet, 7 bits permettent d’adresser seulement 128 positions (27). Pour pouvoir adresser les 512 positions accessibles, il faut 9 bits d’adresse. • Pour avoir ces 9 bits, le PIC complète les 7 bits venant de l’instruction par deux bits situés dans le registre de configuration STATUS. Ces bits sont appelés RP0 et RP1 et doivent être positionnés correctement avant toute instruction qui accède à la RAM par l’adressage direct. 24
  • 25. © ESTI 2012-2013 Ferchichi M. 25 Détail des registres de configuration (appartenant aux registres SFR) et leurs états au démarrage (ou après un RESET)
  • 26. Accès à la RAM par adressage DIRECT • La RAM est organisée donc en 4 banks de 128 octets chacun. • L'adresse instruction permet d'adresser à l'intérieur d'un bank alors que les bits RP0 et RP1 du registre STATUS permettent de choisir un bank. Les zones hachurées ne sont pas implantées physiquement. Si on essaye d’y accéder, on est aiguillé automatiquement vers la zone [70h,7Fh] appelée zone commune. © ESTI 2012-2013 Ferchichi M. 26 Organisation de la RAM du PIC 16F877
  • 27. Accès à la RAM par adressage DIRECT • Même si on précise une adresse supérieure à 127 (+ de 7 bits) dans une instruction, elle est tronquée à 7 bits puis complétée par les bits RP0 et RP1 pour former une adresse 9 bits. • Par exemple, pour copier l’accumulateur W dans la case mémoire d’adresse 1EFh, il faut d’abord placer les bits RP0 et RP1 à 1 (bank 3), ensuite on utilise soit l’instruction MOVWF 6Fh soit directement l’instruction MOVWF 1EFh, qui donne le même résultat. • En effet, que l’on écrive 6Fh = 0110 1111 ou 1EFh = 0001 1110 1111, le PIC ne prend que 7 bits soit : 1101111 = 6Fh et complète avec les bits RP1,RP0 pour obtenir 11 1101111 = 1EFh • Nous allons anticiper un peu et présenter les instructions bcf et bsf qui permettent de positionner un bit à 0 ou à 1 • bcf STATUS,RP0 ; place le bit RP0 à 0 • bsf STATUS,RP1 ; place le bit RP1 à 1 27
  • 28. 3.2. Accès à la RAM par l’adressage INDIRECT • Pour accéder à une position de la RAM en utilisant l’adressage indirect, on passe toujours par une position fictive appelée INDF. • Exemple : l’instruction CLRF INDF signifie : mettre à zéro la case mémoire d’adresse INDF. Mais quelle est l’adresse de cette position appelée INDF ? • INDF est un registre pointeur de case mémoire, cela signifie que si on place 74h dans ce registre et ensuite on exécute l’instruction CLRF INDF, cela va remettre à zéro la case mémoire d’adresse 74h. 28
  • 29. Accès à la RAM par l’adressage INDIRECT • Ceci n’est pas tout à fait complet car (comme pour l’adressage direct) on va avoir un problème de capacité d’adressage. • En effet, comme tous les registres, le registre de pointage est un registre 8 bits, il peut donc adresser au maximum 256 positions mémoire (de 00h à FFh), c’est seulement la moitié de la RAM dont on dispose. • Il nous manque un bit pour avoir les 9 bits nécessaires. On utilise le bit IRP qui se trouve dans le registre STATUS. 29
  • 30. 30 Registres SFR et leurs positions dans la RAM
  • 31. Accès à la RAM par l’adressage INDIRECT • Chaque fois que le PIC rencontre le mot INDF dans un programme, il sait qu’il s’agit de la case mémoire d’adresse (9 bits) dont les 8 premiers bits se trouvent dans le registre INDF doivent être complété par le bit IRP du registre STATUS (voir diapo 38). © ESTI 2012-2013 Ferchichi M. 31
  • 32. 4. Les instructions du 16F876/877 • Tous les PICs Mid-Range ont un jeu de 35 instructions, Chaque instruction est codée sur un mot de 14 bits qui contient le code opération (OC) ainsi que l'opérande. • Toutes les instructions sont exécutées en un cycle d'horloge, à part les instructions de saut qui sont exécutées en 2 cycles d’horloge. • Sachant que l’horloge système est égale à fosc/4, si on utilise un quartz de 4MHz, on obtient une horloge fosc/4 = 1000000 cycles/seconde, cela nous donne une puissance de l’ordre de 1MIPS (1 Million d’ Instructions Par Seconde). • Avec un quartz de 20MHz, on obtient une vitesse de traitement de 5 MIPS. 32
  • 33. 4.2. Les instructions « orientées Registres» • Ce sont des instructions qui manipulent un octet se trouvant dans la RAM. Ça peut être un registre de configuration SFR ou une case mémoire quelconque (Registre GPR). • Dans le tableau F représente l’adresse d’un registre et d est la destination du résultat de l’instruction. 33
  • 34. Exemple ADDWF 70h,1 ou ADDWF 70h,f Signifie : additionner le contenu de W avec le contenu de la case mémoire d’adresse 70h et placer le résultat dans la case mémoire 70h XORWF 35h,0 ou XORWF 35h,w Signifie : faire un ou exclusif entre W et le contenu de la case mémoire d’adresse 35h et placer le résultat dans l’accumulateur W 34
  • 35. Suite les instructions agissants sur registres • Les instruction MOVWF et MOVF ce sont les instructions les plus utilisées, • MOVWF permet de copier l’accumulateur W dans un registre (SFR ou GPR): • MOVWF STATUS ; signifie : Copier le contenu de W dans le registre STATUS • MOVWF 55h ; signifie : Copier le contenu de W dans la case mémoire d’adresse 55h 35
  • 36. Suite les instructions agissants sur registres • MOVF permet de copier le contenu d’un registre (SFR ou GPR) dans l’accumulateur W, le paramètre d doit être = 0 • MOVF STATUS,0 ; Copier le contenu du registre STATUS dans l’accumulateur W • MOVF 35h,0 ; Copier le contenu de la case mémoire d’adresse 35h dans l’accumulateur W • Avec le paramètre d=1, l’instruction MOVF semble inutile car elle permet de copier un registre sur lui- même ce qui à priori ne sert à rien. • MOVF STATUS,1 ; Copier le contenu du registre STATUS dans lui même • En réalité cette instruction peut s’avérer utile car, comme elle positionne l’indicateur Z, elle permet de tester si le contenu d’un registre est égal à zéro 36
  • 37. Suite les instructions agissants sur registres • L’instruction goto : Permet de transférer l’exécution à une autre position du programme repérée par une étiquette (label) • Exemple: Instruction 1 Instruction 2 Goto bonjour instruction 3 instruction 4 instruction 5 bonjour instruction 6 instruction 7 37
  • 38. 4.3. Les paramètres des instructions agissant sur bit • Pour les instructions agissant sur un bit, le paramètre F indique le registre qui contient le bit à modifier et le paramètre b indique le numéro du bit à modifier; on compte à partir de zéro en commençant à droite : • Exemple: BSF STATUS,2 ; signifie : placer à 1 le bit 2 (3ème bit à partir de la droite) du registre STATUS BCF 45h,6 ; signifie : placer à 0 le bit 6 (7ème bit à partir de la droite) du registre de la case mémoire d’adresse 45h 38
  • 39. Suite • Les instructions btfss et btfsc : ces instructions permettent de tester un bit et de sauter ou non une ligne de programme en fonction de la valeur du bit. • btfsc F,b : bit test skip if clear : teste le bit b du registre F et saute l’instruction suivante si le bit testé est nul. • btfss F,b : bit test skip if set : teste le bit b du registre F et saute l’instruction suivante si le bit testé est égal à 1. • exemple : sublw 100 ; 100 – W  W btfss STATUS,Z ; tester le bit Z du registre STATUS et sauter une ligne si Z=1 clrf 70h ; après btfss, le programme continue ici si Z=0 cmpf 70h,f ; après btfss, le programme continue ici si Z=1 suite du programme suite du programme … 39
  • 40. Autres Instructions • Dans les deux tableaux ci-dessous k représente une constante et L une fonction. 40
  • 41. Différence entre Call et Goto • L’instruction call permet d’appeler une fonction. Une fonction est un sous programme écrit à la suite du programme principal. Sa première ligne doit comporter une étiquette et elle doit se terminer par return • La différence en call et goto est que, quant le processeur rencontre l’instruction call, il sauvegarde l’adresse de la ligne suivante avant d’aller exécuter les instructions constituant la fonction. • Comme ça, quand il rencontre l’instruction return, il sait où il doit retourner pour continuer l’exécution du programme principal. 41
  • 42. Synthèse Les étapes de développement 42
  • 43. 6. Les étapes de développement • Les étapes nécessaires permettant de voir un programme s'exécuter sur un PIC sont : 1. Ecrire un programme en langage assembleur dans un fichier texte et le sauvegarder avec l'extension .asm 2. Compiler ce programme avec l'assembleur MPASM fourni par Microchip. Le résultat est un fichier exécutable avec l'extension .hex contenant une suite d'instruction compréhensible par le pic. 3. Transplanter le fichier .hex dans la mémoire programme du PIC (mémoire flash) à l'aide d'un programmateur adéquat. On peut utiliser les programmateurs de Microchip ou tout autre programmateur acheté ou réalisé par soit même. 4. Mettre le PIC dans son montage final puis mettre sous tension. 43
  • 44. Microchip propose gratuitement l'outil de développement MPLAB qui regroupe l'éditeur de texte, le compilateur MPASM, un outil de simulation et le logiciel de programmation. Le programmateur lui-même, n'est malheureusement pas gratuit. pour implanter les programmes dans la mémoire flash du PIC, nous pouvons utiliser un programmateur fait maison piloter par le logiciel ICPROG (Free) 44 6. Les étapes de développement

Notes de l'éditeur

  1. ohohohohoohuhhuuuu