Académique Documents
Professionnel Documents
Culture Documents
➢ 68HC11 de Motorola,
➢ 8051 de Intel,
➢ Les ARM qui sont très utilisés en
électronique embarquée
➢ et les PIC de Microchip.
2
29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir
Architecture Harvard Vs Von Neumann
Employée par la plupart des microcontrôleurs Utilisée par les microcontrôleurs PIC est basée sur
actuels (INTEL80XX, Motorola HC05, HC08 et 2 blocs mémoire distincts et 2 bus différents : 1 bus 8
HC11, ou ZILOG Z80) est basée sur un bus de bits pour communiquer avec la RAM, 1 bus 14 bits
données unique. Celui-ci véhicule les instructions pour communiquer avec la ROM, qui contient le
et les données. programme.
2- Identification
5
29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir
Généralité sur les PIC
2- Identification-Exemple
6
29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir
Généralité sur les PIC
7
29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir
Etude du PIC 16F84
• 1 Ko de ROM,
• 64 octets de RAM,
• 64 octets de EEROM,
• 13 entrées sorties,
• 10 MHz,
• un timer, 4 sources d’interruption
REGISTRE SPECIAUX
0Bh 8Bh
0Ch 8Ch
REGISTRE GENERAUX
RAM
4Fh CFh
t
Cycle n-1 Cycle n Cycle n+1
PC-2 PC-1 PC PC+1 PC+2
EXECUTION INSTPC-2
CHARGEMENT INSTPC-1 EXECUTION INSTPC-1
CHARGEMENT INSTPC EXECUTION INSTPC
CHARGEMENT INSTPC+1
Sur un cycle machine :
•Incrémentation du registre PC. REMARQUE
•Exécution de l’instruction qui était
Pour une horloge de 4 MHz, on aura donc une
pointée par le registre PC au cours du période de 0,25s donc le cycle aura une
cycle précédent. durée de 1s.
•Chargement de l’instruction dans La majorité des instructions s’exécutent sur
un cycle machine soit 4 périodes.
l’adresse pointée par le registre PC.
On fait une opération bit à bit entre 000F et 3FF7 et 3FFB et 3FFE :
_CONFIG = 1111111111100
Family ROM RAM Pins Clock Freq. A/D Inputs Resolution of A/D Comp- 8/16 – bit Timers Serial Comm. PWM Others
[Kbytes] [bytes] [MHz] Converter arators Output s
Base-Line 8 - bit architecture, 12-bit Instruction Word Length
PIC10FXXX 0.375 - 0.75 16 - 24 6-8 4-8 0 -2 8 0-1 1x8 - - -
Sachant que l’horloge fournie au PIC est pré-divisée par 4, si on utilise par exemple un quartz de 4MHz, on
obtient donc 100 0000 cycles/seconde, cela nous donne une puissance de l’ordre de 1MIPS (1 Million d’
Instructions par Seconde).
Avec une horloge de 20MHz, on obtient une vitesse de traitement plus qu’honorable.
•Adressage immédiat :
Ex: MOVLW k
Le littéral k (1 octet) est placé dans le registre de travail W.
k→W
•Adressage direct :
Ex: ADDWF f, d
Le contenu du registre W est ajouté au contenu du registre f.
Si d = 0 le résultat est placé dans W.
Si d = 1 le résultat est placé dans f.
Si d = 0 W+f → W
Si d = 1 W+f → f
Ex: BCF f, b
Le bit b du registre f est placé à zéro (Bit Clear).
0 → bit b de f
•Adressage indirect ( peu utilisé)
ADDWF f,d Additionner le contenu des registres W et f. La somme est stockée suivant "d" C est mis à 1 s'il y a une retenue
si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f DC est mis à 1si la somme des quatre
bits de poids faible est > 15
Z est mis à 1 si le résultat est nul
SUBLW k Soustraire la valeur immédiate "k" au contenu du registre W. C est mis à 1 s'il y a une retenue
La somme est stockée dans W DC est mis à 1si la somme des quatre
bits de poids faible est > 15
Z est mis à 1 si le résultat est nul
SUBWF f,d Soustraire le contenu du registre f du contenu du registre W. C est mis à 1 s'il y a une retenue
La somme est stockée suivant "d" DC est mis à 1si la somme des quatre
bits de poids faible est > 15
si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f Z est mis à 1 si le résultat est nul
ANDLW k "ET" bit à bit entre le contenu du registre W et la valeur immédiate "k" Z est mis à 1 si le résultat est nul
Le résultat est stockée dans W
ANDWF f,d "ET" bit à bit entre le contenu des registres W et f. Le résultat est stocké suivant "d" Z est mis à 1 si le résultat est nul
si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f
IORLW k "OU" bit à bit entre le contenu du registre W et la valeur immédiate "k" Z est mis à 1 si le résultat est nul
Le résultat est stockée dans W
IORWF f,d "OU" bit à bit entre le contenu des registres W et f. Le résultat est stocké suivant "d" Z est mis à 1 si le résultat est nul
si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f
XORLW k "OU exclusif" bit à bit entre le contenu du registre W et la valeur immédiate "k" Z est mis à 1 si le résultat est nul
Le résultat est stockée dans W
XORWF f,d "OU exclusif" bit à bit entre le contenu des registres W et f. Z est mis à 1 si le résultat est nul
Le résultat est stocké suivant "d"
si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f
DECF f,d Décrémente le contenu du registre f. Le résultat est stocké suivant "d" Z est mis à 1 si le résultat est nul
si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f
INCF f,d Incrémente le contenu du registre f. Le résultat est stocké suivant "d" Z est mis à 1 si le résultat est nul
si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f
RLF f,d Rotation à gauche du contenu du registre f. C est mis à 1 si le bit 7 était à 1
avant rotation
si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f
RRF f,d Rotation à droite du contenu du registre f. C est mis à 1 si le bit 0 était à 1
avant rotation
si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f
SWAPF f,d Échange de quartets entre le contenu du registre f. Le résultat est stocké suivant
"d"
b7b6b5b4 b3b2b1b0 --> b4b3b2b1b0 b7b6b5b4
si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f
BCF f,b Mise à 0 du bit b du registre f
CHARGEMENT DE REGISTRE
Instruction Description Indicateurs affectés
MOVF f,d Copier le contenu du registre f dans le registre spécifié suivant "d" Z est mis à 1 si le contenu du registre R est
si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f nul
MOVLW k Charge la valeur immédiate "k" dans le registre W
MOVWF f Charge le contenu du registre W dans le registre f
CLRF f Efface le contenu du registre f Z mis à 1
INSTRUCTIONS SPECIALES
Instructio Description Indicateurs affectés
n
NOP Aucune opération. Cette instruction est utilisé pour passer un cycle machine
SLEEP Mise en veille du microcontrôleur ( Power Down mode ) TO est mis à 1 et PD est mis à 0
Cette
le code commande
0x04 qui suit débutera. permet
; Indique au d’assigner
compilateur l'addresse un nom de début à duun registre
programme en
interruption
Ici
Débutcommence le début Pdu programmedu programmeaprès le reset.
ORG
RAM. Lescar registres généraux de instructions
la RAM commence à
0004h Vecteur d'interruption IT Instruction ; Première instruction d'interruption
Sous Ici
Comme 0x00 il n’y c’est
a qu les
4 premières
adresses
R
disponibles, il après
faut le
rapidement
programme M l’adresse 0x0C.
reset. O
d'interruption E faire un saut
Il faut mettre le nombre : G
d’octets que l’on souhaite associer
si utilisation Suite du programme
M GOTO PPS R
d'interruption
principal O à ce nom. RETIE A d'interruption
PPS est une étiquette qui indique au compilateur où se fait
; Retour
I IlPPSfaut terminer Instructionla ;commande
LigneM parpar «PPSENDC ».
On va trouver ensuite
d'instruction repéré
+ R le saut ORG
M 0x04
les sous-programmes
E C’est l’indication du début E du sous programme d’interruption.
P Ce sous
Puis on peut programme
trouverse termine
ensuite soit par unl’instruction
sous programme RETIE ou qui
le
veut dire retour d’interruption et permet de revenir à
Suite du
programme R
programme principal.
principal O
G
l’endroit
Ici on va avant retrouver interruption.
le programme principal identifiez par
+ R 03FFh l’étiquette PPS
les sous- A
programmes M
M
E END Instruction
; Indiqué au compilateur la fin du programme
29/12/2021 03FFh
Programmation des microcontrôleurs PIC ENSA -Agadir 30
Application
On désire commander une Led branchée sur le portA à la broche RA0 avec un interrupteur branché sur le port B à
la broche RB0.
; Configuration
LIST p=16F84 ; Processeur 16F84A
#INCLUDE <p16F84A.inc> ; Définition des registre internes du 16F84
__CONFIG _CP_OFF & _WDT_OFF & _HS_OSC ; Option de programmation
; Vecteurs
ORG 0x00 ; Déclaration du Reset
GOTO Start
; Programme principal
END
34
29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir
Programmation
• L’entreprise Microchip a le portail web www.microchip.com où on peut télécharger des informations et des
applications logicielles qui facilitent le développement avec ses microcontrôleurs.
• Le développement d’une application à base de microcontrôleur PIC consiste à identifier les problèmes de
développement, éditer, déboguer le programme machine et programmer le microcontrôleur avec un
programmateur spécifique
• PICmicro. Microchip fournit des programmateurs spécialisés dans différentes échelles, peut-être le plus
populaire est le PICSTART plus, mais il y a d'autres comme PICkit2, PICkit3.
• Bien qu'il existe des programmateurs commerciaux, un développeur peut construire ou acheter un programmateur
éducatif à faible coût.
29/12/2021
Programmation