Vous êtes sur la page 1sur 33

Les Microcontrôleurs

Abdelilah KAHAJI : a.kahaji@uiz.ac.ma

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 1


Microprocesseur et Microcontrôleur :

• Il en existe de nombreux modèles :

➢ 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

Architecture Von Neumann Architecture Harvard

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.

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 3


Généralité sur les PIC
1- Trois grandes familles

➢ Base-Line (mots d’instructions de 12 ou 14 bits comme les 12Cxxx, 12Fxxx),


➢ Mid-Range (mots de 14 bits comme le 16F628, 16F877, etc.),
➢ High-End (mots de 16 bits).

2- Identification

Fréquence maximale (MHz)


Famille 10, 12, 16, PIC16 F 877 – 20
17 ou 18

Type de mémoire et alimentation Référence


F : Flash 4,5 à 6 V
C : EERPOM et EPROM 4,5 à 6 V
CR : ROM 4,5 à 6 V
LF : Flash 2 à 6 V
LC : EEPROM ou EPROM 2 à 6 V
LCR : ROM 2 à 6 V

5
29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir
Généralité sur les PIC
2- Identification-Exemple

Prenons l’exemple du PIC : PIC16F877A-I/P., 07514KQ


▪ Les 2 premiers chiffres indiquent la catégorie du PIC : 16 = Mid-Range.
▪ F indique que la mémoire programme est de type FLASH ; on retrouve CR pour ROM (ROM : Read Only
Memory) et C pour EPROM (EPROM : Erasable ROM) ou EEPROM EEPROM : Electrical Erasable ROM).
Remarque :
❖ Un composant qu’on ne peut reprogrammer est appelé OTP pour One Time Programming.
❖ Les mémoires de type FLASH et EEPROM peuvent être écrites et effacées mais pas la ROM.

▪ 877A indique le modèle du PIC.


▪ Parfois, un suffixe supplémentaire comme 20 est indiqué. Il s’agit de la fréquence d’horloge maximale. 20
pour 20 MHz. Les PIC sont des composants statiques, ainsi, on peut abaisser la fréquence d’horloge
jusqu’à l’arrêt complet sans perte de données et sans dysfonctionnement.
▪ I est la gamme de température industrielle (-40 C à +85 C).
▪ P est le type de boîtier PDIP, boîtier 40 broches Plastique DIL (Dual In Line).
▪ 07 est l’année de fabrication 2007 et 51, la semaine 51, donc fin décembre. 4KQ est un code de traçabilité.

6
29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir
Généralité sur les PIC

3- Les gammes de 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

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 8


CONFIGURATION
HW DU 16F84

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 10


ADDRESSES COMPTEUR
000h PROGRAMME
004h COMPTEUR PC P b0
XXXh PC=PC+1 O T 0
FLASH b1 1
Reset PC=000h R R 0
b2 1
Mémoire IT PC=004h 02h ou 82h T I 0
0Ah ou 8Ah b3 1
Programme A S 0
05h b4 A 1
0
85h 1
PILE 8 niveaux pour
3FFh exécuter les retours SP

BUS INSTRUCTION INTERPRETATEUR T0_IT TMR0


D'INSTRUCTION
01h
UNITE
Fosc/4
RESET Reset D'EXECUTION
DONNEES
UAL EE_IT EEP
08h/09h
Fosc W
Base de
temps Fosc/4 STATUS
03h ou 83h 0Ch / 8Ch
XXh
FSR RAM
04h ou 84h ADDRESSES Bank 0 ou 1
EE_IT EECON1&2
Contrôle de lecture et 4Fh / CFh
sécurisarion d’écriture en
EEIF Eeprom 88h et 89h INT_IT
RB_IT
OPTION_REG
Contrôle de TMR0
et du port B
P b0 0
81h
O b1 T 1
GIE EETF 0
INTCON R b2 R 1
TOIE 0
TOIF Contrôle d'interruptions T b3 I 1
IT INTE B b4 S01
INTF B01
b5
RBIE 0
RBIF 0Bh ou 8Bh b6 1
0
06h b7 1
0
RB_IT INT_IT T0_IT 86h 1
29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 11
CONFIGURATION ORGANISATION DE LA RAM
HW DU 16F84
BANK 0 BANK 1
00h 80h

REGISTRE SPECIAUX

0Bh 8Bh
0Ch 8Ch

REGISTRE GENERAUX
RAM

4Fh CFh

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 12


CONFIGURATION LA BASE DE TEMPS
HW DU 16F84
La base de temps permet de séquencer l’exécution des instructions du programme
OSC
Un cycle = 4 périodes d’horloge
Q1 Q2 Q3 Q4

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,25s donc le cycle aura une
cycle précédent. durée de 1s.
•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.

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 13


CONFIGURATION
HW DU 16F84 LES REGISTRES SPECIAUX : STATUS

STATUS EQU 0x03 dans p16F84.inc


EQU dans
N° BIT Abbrev Définition p16F84.inc
Bit 7 Non utilisé : doit être maintenu à 0 0x07
Bit 6 Non utilisé : doit être maintenu à 0 0x06
Bit 5 RP0 Choix de la banque mémoire/registre : RP0 0x05
0 à Bank 0 1 à Bank 1
Bit 4 TO Passe à 0 après un dépassement du temps NOT_TO 0x04
Watchdog
Bit 3 PD Passe à 0 après l'instruction SLEEP NOT_PD 0x03
Bit 2 Z Passe à 1 sur un résultat nul pour certaines Z 0x02
instructions
Bit 1 DC Digit carry : passe à 1 si une carry arrive sur DC 0x01
le premier quartet d'un 'octet
Bit 0 C Carry : passe à 1 si une carry arrive suite à C 0x00
certaines instructions (ex:RLF)

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 14


CONFIGURATION
REGISTRE DE CONFIGURATION HARDWARE DU 16F84 :
HW DU 16F84 Cela se fait lors de la programmation du programme. Un registre situé à l’addresse 2007h
est programmé suivant une commande spécifique du compilateur :
_CONFIG

N° BIT Abbrev Définition EQU dans p16F84.inc


Bit 13 CP Bit de protection du code de B4 à B13 _CP_ON 0x000F

Bit 4 _CP_OFF 0x3FFF

Bit 3 PWRTE Bit de validation du circuit RESET interne _PWRTE_ON 0x3FF7


_PWRTE_OFF 0x3FFF

Bit 2 WDTE Bit de validation du « chien de garde » _WDT_ON 0x3FFF


_WDT_OFF 0x3FFB

Bit 0 FOSC0 Bits de choix du type d’horloge : _LP_OSC 0x3FFC


FOSC1 - LP Fréquence basse => faible consommation _XT_OSC 0x3FFD
Bit 1
- XT Normal (Quartz ou résonateur)
_HS_OSC 0x3FFE
- HS Fréquence haute (Quartz)
- RC Réseau RC _RC_OSC 0x3FFF

Ex : _CONFIG _CP_ON& _PWRTE_ON& _WDT_OFF& _HS_OSC

On fait une opération bit à bit entre 000F et 3FF7 et 3FFB et 3FFE :
_CONFIG = 1111111111100

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 15


Etude du PIC
16F877A

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 16


Etude du PIC
16F877A
14,3 Ko de ROM,
368 octets de RAM,
256 octets d’EEPROM,
33 entrées sorties, un CAN,
20 MHz,
3 timers,
15 sources d’interruptions
une USART,
un MSSP,
2 comparateurs,
2 modules comparateur et PWM .

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 17


PIC
16F877A
1. principales différences avec le 16f84

- 33 Entrée-Sortie bidirectionnelles pouvant produire 25


mA par sortie.
- 4 sources d'interruption :
- Externe par la broche partagée avec le Port B : PB0
- Par changement d'état des bits du Port B: PB4 PB5 PB6 ou
PB7
- Par un périphérique intégré dans le chip: écriture en
EEPROM terminée, conversion analogique terminée,
réception USART ou I2C ou par débordement du Timer.
- 2 Compteurs 8 bits et 1 compteur 16 bits avec pré
diviseur programmable.
- Convertisseur analogique 10 bits à 8 entrées
- USART (Universal Synchronous/Asynchronous Receiver
Transmitter): Transmission série synchrone ou asynchrone.
- Interface I2C. (Inter Integrated Circuit) bus série
synchrone composé d’un signal de donnée et d’un signal
d'horloge.

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 18


PIC
16F877A
1. principales différences avec le 16f84

- 2 modules pour PWM (Pulse Width Modulator) avec une


résolution de 10 bits.
- Interface avec un autre micro: 8 bits + 3 bits de contrôle
pour R/W et CS.
- 368 Octets de RAM, 256 Octets d'EEPROM Data - 8K mots
de 14 bits en EEPROM Flash.
- 1 registre de travail : W et un registre fichier : F
permettant d'accéder à la RAM ou aux registres internes
du PIC.

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 19


Un autre PIC 16F887
Objet des TPs
• 35 instructions
• Horloge : DC au 20MHz
• Mode faible consommation
• POR : Powe on Reset
• PWRT : Power up Timer
• Mémoire SRAM: 368
• Mémoire EEPROM 256
• Entrées/sorties : 35
• Convertisseur A/N : 14 canaux, 10 bits
• EUSART : 1
• MSSP : 1
• Comparateurs : 2
• Timers 8/16 bits : 2+1
• Standby Current: – 50 nA @ 2.0V, typical
• Operating Current: – 11 μA @ 32 kHz, 2.0V, typical – 220
μA @ 4 MHz, 2.0V, typical
• Watchdog Timer Current: – 1 μA @ 2.0V, typical

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 20


Généralité sur les PIC
Quelques caractéristiques importantes

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 - - -

PIC12FXXX 0.75 - 1.5 25 - 38 8 4-8 0 -3 8 0-1 1x8 - - EEPROM

PIC16FXXX 0.75 - 3 25 - 134 14 - 44 20 0 -3 8 0-2 1x8 - - EEPROM


PIC16HVXXX 1.5 25 18 - 20 20 - - - 1x8 - - Vdd = 15V
Mid-Range 8 - bit architecture, 14-bit Instruction World Length
PIC12FXXX 1.75 - 3.5 64 - 128 8 20 0 -4 10 1 1 - 2 x 8 1 x 16 - 0-1 EEPROM
PIC12HVXXX 1.75 64 8 20 0 -4 10 1 1 - 2 x 8 1 x 16 - 0-1 -
PIC16FXXX 1.75 - 14 64 - 368 14 - 64 20 0 - 13 8 or 10 0-2 1 - 2 x 8 1 x 16 USART I2C SPI 0-3 -
PIC16HVXXX 1.75 - 3.5 64 - 128 14 - 20 20 0 - 12 10 2 2 x 8 1 x 16 USART I2C SPI - -
High-End 8 - bit architecture, 16-bit Instruction Word Length
PIC18FXXX 4 - 128 256 - 18 - 80 32 - 48 4 - 16 10 or 12 0-3 0-2x82-3 USB2.0 CAN2.0 0-5 -
3936 x 16 USART I2C SPI
PIC18FXXJXX 8 - 128 1024 - 28 - 100 40 - 48 10 - 16 10 2 0-2x82-3 USB2.0 USART 2-5 -
3936 x 16 Ethernet I2C SPI
PIC18FXXKX 8 - 64 768 - 28 - 44 64 10 - 13 10 2 1 x 8 3 x 16 USART I2C SPI
X 3936

Programmation des microcontrôleurs PIC ENSA -Agadir 21


29/12/2021
LE JEU D’INSTRUCTIONS PARTIE 1

• 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.
• A part les instructions de saut, toutes les instructions sont exécutées en un
cycle d'horloge.

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.

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 24


LE JEU D’INSTRUCTIONS PARTIE 1
Règle des différents mnémoniques du jeu d ’instructions :
•k est un littéral, c ’est-à-dire une valeur codée sur un octet (8 bits).
•f est le symbole correspondant à un registre.
•b est le numéro du bit concerné par l ’instruction.
•d spécifie l’endroit où doit être placé le résultat de l’opération.
Les modes d’adressage sont réduits puisqu’on en compte que 4 :

•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é)

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 25


LE JEU D’INSTRUCTIONS PARTIE 2 OPERATIONS SUR LES REGISTRES
Instruction Description Indicateurs affectés
ADDLW k Additionner le contenu du registre W et la valeur immédiate "k" 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

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

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 26


LE JEU D’INSTRUCTIONS PARTIE 3
OPERATIONS SUR LES REGISTRES (suite)

Instruction Description Indicateurs affectés


COMF f,d Complé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

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

BSF f,b Mise à 1 du bit b du registre f

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 27


LE JEU D’INSTRUCTIONS PARTIE 3

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

CLRW Efface le contenu du registre W Z mis à 1

CLRWDT Efface le contenu du temporisateur du du chien de garde (watchdog) TO et PD sont miss à 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

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 28


LE JEU D’INSTRUCTIONS PARTIE 4
BRANCHEMENT

Instruction Description Indicateurs affectés


GOTO Etiquette Branchement inconditionnel à l' adresse du programme nommée "Etiquette"
BTFSC f,b Test du bit "b" du contenu du registre f.
Saut d'une instruction s'il est à l'état 1
BTFSS f,b Test du bit "b" du contenu du registre f.
Saut d'une instruction s'il est à l'état 0
DECFSZ f,d Décrémentation du contenu du registre f et saut d'une instruction 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
INCFSZ f,d Incrémentation du contenu du registre f et saut d'une instruction 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
CALL sousprog Appel du sous programme "sousprog"
RETURN Retour de sous programme après l'adresse d'où il a été appelé (après le" CALL
sousprog")
RETLW k Se comporte comme le "RETURN" avec en plus le contenu du registre W chargée
par la valeur immédiate "k"
RETFIE Retour du programme d'interruption vers le programme interrompu à l'endroit de
l'interruption
L'entrée dans le sous programme d'interruption dévalide de nouveaux appels en
interruption et l'instruction RETFIE les revalident

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 29


ORGANISATION DU PROGRAMME
FENETRE EDITEUR DE PROGRAMME [ MPLAB ]
LIST p=16F84 ; Définition de processeur Au reset le
Avant
#INCLUDEde commencer
<p16F84.inc> à lecoder
; Inclue votre
fichier p16f84 programme,
programme démarre
de Microchip ( --- EQU 0x--- ) il y aàtout
Adresse LIST p=16F84
un travail
__CONFIG préparatoire
_CP_OFF &… à effectuer.
; Configuration
l’adresse 0000h
HW du microcontrôleur: _CONFIG est une commande compilateur
Cette
VALEUR1commande
#INCLUDE <p16F84.inc>défini
; Assignéle type de numérique
composant pour ledu programme
Pour cela on va utiliser des commandes
à une instruction propres à MPLAB.
EQU 0x55 un nom à une valeur pour faciliter l'écriture
Cette
_CONFIG
microcontrôleur
0000h Vecteur Reset
VALEUR2 _CP_OFF&…
commande inclus le fichier « p16F84.inc ». 55h
EQU ….. ; ex : associé VALEUR1 revient à lui associer
Ces EQU
Cette commandes
CARRY STATUS,Cne ;sont
commande vu ;,entre
sur unepas des
diapositive instructions précédente pour le
permet
Ce fichier attribue programme :autre, des noms le bit C de aux adresses
#DEFINE Assigné un nom au bit d'un registre pour faciliter la lecture du
Programme Nom … 0xYY Il faudra
Il ne reste que 4
microcontrôleur mais des commandes pour àleune compilateur qui
#DEFINE ex CARRY représente STATUS
principal de
Cette
hexa configurer
commande
des le 16F84.
0x00Cregistres permet
(; début
PORTA,de d’assigné
la zone
TRISA, un (voir
RAM utilisateur nom
PORTB, de laadresse
donc
organisation
TRISB,
adressesfaire lede
un saut
RAM)pour début
CBLOCK
créera Reg1 : le programme exécutable. !
registre
#DEFINE
STATUS, 1ounomà une
…), des valeur
registre,numéro
noms
; Reg1 numérique.
au
représente
numéro
de bit
le registre RAMde
de situé 0
bit
à 7 rapidement
de
à l'addresse
registres
du0Chprogramme
Cette
Toute
0004h Vecteur
Cela vacommande
Reg2 ligne
d'interruption
faciliter
:1 ou partiea un rôle
l’écriture
; Reg2 de ligne
, le similaire précédé
du programme
registre RAM situé à à EQU
l'addressedeet«
0Dh mais
sa pour
serale bit
; »lisibilité.
Sous programme spécifiques ( Z, DC, C…).
d’un registre.
interprété
Reg3 : 2
comme un
; Reg3
commentaire.
, deux registres RAM situés aux addresses 0Dh et 0Eh
d'interruption De plus Reg …ce fichier attribue ;… 0 à W et 1interruption à F. On envalide verra
; Fin deEla zone de définition Une
M
si utilisation l’utilité pour certaine instruction plus tard.
ENDC RAM

Adresse M déroute le programme à


d'interruption
ADébut
partir
CBLOCK
ORG 0x00 de0x0C
ce point commence O
; Indique au compilateur l’écriture
l'adressel’adresse
dedudébut 0004h au reset
programme.
du programme
0000h Vecteur Reset I instruction du programme
Instruction 1 ; Première
Programme En rouge
ORG nomsont
0x00 : 1 indiquésRles instructions du programme.
principal Cette
ENDC commande défini l’adresse en mémoire programme où
GOTO PPS ; Saut àEsuite du programme principal défini par l'étiquette PPS

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.

Changer les applications des exemples avec des


applications plus simple et plus significatif

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 31


Application
; Commande d'une LED avec un interrupteur

; 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

Start BSF STATUS, RP0 ; Acces Bank1


MOVLW 0x00 ; Port A en sortie
MOVWF TRISA
MOVLW 0xFF ; Port B en sortie
MOVWF TRISB
BCF STATUS, RP0 ; Acces Bank0

ETQ1 MOVF PORTB, W ; Lecture port B


MOVWF PORTA ; Ecriture sur port A
GOTO ETQ1 ; Reboucle au départ

END

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 32


Application

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 33


Temporisation : temporisation Initialisation Boucle 256
compteurL=0 compteurL=00
compteurH=0 compteurH=FF
;Déclaration des variables (registres)
compteurL=0
CBLOCK 0x10 compteurH=0
Boucle 1 Boucle 257
compteurL=FF compteurL=FF
compteurL ; @0x10
compteurH=0 compteurH=FF
compteurH ; @0x11
compteurL= compteurL-1 Boucle 2
ENDC Boucle 258
compteurL=FE compteurL=FE
compteurH=0 compteurH=FF
;Initialisation des registre compteurs
compteurL=0 Boucle 3
clrf compteurL Non compteurL=FD
clrf compteurH compteurH=0
Oui Boucle 512
compteurL=00
; Sous programme de temporisation compteurH= compteurH-1
compteurH=FE
temporisation Boucle 254
Boucle 513
compteurL=01
compteurL=FF
decfsz compteurL,f compteurH=0
compteurH=0 compteurH=FE
goto temporisation Non
Boucle 255
Oui compteurL=01
decfsz compteurH,f compteurH=0
Retour
goto temporisation Boucle 256 x256 + 65535
Boucle 256 compteurL=00
compteurL=00 compteurH=00
Return compteurH=FF

34
29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir
Programmation

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 35


Programmation des Pic :

• 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

29/12/2021 Programmation des microcontrôleurs PIC ENSA -Agadir 37

Vous aimerez peut-être aussi