![](Etude-et-application-de-microcontroleur-16f841.png)
République Algérienne démocratique
Et populaire
UNIVERSITE DE MASCARA FACULTE DES SCIENCES ET DE LA
TECHNOLOGIE Génie Electrique Et Electronique
Pour obtenir Diplôme d'Etude Universitaire
Appliquée
Thème
Présenté par :
- Mr BOUZIANE MUSTAPHA - Mr BESSAIM
BENALI
Encadré par : Mr
Chaouche Membre du jury :
Président du jury : M r AZZEDDINE
Examinateurs : M r TAYBI
: M elle MESKINE
Année universitaire : 2006 / 2007
![](Etude-et-application-de-microcontroleur-16f842.png)
Je dédie ce modeste travail à :
Ma grand-mère pour leur aides et
leur soutien durant toute la période de mes
études Ma mère et mon père, la
lumière de ma vie Tous mes frères, ma famille et mes
oncles Et tous les habitants d'Adrar. Mon binôme et tous
mes amis
En fin à tout les étudiants de génie
électrique & électronique.
Bouziane Mustapha
![](Etude-et-application-de-microcontroleur-16f843.png)
Je dédie ce modeste travail à :
Mes chers parents pou leur patience, leur soutien
et leur confiances
Mes frères, mes soeurs et mes oncles A
toute ma famille
A toute la familles Bessaïm
A mon binôme, notre encadreur et tous mes
amis
En fin à moi-même et tous les
étudiants de génie électrique &
électronique.
Bessaïm Benali
![](Etude-et-application-de-microcontroleur-16f844.png)
Tous d'abord nous remercions
?Ç
Le plus puissant qui nous donne le courage de
résoudre tout les problèmes. Nous tenons à
remercier tout ce qui nous ont aidés de prés ou de loin par
leur conseilles, informations et leur encouragements pour réaliser
ce projet de fin d'étude ,ainsi à notre
encadreur Mr" Djamel chaouche ".
Nous remercions aussi tous les enseignants de
département de Génie Électrique. En fin nous remercions
tous nos amis et les étudiants de 3éme année
Génie Électrique & Électronique
![](Etude-et-application-de-microcontroleur-16f845.png)
étude de PIC 16F84
1. Qu'est-ce qu'un PIC ? (PIC
: Programmable Intelligent
Contrôler).
- Un PIC n'est rien d'autre qu'un microcontrôleur,
c'est à dire une unité de traitement de l'information de type
microprocesseur à laquelle on a ajouté des
périphériques internes permettant de réaliser des montages
sans nécessiter l'ajout de composants externes.
- Les PICs sont des composants dits RISC (Reduce Instruction
Construction Set),ou encore composant à jeu d'instructions
réduit. Pourquoi ? Et bien, sachez que plus on réduit le nombre
d'instructions , plus facile et plus rapide en est le décodage , et plus
vite le composant fonctionne.
- On trouve sur le marché 2 familles opposées ,
les RISC et les CISC (Complex Instructions Construction Set).Chez les CISC ,on
diminue la vitesse de traitement, mais les instructions sont plus complexes ,
plus puissantes , et donc plus nombreuses. Il s'agit donc d'un choix de
stratégie.
[1]
2. Les différentes familles des PICs
:
La famille des PICs est subdivisée à l'heure
actuelle en 3 grandes familles : La famille Base-Line , qui utilise des mots
d'instructions de 12 bits, La famille Mid-Range , qui utilise des mots
d'instructions de 14 bits , La famille High-End, qui utilise des mots
d'instructions de 16 bits.
[1]
3. Identification d'un PIC :
Pour identifier un PIC, vous utiliserez simplement son
numéro .
-Les 2 premiers chiffres indiquent la catégorie du PIC ,
16 indique un PIC Mid-Range.
Vient ensuite parfois une lettre L : Celle-ci
indique que le PIC peut fonctionner avec une plage de tension beaucoup plus
tolérante . Ensuite, vous trouvez :
C : indique que la mémoire programme est
une EPROM ou plus rarement une EEPROM
CR : pour indiquer une mémoire de type
ROM .
F : pour indiquer une mémoire de type
FLASH.
- Notez à ce niveau que seule une mémoire FLASH ou
EEPROM est susceptible d'être effacée,
- Puis vous constatez que les derniers chiffres identifient
précisément le PIC (84) .
- Finalement vous verrez sur les boîtiers le suffixe
<<-XX >> dans lequel XX représente la fréquence
d'horloge maximale que le PIC peut recevoir. Exemple -04 pour un 4MHz.
- Donc, un 16F84-04 est un PIC Mid-Range (16) donc la
mémoire programme est de type FLASH (F) donc réinscriptible de
type 84 et capable d'accepter une fréquence d'horloge de 4MHz. [1]
4. Brochage du PIC 16f84 :
- Le PIC 16f84 c'est un circuit intégré,
boîte de 18 branches. - Le brochage proposé à la (figure :
1-1)
![](Etude-et-application-de-microcontroleur-16f846.png)
( Figure : 1-1) Brochage du PIC 16 F84
4.1 Les branches ( les pattes )
:
- Les ports d'entrées / sorties :
- Permettent de dialoguer avec l'extérieur du
microcontrôleur, pare exemple pour prendre en compte l'état d'un
interrupteur (entrée logique) ou encore pour commander un relais (
sortie logique ) .
- Le PIC 16F84 possède 13 lignes d'entrées /
sorties : RB0 à RB7 et RA0 à RA4.
RA0 à RA4 : Constituent
le (PORTA) du microcontrôleur ce port bidirectionnel . -La ligne RA4de
type drain ouvert en sortie peut aussi être utilisée comme
entrée d'horloge du compteur (Timer) , TMR0 .
RB0 et RB7 : Constituent le
PORTB du microcontrôleur , ce port bidirectionnel. - La ligne RB0 peut
servir d'entrée de demande d'interruption externe .
VDD et VSS : Ce sont les
connexions d'alimentation du circuit .Il est alimenté avec une tension
de 5 volts VSS = 0 v , VDD = +5 v .
MCLR :Cette connexion active au niveau 0,
est l'entrée de Reset (Master CLear Reset ) elle permet aussi le
branchement de la haute tension VPP nécessaire à la programmation
du composant .
OSC1 et OS : Ces connexion
permettent l'entrée des signaux nécessaires au fonctionnement de
l'horloge . [3]
5. Organisation du PIC 16F84:
- Nous allons maintenant nous intéresser à la
structure interne du PIC 16f84 avec lequel nous allons travailler ( figure :
1-2 ).
![](Etude-et-application-de-microcontroleur-16f847.png)
( figure : 1- 2 ) Structure interne du PIC 16F84 [2]
5.1. La mémoire de programme :
-C'est une mémoire contient le code binaire
correspondant aux instructions que doit exécuter le
microcontrôleur . la capacité de cette mémoire est variable
selon les PICs . -Le PIC 16F84 possède une mémoire de programme
de 1024 × 14 bits . (figure : 1- 3 ) [2]
![](Etude-et-application-de-microcontroleur-16f848.png)
( figure : 1-3 ) La mémoire de programme , PIC 16F84
5.2. La mémoire RAM :
-C'est une mémoire qui sauvegarde temporairement des
données. La capacité de cette RAM est variable selon les PICs .
le PIC 16F84 possède une mémoire RAM de 68 octets . ( figure :
1-4 ) [2]
![](Etude-et-application-de-microcontroleur-16f849.png)
5.3. La mémoire EEPROM :
-La mémoire EEPROM (Electrical Erasable Programmable Read
Only Memory), est constituée de 64 octets que vous pouvez lire et
écrire depuis votre programme . -Ces octets sont conservés
après une coupure de courant et sont très utiles pour conserver
des paramètres semi permanents.
-Leur utilisation implique une procédure spéciale
car ce n'est pas de la RAM , mais bien une ROM de type spécial. Il
est donc plus rapide de la lire que d'y écrire.
[1]
5.4. Unité Arithmétique et Logique :
( UAL ) ou ALU en anglais .
- UAL est chargée effectuer toutes les
opérations arithmétiques de base ( addition , soustraction ,
etc.) ainsi que les opérations logiques de base ( ET ,OU logique ,
etc.).
[2]
5.5. Horloge système :
-L'horloge fournie au PIC est pré divisée par 4 au
niveau de celle-ci. C'est cette base de temps qui donne le temps d'un cycle.
L'horloge du microcontrôleur peut utiliser
différents systèmes il faut configurer le PIC en fonction du
câblage réalisé et de ses caractéristique de
fonctionnement .
( Voire tableau : 1 ).
OSC1
|
OS
|
Type d'oscillateur
|
0
|
0
|
Oscillateur avec réseau résistance capacité
Fmax = 4 MHz .
|
1
|
0
|
Oscillateur XT à quartz ou oscillateur extérieur
Fmax = 4 MHz .
|
0
|
1
|
Oscillateur HS à quartz grande vitesse Fmax = 10 MHz .
|
1
|
1
|
Oscillateur LP à quartz basse consommation Fmax = 200 KHz
.
|
(tableau : 1 ) Choix de l'oscillateur [3]
5.6. Définition du reset :
- Après avoir placé le
programme en mémoire on peut se demander comment faire pour le lancer et
ainsi mettre en route l'application, l'opération reset permet ce
démarrage .
- Cette procédure d'initialisation interne est
déclenchée soit à la mise sous tension du composant c'est
le Power On Reset (P.O.R), soit par un niveau bas appliqué sur la
connexion MCLR (Master Clear Reset ).
- le POR est généré grâce à
un détecteur de niveau quand la montée de la tension
d'alimentation atteint un seuil 1,2 et 1,7 volt . le reset initialise un
certain nombre de registres.
5.7. Chien de garde ( Watch Dog ) :
- C'est un système de protection contre un blocage du
programme . Par exemple , si le programme attend le résultat d'un
système extérieur ( conversion analogique numérique par
exemple ) et qu'il n'y a pas de réponse, il peut rester bloquer. Pour en
sortir on utilise un chien de garde . Il s'agit d'un compteur qui , lorsqu'il
arrive en fin de comptage , permet de redémarrer le programme. Il est
lancé au début du programme.
- En fonctionnement normal , il est remis à zéro
régulièrement dans une branche du programme qui s'exécute
régulièrement. Si le programme est bloqué ,il ne
passé plus dans la branche de remise à zéro et le comptage
va jusqu'au bout, déclenche le chien de garde qui relance le
programme.
[1]
5.8. Les registres fondamentaux :
5.8.1 Le registre ( W ) :
-Ce registre de travail que l'on peut appeler accumulateur
est un registre utilisé pou réaliser des calculs , le
résultat d'un calcul peut être sauvegardé dans un
emplacement RAM (F) ou dans le registre de travail (W) .(il n'y a pas d'adresse
) . [3]
5.8.2. Le registre pointeur de pile : ( PP ou
SP en anglais ) .
- Est essentiellement utilisé lorsque l'on
réalise un sous-programme .le pointeur de pile est chargé de
mémoriser l'adresse courante que contient le compteur de programme avant
le saut à l'adresse du sous-programme .lorsque le sous-programme est
terminé, le pointeur restitue l'adresse sauvegardée vers le
compteur de programme .
[2]
5.8.3. Le registre d'instruction :
- Contient tous les codes binaires correspondant aux
instructions à réaliser par le microcontrôleur, le PIC
16F84 comporte 35 instructions . [2]
Observation : On a autres registre , registre
compteur de programme (PC ) et registre d'état ( STATUS ) et on a aussi
des registres spéciaux on fait détaille on suit .
6. Les interruptions :
- Une interruption comme son nom l'indique , interrompt un
programme en cours (programme principal) pour faire exécuter à le
microcontrôleur un autre travail (suite d'instructions appelée
aussi sous-programme ). celui-ci se termine par une instruction de retour
d'interruption (RETFIE) qui permet à le microcontrôleur de
reprendre le programme principale ou il a été quitté.
[3]
7. Le Pré diviseur :
- C'est un diviseur de fréquence de
l'horloges , un prédiviseur , partagé avec le chien de garde, est
disponible. La période de l'horloge d'entrée est divisée
par une valeur comprise entre 2 et 256 suivant les bits PS2, PS1 et PS0
(respectivement OPTION_REG 2, 1 et 0). -Le bit PSA (OPTION_REG . 3) permet de
choisir entre la prédivision de timer0 (PSA=0) ou du chien de garde
(PSA=1).
[1]
8. Les registres spéciaux : ( les
registres internes du PIC 16F84 ) .
-Le tableau suivant (:2).Fait découvrir de nouveaux
registres directement accessibles par l'utilisateur , ce sont en
réalité des cases mémoires RAM regroupées dans une
zone appelée par le constructeur FILE .
-Certains de ces registre sont situés en page 0 entre
les adresses 00 et 0B , et d'autre sont situés en page 1 entre les
adresses 80 et 8B , il y a deux pages mémoire donnant accès a
certains emplacements:en positionnant le bit RP0 du registre STATUS ( registre
d'état ) à 0 , on accède aux registre de la page
mémoire 0 ; en positionnant ce bit à 1 , on accède
à la page mémoire 1 . Il en a 16 registres plus le registre ( W,
Pointeur de pile et registre d'instruction ), et sont si importants qu'ils
conditionnent véritablement la programmation .
8.1. Tableau des registres :
Adresse
|
Registre
|
Registre
|
Adresse
|
00
|
INDF
|
INDF
|
80
|
01
|
TMR0
|
OPTION
|
81
|
02
|
PCL
|
PCL
|
82
|
03
|
STATUS
|
STATUS
|
83
|
04
|
FSR
|
FSR
|
84
|
05
|
PORTA
|
TRISA
|
85
|
06
|
PORTB
|
TRISB
|
86
|
07
|
|
|
87
|
08
|
EEDATA
|
EECON1
|
88
|
09
|
EEADR
|
EECON2
|
89
|
0A
|
PCLATH
|
PCLATH
|
8A
|
0B
|
INTCON
|
INTCON
|
8B
|
0C à 4F
|
68 mémoires
disponibles
|
Accès aux même Mémoires que page 0
|
8C à CF
|
Page 0
|
|
|
Page 1
|
( Tableau : 2 ) , Les registres internes du PIC 16F84 [3]
?8.1.1. Les registres PCL (h'02' et h'82')
et PCLATH (h'0A' et h'8A' )
- Le compteur de programme ou compteur ordinal nommé PC
permet de pointer sur la prochaine instruction a exécuter, le PC complet
étant d'office sur 13 bits .Il faut 2 registres , le premier accessible
en lecture et écriture contient l'adresse basse du PC sur 8 bits , il
est appelé PCL (PC Low ), le deuxième s'appelle : PCLATH (PC
LATch counter High ).
-Le compteur PC pour PIC 16F84 travaille sur 10 bits , les 6 bits
forts du PCLATH maintenus a 0 . [3]
? 8.1.2. Le registre STATUS (h'03' et h'83' )
ou registre d'état
-Est en relation avec l'UAL et permet de tester le
résultat de la dernière opération effectuée par le
microcontrôleur . Selon la dernière opération
effectuée des bits sont positionnes dans le registre d'état et
ceux-ci peuvent être tester a l'aide d'une instruction de bronchement
pour effectuer des sauts conditionnels .
7 0
![](Etude-et-application-de-microcontroleur-16f8410.png)
IRP
RP1
RP0
TO
PD
Z
DC
C
BIT 0 : C ( Carry ) , retenue ou report .
Il passe a "1" lorsque le résultat d'une opération
dépasse la valeur FF. BIT 1 : DC ( Digit Carry ).
Il indique un report ou retenue du bit 3 ver le bit 4 .
BIT 2 : Z (Zéro ).
Quand il est a "1", il indique que le résultat de
l'opération est nul. BIT 3 : PD ( Power-down ).
Ce bit est actif au niveau zéro . Il est mis a 1 a la mis
sous tension.
PD est mis a 0 par l'instruction SLEEP ( état de basse
consommation ). PD est mis a 1 par l'instruction CLRWDT ( mise a 0 du chien de
garde). BIT 4 : TO (Time-out bit ).
Ce bit est actif au niveau zéro. Ce bit est mis a 1 a la
mise sou tension. Ce bit est mis a 0 par le débordement du chien de
garde.
BIT 5 : RP0 ( Registre Bank Select ).
Ce bit permet d'indiquer dans quel bloc de RAM on veut
travailler. RP0 mis a 0 on utilise le bloc 0 .
RP0 mis a 1 on utilise le bloc 1 .
BIT 6 : RP1 ( Registre Bank Select ).
Ce bit est inutilisé pour le PIC 16F84 , il doit
être laissé a 0 .
BIT 7 : IRP ( Indirect RP ).
Ce bit n'est pas utilisé dans le PIC 16F84 , il faut
maintenu a 0 .
[3]
? 8.1.3. Les registres INDF (h'00' et h'80' )
et FSR (h'04' et h'84' ).
-Le registre INDF ainsi que FSR permettent l'adressage
INDIRECTE.
-Le principe est d'utiliser deux registres intermédiaires
pour accéder aux données: -Dans le premier appelé FSR , on
inscrit l'adresse (en fait , il est utilisé comme un pointeur).L'autre
registre INDF contient la valeur qui se trouve à l'adresse
définie dans le FSR. . [1]
? 8.1.4. Le registre OPTION ( h'81' )
-Le registre OPTION est un registre utilisable en lecture et
en écriture. Il permet de configurer le pré diviseur du compteur,
l'interruption externe INT et de mettre en place des rappels de potentiel sur
le port B. Après le RESET
Tous ses bits sont à 1.
7 0
![](Etude-et-application-de-microcontroleur-16f8411.png)
RBPU
INTEDG
TOCS
TOSE
PSA
PS2
PS1
PS0
BIT 7 : RBPU ( pull up du port B).
Une résistance de rappel est relié au +5 volt sur
chaque connexion du PORTB, quand le bit RBPU est mis à0 (actif au niveau
bas ).
Ce bit valide simultanément les résistances sur
toutes les connexion du PORTB. BIT 6 : INTEDG ( INTerrupt
EDGe).
Sélection du front du signal de demande d'interruption.
Si INTEDG =1 alors la broche RBO/INT génère une
interruption sur un front montant.
Si INTEDG =0 alors la broche RBO/INT génère une
interruption sur un front descendant.
BIT 5 : TOCS ( Timer zero Clock Source )
Sélection de la source d'horloge du compteur . Le
timer0 es t incrémenté par l'horloge interne Fosc/4 (
synchronisé au programme) si TOCS = 0 , sinon .Il compte les impulsions
reçues sur la connexion RA4/TOCKI.
BIT 4 : TOSE (Timer zero Signal Edge ).
Ce bit détermine sur quel front ( montant ou descendant)
l'entrée RA4
incrémentera le registre TMR0.
TOSE=1 Front descendant.
TOSE=0 Front montant.
BIT 3 : PSA (Pre-Scaler Assignement).
Si PSA = 1 alors le pré diviseur est associé avec
le WD .
Si PSA = 0 alors le pré diviseur est associé avec
le TIMER
BIT 2-1-0 : PS2 - PS1 - PS0 (Pre-Scaler rate
).
Réglage de la pré division . Ces trios bits
déterminant la valeur de pré division pou le registre
détermine par le bit PSA . La pré division est différente
pour le compteur timer0 ( TMR0 ) et pour chien de garde (Watch Dog ). Voir
tableau suivant (tableau : 3) .
PSA
|
PS2
|
PS1
|
PS0
|
TMR0
|
Watch Dog
|
0
|
0
|
0
|
0
|
2
|
1
|
0
|
0
|
0
|
1
|
4
|
1
|
0
|
0
|
1
|
0
|
8
|
1
|
0
|
0
|
1
|
1
|
16
|
1
|
0
|
1
|
0
|
0
|
32
|
1
|
0
|
1
|
0
|
1
|
64
|
1
|
0
|
1
|
1
|
0
|
128
|
1
|
0
|
1
|
1
|
1
|
256
|
1
|
1
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
0
|
1
|
1
|
2
|
1
|
0
|
1
|
0
|
1
|
4
|
1
|
0
|
1
|
1
|
1
|
8
|
1
|
1
|
0
|
0
|
1
|
16
|
1
|
1
|
0
|
1
|
1
|
32
|
1
|
1
|
1
|
0
|
1
|
64
|
1
|
1
|
1
|
1
|
1
|
128
|
(tableau : 3 ), de la pré division [3]
? 8.1.5. Le registre PORTA (h'05').
- Ce registre est un port d'entrée / sortie de 5
bits,reprisant image des pins RA0 à RA4 . - La configuration de chaque
bit du port est déterminée avec le registre TRIS A.
7 0
|
|
|
|
R / W
|
R / W
|
R / W
|
R / W
|
R / W
|
|
|
|
EEIF
|
WRERR
|
WREN
|
WR
|
RD
|
[1]
|
![](Etude-et-application-de-microcontroleur-16f8412.png)
GIE
EEIE
TOIE
INTE
RBIE
TOIF
INTF
RBIF
? 8.1.6. Le registre TRISA ( h'85' ).
-C'est le registre de configuration du registre port A .Seuls
les cinq bits de poids faible son utilisés. Si le bit = 1, le bit
correspondant du port A est en entrée, s'il est égale à 0,
le bit correspondant du port A est en sortie .
7 0
|
|
|
R / W
|
R / W
|
R / W
|
R / W
|
R / W
|
|
|
|
TrisA4
|
TrisA3
|
TrisA2
|
TrisA1
|
TrisA0
|
[1]
? 8.1.7. Le registre PORTB (h'06' ).
-Le PORTB est un port bidirectionnel de 8 bits, reprisant image
des pins RB0 à RB7 . -La configuration du PORTB est
réalisée avec le registre TRISB .
7 0
R / W
|
R / W
|
R / W
|
R / W
|
R / W
|
R / W
|
R / W
|
R / W
|
RB7
|
RB6
|
RB5
|
RB4
|
RB3
|
RB2
|
RB1
|
RB0
|
[1]
? 8.1.8. Le registre TRISB ( h'86' ).
-C'est le registre de configuration du registre port B . Si le
bit = 1, le bit correspondant du port B est en entrée, s'il est
égale à 0,le bit correspondant du port B est en sortie.
7 0
R / W
|
R / W
|
R / W
|
R / W
|
R / W
|
R / W
|
R / W
|
R / W
|
TrisB7
|
TrisB6
|
TrisB5
|
TrisB4
|
TrisB3
|
TrisB2
|
TrisB1
|
TrisB0
|
[1]
? 8.1.9. Le registre INTCON : INTerrupt CONtrol
(h'0B' et h'8B' ). -C'est le registre qui préside au fonctionnement des
interruptions .
-Ces bit passent à 1 quand une demande est apparue.
-Dans le pic 16f84 il y a quatre source possibles
d'interruptions.
1) La fin d'une programmation de l'EEPROM de données .
2) Le débordement du (timer ) interne .
3) Une commande externe appliquée sur la pin 6 (RB0/INT)
.
4) Un changement d'état sur l'une des pins 10 , 11 , 12
ou 13 .
7 0
BIT 0: RBIF ( RB port change Interrupt Flag)
-C'est un drapeau d'interruption qui indique un changement
d'état du PORT (RB4àRB7).
RBIF=1 une broche (RB4 à RB7) à changé
d'état.
RBIF=0 pas de changement d'état. BIT 1:
INTF (INT interrupt Flag). Drapeau d'interruption de l'entrée
RB0. RBIF=1 une interruption est apparue. RBIF=0 pas d'interruption.
BIT 2: TOIF ( TMRO Overflow Interrupt Flag).
Ce drapeau indique un dépassement du registre TMRO
(passage de FF à 00).
TOIF= 1 dépassement de TMR0. TOIF= 0 pas de
dépassement.
BIT 3: RBIE (RB Interrupt Enable).
Bit de validation qui autorise une interruption lors d'un
changement d'état du
PORT B (RB4 à RB7).
RBIE =1 Autorise l'interruption.
RBIE =0 Les changement d'état du PORT B (RB4 à RB7)
ne générant pas d'interruption. BIT 4: INTE (
INT interrupt Enable).
Valide ou non l'interruption généré par la
broche RB0/INT
INTE = 1 Valide l'interruption INT.
INTE = 0 Pas d'interruption provenant de INT.
BIT 5: TOIE (TMRO Overflow Interrupt Enable).
- Autorise ou non l'interruption provoqué par le
dépassement du registre TMRO (passage de FF à 00)
TOIE = 1 Valide l'interruption.
TOIE = 0 Pas d'interruption provenant du registre TMR0.
BIT 6 : EEIE (EE write Interrupt Enable).
-Ce bit autorise ou non une interruption lorsqu'un cycle
d'écriture dans L'EEPROM c'est déroulé normalement.
EEIE=1 Génère une interruption lorsqu'une cycle
d'écriture c'est déroulé normalement. EEIE=0 Pas
d'interruption.
BIT 7: GIE (Global Interrupt Enable).
-Ce bit autorise ou non toutes les interruptions.
GIE=1 Toutes les interruptions sont prises en compte par le
microcontrôleur.
GIE=0 Aucune interruption ne sera validée .
[3]
? 8.1.10. Le registre EEDATA : EEprom DATA (
h'08' ) .
-Ce registre de 8 bits permet de lire ou d'écrire une
donnée dans la mémoire non
volatile (EEPROM).
[1]
? 8.1.11. Le registre EEADR : EEprom ADRess (
h'09' ) .
Registre de 8 bits qui contient l'adresse de la donnée se
trouvant dans l'EEPROM. [1]
? 8.1.12. Le registre EECON 1 : EEprom CONtrol (
h'88' ) .
Registre de contrôle permettant de définir le
mode de fonctionnement (écriture et l'écriture ) de la
mémoire de donnée EEPROM ,Seuls les 5 bits de poids faible sont
utilisés .
7 0
![](Etude-et-application-de-microcontroleur-16f8413.png)
EEIF
WRERR
WREN
WR
RD
BIT 0 : RD ( RaeD).
-Lorsque ce bit est mis à "1", il indique au
microcontrôleur que l'on souhaite une lecture de l'EEPROM. Apres le cycle
de lecture, il est mis automatiquement à 0. BIT 1 : WR
( WRite ).
-Lorsque ce bit est mis à "1", il indique au
microcontrôleur que l'on souhaite une écriture de l'EEPROM; Apres
le cycle d'écriture, il est mis automatique à 0.
BIT 2 : WREN ( WRite ENable ).
Mis à 0 , interdit toute écriture en mémoire
.
Mis à 1 , autorise une écriture en mémoire
.
BIT 3 : WRERR ( WRite ERRor ) .
C'est un bit d'erreur. Il passe à 1 s i une
opération d'écriture en EEprom à été
interrompue , par exemple par un reset
BIT 4 : EEIF ( EEprom Interrupt Flag ). Flag
d'interruption .
C'est le flag qui est en liaison avec l'interruption EEPROM .Il
passe à 1 une fois l'écriture en EEprom terminée.
Si le bit EEIE du registre INTCON est à 1, une
interruption sera alors générée. [1]
? 8.1.13. Le registre EECON 2 : EEprom CONtrol (
h'89' ) .
Registre n'ayant aucune consistance physique , et dont le seul
rôle consiste à obliger le programmeur à vérifier
les données qu'il envoie dans l'EEPROM. il compte jusqu'à 256
[ 1 ]
? 8.1.14. Le registre TMR0 ( TiMeR zero).
- Ce registre de 8 bits s'incrémente de "1" a chaque
impulsion de l'horloge (externe ou interne)Ce timer peut soit fonctionner seul,
soit être précédé par un pré diviseur
programmable à 8 bits dont la programmation se fait par
l'intermédiaire du registre OPTION .
![](Etude-et-application-de-microcontroleur-16f8414.png)
Programmation de PIC 16F84
1. INTRODUCTION
- Maintenant que nous avons acquis les rudiments du
microcontrôleur .Il est le temps de passer à pratique.
- Au début on a créer un programme qui
répond au cahier des charges de notre projet.
pour créer le programme source il faut uniquement un
éditeur de texte,un logiciel spécifique permet de compiler le
programme . ( le plus connu MPLAB chez microchip) c'est - à - dire la
transformation du programme source en un programme dit hexadécimal ou
Binaire , suite de 0 et 1 . - Une fois compilé le fichier sousce est
transféré via un logiciel approprié vers la mémoire
de programme du PIC, Cette logiciel appelé « ic-prog ».
- Ce dernier opération de transformation du programme
à mémoire de PIC , elle est faite à l'aide d'un outil
appelé «programmateur des PICs » .
2. Le langage assembleur
- Le langage assembleur est une interface entre l'homme et le
microcontrôleur pour la compréhension d'un programme .
- En effet , il est difficile pour l'homme d'écrire ou
de comprendre une représentation binaire d'une suite d'instructions
.Quant au microcontrôleur, il ne reconnaît qu'une suite de 0 et de
1 (langage binaire ).
- Pour une représentation plus explicite d'un langage
binaire on utilise le langage assembleur ou les instructions sont
représentées par leur mnémonique .un fichier source
contient le programme écrit dans un langage compréhensible pour
l'homme . Edité sous le format ASCII , il décrit sous une forme
le plus souvent mnémonique les instructions que doit exécuter le
microcontrôleur .
3. Règles de rédaction en langage
d'assemblage
3.1. Les pseudo-instruction ou directives d'assemblage
.
- Les directives ne sont utiles qu'un logiciel d'assemblage ,
elles ne font pas partie du programme .
o La directive ORG précise à
l'assembleur ou sont implantés les codes machines dans la mémoire
de programme . Elle s'écrit après une tabulation ( un espace
minimum ) .
On peut placer plusieurs ORG dans un programme.
o - La directive LIST détermine le type
de microcontrôleur utilisé. [3]
Exemple :
LIST P = 16F84
o - La directive END précise ou doit
s'arrêter l'assemblage, les instructions situées
après sont ignorées .En aucun cas cette directive
ne signifie la fin du programme. o - La directive CONFIG
permet de définir les paramètres de fonctionnement du PIC
.
CONFIG_CP_OFF & _WDT_OFF &_PWRTE_ON & _HS_OSC
Chaque définition est séparée par le
symbôle &.
- Dans l'exemple ci-dessus le bit CP est à 0 , le bit WDT
(watchdog) est à 0 ,le bit PWRTE est à 1 et le terme HS
définit le type d'horloge utilisé .
3.2. Les assignations
- Une assignation se comporte comme une simple substitution .
Au moment de l'assemblage,Chaque fois que l'assembleur va trouver une
étiquette avec assignation , il la remplacera automatiquement par valeur
.
Exemple :
TEMP0 EQU 0A ; le registre temporaire 0 se trouve à
; l'adresse 0Ah ( en hexa ).
3.3. Les fichiers « include »
- La directive << include >> permet d'introduire
dans le programme les assignations contenues dans le fichier P16F84. INC ,
c'est-à-dire toutes les constantes utiles du microcontrôleur .
Par exemple :
Include ? p16F84 . inc ? [3]
3.4. Les définitions .
- Une définition << # define >> fonctionne
comme une assignation. Les assignations sont utilisées pour les valeurs
. Et les définitions pour remplacer un texte plus complexe ou le
résultat d'un calcul .
- La directive # DEFINE, écrite en bordure de marge est
suivie par l'étiquette, puis la chaîne à substituer .
Par exemple :
# DEFINE led PORTB , 2
- Ceci veut dire que l'étiquette << led >>
désigne le bit 2 du port B . [3]
3.5. Les macros .
- Une macro permet de nommer une séquence
d'instructions souvent utilisée et qui peut être
insérée dans un programme par simple appel de son nom . Elle
simplifie l'écriture et apparaît comme une instruction .
- Elle se compose d'un nom ( étiquette ) écrit
en première colonne , puis de la directive << macro >> . A
la ligne suivante on place le logiciel qui constitue la macro.
- La macro se termine par la directive << endm >> (
end of macro ).
Exemple de définition :
ALUM macro
Bsf led ;( mise à 1 du bit correspondant à
led ) Endm
3.6. La zone des variables .
- Cette directive CBLOCK permet de définir l'adresse du
début d'une zone de variables Exemple :
CBLOCK 0×0C ; début de la zone de
variables.
- Ensuite , il suffit d'écrire le nom de la variable suivi
du signe << : >> et de la taille utilisée.
Cmpt : 1 ; zone de 1 octet
Table : 8 ; zone de 8 octet
- La fin de la zone en coures est définie par la
directive
ENDC ;Fin de la zone
3.7. Les étiquettes .
- Afin de faciliter la relecture et aussi de permettre la
modification multiple , plus facile,de données ou d'adresses,
l'utilisateur a intérêt à utiliser des étiquettes
(labels ),une étiquette permet aussi de retrouver un emplacement
mémoire utilisé par exemple pour un branchement ou un saut .
L'assembleur remplace l'étiquette par sa valeur ou par l'adresse du
programme ou elle se trouve . [3]
3.8. Les commentaires .
- L'utilisateur, pour faciliter la relecture , à long
terme , de son texte source ou du listing d'assemblage , a intérêt
à y introduire des commentaires :
- soit entre les lignes du programme , dans ce cas il commence
chaque ligne par un point virgule {;} en bordure de marge .
Exemple :
; ceci est un commentaire soit après une
instruction
.
Exemple :
decfsz compt 1 , f ; décrémenter le
compteur compt 1
[3]
4. Le jeu d'instruction et modes d'adressage du PIC
16F84
- Un microcontrôleur est caractérisé non
seulement par sa structure matérielle mais aussi par son jeu
d'instructions qui permet de traiter les données. Le PIC 16F84 a un jeu
d'instructions relativement limité mais possède une architecture
interne (RISC) qui permet une programmation efficace et rapide ( toutes les
instructions ,exceptées les sauts,s'exécute en un cycle d'horloge
).De plus,le microcontrôleur utilise (6) modes d'adressage
différents.
4.1. Les différents modes d'adressage
4.1.1. Adressage immédiat .
- Le code opératoire est suivi par l'opérande et ne
fait appel à aucune adresse .
- L'opérande est la valeur à utiliser par
l'instruction .le constructeur l'appelle« literal» et le note K .
Exemple :
MOVLW 0×34 ; charge la valeur hexadécimale 34 dans
l'accumulateur W avec MOV pour move, L pour literal (immédiat) et W pour
l'accumulateur w .
4.1.2. Adressage direct .
- Le code opératoire est suivi d'un octet non
signé qui est l'adresse effective (on appelle adresse effective
.l'adresse qui est directement manipulée par l'instruction.) de
l'opérande à traiter . L'opérande est l'adresse de la
valeur à utiliser par l'instruction. Exemple :
MOVF 0×5,W ; charge l'accumulateur W avec la donnée
située dans la case
mémoire 5 .
- Avec MOV pour move et F pour File (registre) .
4.1.3. Adressage indirect .
- L'adresse de l'opérande est cette fois écrite
avec un pointeur d'adresse .
- L'adressage indirect utilise deux registres du
microcontrôleur : INDF et FSR .
- Pour accéder à la donnée contenue dans
la case mémoire X , il suffit d'écrire dans le registre FSR
l'adresse X . En lisant le registre INDF ,on trouve la valeur contenue dans la
case mémoire X .
4.1.4. Adressage relatif .
- Ce mode d'adressage s'applique aux opérations de
branchement ou de saut CALL et GOTO . Il permet de faire exécuter des
instructions placées dans une autre portion de l'espace mémoire
de programme .
Exemple :
BOU decfsz Tl , f ; decremente T1 , si resultat
=
0
; saute 1 ' instruction
suivante
GOTO BOU ; branche a BOU
4.1.5. Mode manipulation de bit .
- Il permet de modifier un bit dans un registre . L'instruction a
besoin de l'adresse du registre et de la position du bit .
EXEMPLE :
BCF PORTA , 3 ; met à 0 le bit 3 du registre PORTA
BSF PORTB , 5 ; met à 1 le bit 5 du PORTB
4.1.6. Mode test de bit et branchement .
- Ce mode permet de tester la valeur d'un bit d'une donnée
en mémoire et d'effectuer ou non un branchement en fonction de
l'état de ce bit .
EXEMPLE :
BOU btfss INTCON , T0IF ; test si TMR0 a
débordé ?
GOTO BOU ; si non recommence
Bcf VERIN ; si oui avance verin
- Dans cet exemple l'instruction BTFSS teste la valeur du bit
TOIF du registre INTCON et effectue ou non un branchement à la
deuxième lige qui suit (bcf VERIN ) [3]
4.2. LES INSTRUCTIONS
4.2.1. L'INSTRUCTION « GOTO » ( Aller à
) . SYNTAX: GOTO K ; K est un label.
- Le programme saute à l'adresse K.
4.2.2. L'INSTRUCTION « INCF » (INCrement
File)
SYNTAX: INCF F,D ;(F) + 1 > (D) ; D=0 ou 1.
- La valeur contenue dans le registre fichier F est
incrémentée de 1. si D=0 ,le résultat sera alors dans
le registre W. D=1, le résultat est stocké dans le registre F.
- Les bits du STATUS affectes Z
4.2.3. L'INSTRUCTION « DECF »
(DECrement File)
SYNTAX: DECF F,D ; (F) - 1 > (D) ,D=0 ou 1
- La valeur contenue dans le registre fichier F est
décrémenté de 1. si D=0 ,le résultat sera alors
dans le registre W. D=1, le résultat est stocké dans le registre
F.
- Les bits du STATUS affectes Z
4.2.4. L'INSTRUCTION « MOVLW » (MOVe Literal
to W)
SYNTAX: k > (w) , MOVLW K ; K compris entre 0 et
255.
- Charge le registre W avec la valeur litéral K.
4.2.5. L'INSTRUCTION « MOVF » (MOVe
File)
SYNTAX: MOVF F, D ; (F) > (D) , D=0 ou 1.
- Le contenu du registre F est déplacé dans le
registre de
destination. si D=0, il sera alors
dans le registre W. si D=1, le résultat est stocké dans le
registre F.
- Les bits du STATUS affectes Z
4.2.6. L'INSTRUCTION « MOVWF » (MOVe W to
File) SYNTAX: MOVWF F ; (W) > (F)
- Déplace le contenu du registre W dans le registre
fichier F.
4.2.7. L'INSTRUCTION « ADDLW » (ADD Literal
and W)
SYNTAX: (w)+k->(w) ADDLW K ; K compris entre 0 et
255
- Additionne le contenu du registre W avec la valeur K. le
résultat se trouve dans le registre W.
- Les bits du STATUS affectes C Z DC
4.2.8. L'INSTRUCTION « ADDWF » (ADD W and
F)
SYNTAX: ADDWF F,D ,(w) + (f) > (d) ; D=0 ou 1.
- Additionne le contenu du registre W avec la valeur contenue
dans le registre fichier F. - Si D=0, alors le résultat sera dans le
registre W. si D=1 , le résultat est stocké dans le registre
F.
- Les bits du STATUS affectes C Z DC
4.2.9. L'INSTRUCTION « SUBLW » (SUBtract W
from Literal) SYNTAX: SUBLW , k - (w) > (w) K ; K compris
entre 0 et 255.
- Soustrait la valeur littérale K au registre W. le
résultat se trouve dans le registre W.
- Les bits du STATUS affectes : C Z DC
4.2.10. L'INSTRUCTION « SUBWF » (SUBtract W
from F)
SYNTAX: SUBWF F,D ; (F) - (W) > (D) ; D=0 ou 1.
- Si D=0, le résultat sera alors dans le registre W. si
D=1, le résultat est stocké dans le registre F.
- Les bits du STATUS affectes : C Z DC
4.2.11. L'INSTRUCTION « ANDLW » (AND Literal
with W)
SYNTAX: ANDLW K (w) et k > (w) ; K compris entre 0 et
255
- Réalise un ET logique entre la valeur du registre W et
la valeur littéral K. le résultat se trouve dans le registre
W.
- Les bits du STATUS affectes : Z
4.2.12. L'INSTRUCTION « ANDWF » (AND W with
F)
SYNTAX: ANDWF F,D ; (F) AND (W) > (D) ,D=0 ou 1.
- Réalise un ET logique entre le contenu du registre W
et la valeur contenue dans le registre fichier F. si D=0 , alors le
résultat sera dans le registre W. si D=1, le résultat est
stocké dans le registre F.
- Les bits du STATUS affectes : Z
4.2.13. L'INSTRUCTION « IORLW » ( Inclusive OR
Literal with W ) SYNTAX: (w) OR k > (w) , IORLW K ; K
compris entre 0 et 255
- Réalise un OU logique entre la valeur du registre W et
la valeur littéral. Le résultat se trouve dans le registre W.
- Les bits du STATUS affectes : Z
4.2.14. L'INSTRUCTION « IORWF » (Inclusive OR
W with File)
SYNTAX : IORWF F,D ;(W) OR (F) > (D) ;. D=0 ou 1.
- Réalise un OU logique entre le contenu du registre W
et la valeur contenue dans le registre fichier F. si D=0, le résultat
sera alors dans le registre W. si D=1, le résultat est stocké
dans le registre F.
- Les bits du STATUS affectes : Z
4.2.15. L'INSTRUCTION << XORLW >> (eXclusive
OR Literal with W ) SYNTAX: XORLW K , (W) XOR K > (W) ; K
compris entre 0 et 255.- Effectue un OU EXCLUSIF entre le contenu du
registre W et la valeur littéral K . le résultat se trouve dans
le registre W. Les bits du STATUS affectes : Z
4.2.16. L'INSTRUCTION << XORWF >> (eXclusive
OR W with F)
SYNTAX: XORWF F,D ; (W) XOR (F) > (D) ; D=0 ou 1.
- Effectue un OU exclusif entre le contenu du registre W et le
contenu du registre F. Si D=0, le résultat sera alors dans le registre
W. si D=1, le résultat est stocké dans le registre F.
- Les bits du STATUS affectes : Z
4.2.17. L'INSTRUCTION << BSF >> (Bit Set
F)
SYNTAX: BSF F,D ; Le bit n°D est mis a 1 dans la case
mémoire (F)
; D est evidemment compris entre 0 et 7 .
- Met à "1" le bit D du registre F.
4.2.18. L'INSTRUCTION << BCF >> (Bit Clear
F)
SYNTAX: BCF F,DIR ; Le bit n°D est mis a 0 dans la
case mémoire (F).
; D est evidemment compris entre 0 et 7 .
- Met à zéro le bit D du registre F.
4.2.19. L'INSTRUCTION << RLF >> ( ROTATE LEFT
THROUGH CARRY) SYNTAX: RLF F,D ; (F) Rotation gauche avec CARRY
-> (D) ; D = 0 ou 1 .
- Le contenu dans le registre fichier F est
décalé de 1 bit vers la gauche. - Le bit qui s'intercale est le
reflet du drapeau de
retenue. si D=0, le résultat sera
alors dans le registre W. si D=1, le résultat est stocké dans le
registre F.
EXEMPLE: SI C=1
MOVLW 00 ; stocke la valeur 00 dans W
MOVWF VAL ; stocke la valeur dans VAL
RLF VAL,0 ; effectue une rotation du registre F. le
résultat est stocké dans W. - Si le drapeau de retenue est
à 1, alors on aura dans W la valeur 01.
- Les bits du STATUS affectes : C
4.2.20. L'INSTRUCTION << RRF >> ( ROTATE
RIGHT THROUGH CARRY) SYNTAX: RRF F,D ; (F) Rotation droite avec
CARRY-> (D) =0 ou 1.
- Le contenu dans le registre fichier F est
décalé de 1 bit vers la droite . Le bit qui s'intercale est le
reflet du drapeau de
retenue. si D=0, le résultat sera
alors dans le registre W. Si D=1, le résultat est stocké dans le
registre F.
- Les bits du STATUS affectes : C
4.2.21. L'INSTRUCTION << BTFSC >> (Bit Test
F, Skip if Clear)
SYNTAX: BTFSC F,D ;. D compris entre 0 et 7.
- Si le bit D du registre F est à zéro, alors la
prochaine instruction est "sautée". EXEMPLE :
BTFSC VAL,3 ; Test le bit 3 du registre F.
ICI NOP ; Si le bit est à "0" alors cette instruction ne
sera pas
exécutée et passera directement à LA. NOP
4.2.22. L'INSTRUCTION << BTFSS >> (Bit Test
F, Skip if Set )
SYNTAX: BTFSS F,D ; D compris entre 0 et 7.
- Si le bit D du registre F est à "1" , alors la prochaine
instruction est "sautée".
4.2.23. L'INSTRUCTION << DECFSZ
>> (DECrement F, Skip if Z )
SYNTAX : DECFSZ F,D ; (F) -1 -> (D). SAUT SI (D) = 0 ;.
D=0 ou 1. -La valeur contenue dans le registre fichier F est
décrémentée de 1.Si D=0, alors le résultat sera
dans le registre W. si D=1,le résultat est stocké dans le
registre F. si le résultat est nul, alors l'instruction suivante est
sautée.
EXEMPLE:
MOVLW 0X1E ; stocke la valeur 30 dans W
MOVWF VAL ; stocke la valeur dans VAL
DECFSZ VAL ,0 ; décrémente F. le résultat
est stocké dans W. comme le résultat est nul alors :
ICI NOP ; le programme saute à l'adresse NOICI.
4.2.24. L'INSTRUCTION << INCFSZ >> (INCrement
F, Skip if Zero) SYNTAX: INCFSZ F,D ; (F) + 1 -> (D) : SAUT
SI (D) = 0 , D=0 ou 1.
- La valeur contenue dans le registre fichier Fest
incrémentée de 1. Si D=0, alors le résultat sera dans le
registre W. si D=1, le résultat est stocké dans le registre F.Si
le résultat est nul, l'instruction suivante est alors sautée.
4.2.25. L'INSTRUCTION << SWAPF
>> (SWAP nibbles in F)
-Inversion des B0 a B3 de (F) avec B4 a B7
SYNTAX : SWAPF F,D ; Inversion des B0 a B3 de (F) avec B4
a B7 ->(D)
; D=0 ou 1.
- Effectue une inversion des deux quartets du registre F. Si D=0
alors le résultat sera dans le registre W. Si D=1, le résultat
est stocké dans F
EXEMPLE:
MOVWF VAL ; VAL=0F
SWAPF VAL,1 ;VAL=F0
4.2.26. L'INSTRUCTION << CALL >> (CALL
subroutine )
SYNTAX: CALL K ; Appel de la sous-routine a l'adresse
étiquette.
; K est un label.
- Appelle le sous- programme k . Le PC est chargé avec
l'adresse du label , l'adresse de retour (PC+1) est stockée dans la
pile.
4.2.27. L'INSTRUCTION << RETURN >> (RETURN
from subroutine ) SYNTAX: RETURN
- Fin d'un sous- programme. Le PC est chargé avec
l'adresse contenue dans la pile.
4.2.28. L'INSTRUCTION << RETLW >> (RETurn
with Literal in W) SYNTAX: retlw k ; (w) = k puis return ; K
compris entre 0 et 255.
Instruction utilisée lors d'un retour d'un sous-programme
. Le registre W est chargé avec la valeur littérale K et le PC
avec la valeur de l'adresse de retour (la pile ).
EXEMPLE:
CALL LAS-BAS ; appelle le sous programme LAS-BAS.
; autres instructions.
LAS-BAS RETLW 0X30 ; le registre W est chargé avec la
valeur 30 ; et retour au programme principal.
4.2.29. L'INSTRUCTION << RETFIE >> (RETURN
FROM INTERRUPT) SYNTAX : RETFIE ; retour d'interruption .
- Fin d'une routine d'interruption . le PC est charge avec
l'adresse contenue dans la pile .
4.2.30. L'INSTRUCTION << CLRF >> (CLeaR F)
SYNTAX: CLRF F ; (F)=0 - Le contenu du registre F est
effacé.
- Les bits du STATUS affectes : Z
4.2.31. L'INSTRUCTION << CLRW >> (CLeaR W )
SYNTAXE: CLRW ; (W) = 0
- Cette instruction efface w .
- Les bits du STATUS affectes : Z
4.2.32. L'INSTRUCTION << CLRWDT >> (CLeaR
WATCHDOG )
SYNTAX: CLRWDT ; Remet le timer du Watchdog a 0 .
- Efface le WDT , Les bits TO et PD sont mis à "1".
4.2.33. L'INSTRUCTION << COMF >> (COMplement
F)
SYNTAX: COMF F,D ; NOT (F)>(D) , D=0 ou 1.
- Effectue le complément a 1 du registre fichier F. si D=0
, le résultat sera alors dans le registre W. si D=1, le résultat
est stocké dans le registre F.
- Les bits du STATUS affectes : Z
![](Etude-et-application-de-microcontroleur-16f8415.png)
4.2.34. L'INSTRUCTION << SLEEP
>> (MISE EN SOMMEIL)
SYNTAX: SLEEP ; Arret du PIC .
- Le microcontrôleur est en mode SLEPP. l'oscillateur est
arrêté. le bit TO est à "1". - Le bit PD est à "0".
Le WDT sont effacés.
4.2. 35. L'INSTRUCTION << NOP >> (NO
OPERATION )
SYNTAX: NOP ; Aucune opération
- Effectue aucune opération ( NO Operation).utilisé
dans des boucles de temporisation
. [1]
5. Le logiciel MPLAB :
- Est un logiciel outil de développement fourni
gratuitement par la société Microchip . Il comprend un
éditeur,un assembleur et un simulateur. Il permet la programmation des
composants ( PICs ) en connectant entre l'ordinateur et le programmateur a
l'aide d'un logiciel appelé "ICPROG" .
6. Le programmateur :
- Une fois le programme compilé, il faut le
transférer dans la mémoire du microcontrôleur. Pour cela il
vous faut ,Une petite interface matérielle (figure : 2-1 )
- Est l'élément qui permet de charger le programme
dans la mémoire du PIC. Il est relié à l'ordinateur par
une liaison série ou parallèle, le programmateur n'a pas les
supports pour tous les PICs
(Figure : 2-1 ) Le programmateur des PICs
7. Le logiciel ICPROG :
- Je vous conseille de loin ICPROG , c'est le meilleur logiciel
de programmation de PIC à l'heure actuelle.
8. Cahier des charges :
-A base de pic 16F84 nous gérons un afficheur à
cristaux liquides (LCD), seize caractères sur deux lignes pour afficher
un message.
- Avec bouton marche permet de lancer l'écriture de ce
message
- transformation des données sur huit bits
- Une led allumée pendant le temps d'écriture
- Un potentiomètre permet de régler le contraste de
l'afficheur
- Utilisant un oscillateur XT à quartz 4 MHZ pour cadence
le PIC .
- Utilisant battrait de 9 V et alimentation stabiliser fournir un
tension de 5V.
9. Afficheur LCD : 9.1. Introduction :
- Dans notre projet on utilise un afficheur à
cristaux liquides, donc il faut connaître le principe de
fonctionnement
- Les afficheurs à cristaux liquides ,
autrement appelés afficheurs LCD (Liquid Crystal Display) figure :2-2
.Sont des modules compacts intelligents et nécessitent peu de composants
externes pour un bon fonctionnement .Ils consomment relativement peu de 1
à 5 mA ; les afficheurs sont caractérisés par le nombre de
caractères affichables ainsi que par le nombre de lignes disponibles
.Dans notre exemple l'afficheur possède seize caractères sur deux
lignes,soit trente-deux caractères .
![](Etude-et-application-de-microcontroleur-16f8416.png)
(Figure : 2 -2 ) Afficheur à cristaux liquides 2X16
caractère
9.2. Brochage d'un afficheur :
-Un circuit intégré spécialisé est
chargé de la gestion du module . Il remplit une double fonction d'une
part il commande l'afficheur et de l'autre se charge de la communication avec
l'extérieur. Voire (figure : 2-3 )
![](Etude-et-application-de-microcontroleur-16f8417.png)
(Figure : 2-3) Brochage d'un afficheur à cristaux liquides
2X16 caractère
Broche
|
Nom
|
fonction
|
1
|
Vss
|
Masse
|
2
|
Vdd
|
Alimentation positive +5V
|
3
|
Vo
|
Cette tension permet, en la faisant varier entre 0 et +5V, le
réglage du contraste de l'afficheur.
|
|
|
Grâce à cette broche, l'afficheur est capable de
faire la différence
|
4
|
RS
|
entre une commande et une donnée. Un niveau bas indique
une commande et un niveau haut indique une donnée (affichage).
|
|
|
Lecture ou écriture (Read/Write)
|
5
|
R/W
|
0 : Écriture
|
|
|
1 : Lecture (le contrôleur nous offre la possibilité
de lire certain paramètres interne à l'afficheur.)
|
|
|
C'est l'horloge de l'afficheur,celle-ci va cadencer et valider
touts
|
6
|
E
|
les échange (transfert d'instruction ou bien pour
l'affichage d'un caractère).
|
7
|
D0
|
|
8
|
D1
|
|
Permettent de transmettre un ordre à l'afficheur selon un
code déterminé
|
9
|
D2
|
|
|
10
|
D3
|
Exemple : effacement.
|
11
|
D4
|
12
|
D5
|
|
13
|
D6
|
|
14
|
D7
|
|
15
|
A
|
Anode rétroéclairage (+5V)
|
16
|
K
|
Cathode rétroéclairage (masse)
|
(Tableau : 2-1 ) , Brochage d'un afficheur
9.3. Les caractères affichables :
-Les broches de données permettent également
d'afficher un caractère selon le code fournit avec l'afficheur , il est
ainsi possible d'afficher des caractères spéciaux . Ces codes
sont mémorisés dans la CG RAM (Caractère
Générator ), chaque caractère est formé sur une
matrice 5*8 points, Voire (Tableau 2-2).
- Le transfert peut se faire sur l'ensemble des huit bites (D0
à D7) ou bien sur quatre bits (D4 à D7) , dans ce dernier cas on
économise quatre lignes du PIC mais il faut réaliser le transfert
en deux fois , le choix de huit lignes ou quatre lignes se fait par programme
selon le positionnement de certains bits (voir le tableaux qui suivent).
![](Etude-et-application-de-microcontroleur-16f8418.png)
(Tableau 2-2), les caractères affichables.)
10. Organigramme :
|
COMMENTAIRES
-On utilisera les registres
retard1, retard2 .
-Le port B dans notre exemple est Programmé en sortie et
le port A Partiellement en sortie (RA4 en entrée). -On paramètre
l'afficheur en 2 lignes Validation afficheur et curseur
8 bits de données Effacement de l'afficheur .
Déplacement du curseur vers la droite
-Si l'inter est actionné on affiche les
caractères.
-On envoie le cod ASCII du 1er caractère à
afficher.
-On valide avec une impulsion sur la broche e ( RA2 du port A )
.
-On envoie le cod ASCII du nième caractère à
afficher.
-On valide avec une impulsion sur la broche e ( RA2 du port A )
.
-Si l'inter est relâche on refait
l'initialisation de l'afficheur puis on recommence le cycle
d'affichage .
|
![](Etude-et-application-de-microcontroleur-16f8420.png)
Application de PIC 16F84
1. L'alimentation :
- Dans le cas où nous ne possédons pas
d'alimentation stabilisée, il est possible d'alimenter le montage avec
une pile 9 v suivie par un régulateur 5 v du type 7805 (figure : 3-1 )
.
![](Etude-et-application-de-microcontroleur-16f8421.png)
(Figure : 3-1 ) Alimentation par une pile 9 v suivie d'un
régulateur 5v du type 7805 .
![](Etude-et-application-de-microcontroleur-16f8422.png)
1.1 Les composants de l'alimentation :
- Le régulateur :permet de fournir un
5V stable à partir du 9V de la pile. - La patte de gauche est
l'entrée 9V,la patte du milieu la masse commune et la droite la sortie
5V.
- Ce modèle tient 500mA .
- Facilité d'emploi ( peu de composants externes ) .
- Protection contre les surcharges thermiques.
Régulateur
7805
- diode : 1N4001,en série avec la pile 9
v, protège le montage
contre les inversions de polarité .
- Les condensateurs : permet de filtrer
l'alimentation de 5 v .
? Liste des composants de l'alimentation :
- pile 9 v
- 1 diode : 1N4001.
- C1 : 25 v 470 ìf
- : 63 v 10 ìf
- C3,C4 : 220 nf
- Régulateur type 7805 .
2. l'horloge système :
- Le fonctionnement de l'horloge peut être
réalisée avec un quartz : 4MHz , la fréquence maximale
d'utilisation va dépendre du microcontrôleur utilisé . En
utilise ici un résonateur quartz ou céramique 4MHz pour
réalisée un oscillateur (le coeur du microcontrôleur) ,
c'est lui qui cadence le déroulement du programme . Il fournir un signal
carré périodique au microcontrôleur. (Figure : 3-2 ) .
![](Etude-et-application-de-microcontroleur-16f8423.png)
![](Etude-et-application-de-microcontroleur-16f8424.png)
(Figure : 3-2 ) XT : L'oscillateur moyenne fréquence
200KHz-4MHz
3. Schéma de principe du montage .
- Le schéma de principe ( figure : 3-3 ) .
3.1. Les composants du montage :
- On choisira un quartz de 4 MHz pour cadencer le PIC, avec deux
condensateurs de
15 pf.
- Une résistance de 470Ù doit être
insérée avec led pour limiter le courant.
- Une résistance de rappel impose un 0 v sur
l'entrée du PIC reliée à l'interrupteur.
- Un condensateur de 22 ìf ou plus permet de filtrer
l'alimentation de 5 v
- Un circuit RC ,composé de la résistance de 1
kÙ avec un condensateur de 1 ìf, permet une raz à la mise
sous tension sur la broche MCLR du PIC.
- Un potentiomètre permet de régler le contraste de
l'afficheur insérée avec broche 3 (V0 ).
- Les connexions du port B avec l'afficheur sont
présentées a la figure président.
- Liste des composants :
R1, R2 : 1kÙ ( marron noir rouge )
R3 : 470 Ù ( jaune violet marron )
P1 : potentiomètre vertical pour CI 10 kÙ
C1 : 25 v 1 ìf , condensateur électrochimique
à sortie radiale .
: 63 v 22 ìf , condensateur électrochimique
à sortie radiale.
C3,C4 : 15 pf céramique
-Semi-conducteur.
Led 3 mm ( vert )
-Circuit intégré
IC1 : PIC 16F84
-Divers
1 afficheur à cristaux liquides 2x16 caractère (
accès parallèle )
1 mini interrupteur
1 support tulipe 18 broches
Q1 : quartz 4MHz .
4. Câblage de la plaque d'essai :
(La photo : a ) présentent l'implantation des composants
sur la plaque d'essai .
![](Etude-et-application-de-microcontroleur-16f8425.png)
5. Le typon du circuit imprimé :
![](Etude-et-application-de-microcontroleur-16f8426.png)
6. l'implantation des composants sur circuit
imprimé :
(La photo : b) présentent l'implantation des composants
sur circuit imprimé.
![](Etude-et-application-de-microcontroleur-16f8427.png)
(La photo : b ) l'implantation des composants sur circuit
imprimé
![](Etude-et-application-de-microcontroleur-16f8428.png)
Autre application par PIC 16F84
1. Le décodeur pour 7 segments :
- A base de PIC 16f84 permet de commander les segments d'un
afficheur. - Le programme consiste à visualiser les nombres
décimal 0 à 9 sur l'afficheur 7 segments.
- Un bouton marche permet de lancer le comptage sur l'afficheur,
la vitesse de défilement est modifiable par programme.
1.1 Schéma de principe du montage.
![](Etude-et-application-de-microcontroleur-16f8429.png)
1.2. Organigramme fonctionnel :
![](Etude-et-application-de-microcontroleur-16f8430.png)
COMMENTAIRE
On utilisera les registres :
Retard1,retard2, et une variable INTER0.
Le port A dans notre exemple est programmé en
entrée et le port B en sortie ( vers la led ). On impose un "0" vers les
segments .
On impose un "0" sur l'afficheur au départ
On vérifier que l'inter "Marche"
Est appuyé pour lancer le programme.
Pour allumer le "1" , il faut RB1=RB7= 1 Appel sous programme
de temporisation Pour allumer le "2" , il faut RB6=RB7= RB4=RB3= RB2= 1
Appel sous programme de temporisation Pour allumer le "3" , il
faut
RB6=RB7= RB4=RB1= RB2= 1
Appel sous programme de temporisation Pour allumer le "4" , il
faut RB4= RB7=RB5= RB1= 1
Appel sous programme de temporisation Pour allumer le "5" , il
faut
RB6=RB5= RB4=RB1= RB2= 1
Appel sous programme de temporisation Pour allumer le "6" , il
faut
RB6=RB5= RB4=RB3= RB2=RB1= 1 Appel sous programme de
temporisation Pour allumer le "7" , il faut
RB7=RB6= RB1= 1
Appel sous programme de temporisation Pour allumer le "8" , il
faut RB7= RB6=RB5= RB4=RB3= RB2=RB1= 1 Appel sous programme de temporisation
Pour allumer le "9" , il faut
RB7=RB6= RB5=RB4= RB2=RB1= 1 Appel sous programme de
temporisation
1.3. Câblage de la plaque d'essai :
-On choisira un quartz de 4 MHz pour cadencer le PIC, avec deux
condensateurs de 15 pf.
-Une résistance de 470Ù doit être
insérée avec les 7 segments et le point décimal pour
limiter le courant dans l'afficheur.
- Une résistance de rappel impose un 0 v sur
l'entrée du PIC reliée à l'interrupteur. -Un condensateur
de 10 ìf ou plus permet de filtrer l'alimentation de 5 v
-Un circuit RC ,composé de la résistance de 1
kÙ avec un condensateur de 1 ìf, permet une raz à la mise
sous tension sur la broche MCLR du PIC.
-Les connexions du port B avec l'afficheur sont
présentées a la figure président .
1.3.1. La plaque d'essai :
( La photo : c ) présentent l'implantation des composants
sur la plaque d'essai .
![](Etude-et-application-de-microcontroleur-16f8431.png)
( Photo : c ) le montage sur la plaque d'essai pour afficheur 7
segments
2. Le compteur binaire :
- A base de PIC 16F84 on fait un compteur
binaire .
- Un bouton marche permet de lancer le comptage par les huit
leds, la vitesse de défilement est modifiable par programme .
- Le montage c'est le même montage de l'application
d'afficheur 7 segments,on remplace les 7 segments par les leds .
2.1. Schéma de principe du montage .
![](Etude-et-application-de-microcontroleur-16f8432.png)
( figure : 4-3 ) Schéma de principe du compteur binaire
2.2. Organigramme fonctionnel :
Déclaration des variables utilisées
Initialisation des ports A et B
Leds éteintes et registre memo = 0
![](Etude-et-application-de-microcontroleur-16f8433.png)
Le bouton NON
Marche-arrêt
est appuyé
?
OUI
Memo est dirigé sur le port B
Appel de la temporisation
Incrémentation de memo
![](Etude-et-application-de-microcontroleur-16f8434.png)
NON
Retard2 = 0 ?
OUI
Sous-programme de temporisation
Chargement de retard1 et retard2
![](Etude-et-application-de-microcontroleur-16f8435.png)
Décrémentation retard 1
![](Etude-et-application-de-microcontroleur-16f8436.png)
NON
Retard1 = 0 ?
OUI
Chargement de retard1
Décrémentation retard2
COMMENTAIRES
-On utilisera les registres :
retard1, retard2 et memo.
Le port A dans notre exemple est programmé en
entrée et le port B en sortie ( vers la led ). Initialisation : on
éteint toutes les leds
et le registre memo est initialisé.
-On vérifie que l'inter "Marche"
est appuyé pour lancer le programme .
-Le contenu du registre memo est copié dans le registre W
dont le contenu est dirigé sur le port B ( vres les leds ) .
-Appel de la temporisation
-Le contenu du registre memo est additionné avec 1 .
-On charge retard1 et retard2 avec FF ( 255 ) Retard1 - 1
-Si le contenu du registre retard1 = 0, alors on continue le
programme .
-On recharge retard1 avec FF (255) . Retard2 - 1
-Si le contenu du registre retard2 = 0, alors on continue le
programme .
-Retour de sous- programme avec L'instruction " RETURN " .
2.3. Câblage de la plaque d'essai :
- Pour compteur binaire on utilise le même principe du
décodeur 7 segments . 2.3.1 La plaque d'essai
( La photo : d ) présentent l'implantation des composants
sur la plaque d'essai .
![](Etude-et-application-de-microcontroleur-16f8437.png)
( Photo : d ) le montage sur la plaque d'essai pour compteur
binaire
![](Etude-et-application-de-microcontroleur-16f8438.png)
- Aujourd'hui les PICs choisis par les enseignants de certaines
écoles et universités comme base dans la réalisation des
projets d'étudiants;
Et la plupart des réalisations électroniques dans
de nombreux secteurs de l'industrie font appel à ces composants .
Le PIC16F84 C'est un organe de grande famille des
microcontrôleurs de la société Microchip. Il peut
être utilisé dans plusieurs applications
malgré c'est le simple microcontrôleur par
à port à sa famille; Il y a des autres PICs qui possèdent
mémoire large, plusieurs bronches et fonctions. Il son très
développé et complexe c'est-à-dire ils sont capables
à fonctionner avec bon efficacité .
De façon générale pour faire un projet par
le PIC 16F84 .Il faut suivre les étapes suivantes :
L'étude de la faisabilité le PIC 16F84 dans le
projet .
La programmation de PIC dépend de deux logiciels;
MPLAB pour l'écriture et la compilation de programme et ICIPROG pour
entré le programme dans la mémoire du PIC .
Finalement la vérification pratique de son fonctionnement
.
A travers cette étude nous avons appris beaucoup
d'information sur l'utilisations et fonctionnement des PICs .
Enfin on espère que ce travail sera une
référence pour les futures recherches plus approfondis des
étudiants.
Annexe
1) les instructions
Mnémonique
|
Instruction sur les registres (octets)
|
Bits modifiés
|
ADDWF f,d
|
d:=w+f ; ajoute w au contenu de f
|
C,DC,Z
|
ANDWF f,d
|
d:=w AND f ; ET entre w et f
|
Z
|
CLRF f
|
F:=0 ; met à 0 f
|
Z
|
CLRW
|
w:=0 ; met à 0 w
|
Z
|
COMF f,d
|
D:=NOT(f) ; complémente f
|
Z
|
DECF f,d
|
d:=f - 1 ; décrémente f
|
Z
|
DECFSZ f,d
|
d:=f - 1 ; décrémente f et saut si le
résultat =0
|
-
|
INCF f,d
|
d:=f +1 ; incrémente f
|
Z
|
INCFSZ f,d
|
d:=f +1 ; incrémente f et saut si le résultat =d
|
-
|
IORWF f,d
|
d:=w OR f ; OU entre w et f résultat dans d
|
Z
|
MOVF f,d
|
d:=f ; change le contenu de f dans d
|
Z
|
MOVWF f
|
f:=w ; sauve w dans f (direct)
|
-
|
NOP
|
n'effectue aucune opération
|
-
|
RLF f,d
|
d=f SHL 1; rotation à gauche avec la retenue
|
C
|
RRF f,d
|
d=f SHL 1; rotation à droite avec la retenue
|
C
|
SUBWF f,d
|
d:= f - w ; soustrait W de f (direct)
|
C,DC,Z
|
SWAPF f,d
|
d:=f[4..7]< - - >f[0..3]; inverse les quartets
|
-
|
XORWF f,d
|
d:=wXORf ; OU exclusif entre w et f .
|
Z
|
|
Instruction sur les registres (bit par bit)
|
|
BCF f,d
|
f[b]:=0 ; met à 0 le bit b de f
|
-
|
BSF f,d
|
f[b]:=1 ; met à 1 le bit b de f
|
-
|
BTFSC f,d
|
teste le bit b de f ; saut si le bit est à 0
|
-
|
BTFSS f,d
|
teste le bit b de f ; saut si le bit est à 1
|
-
|
|
Instruction de contrôle et branchement
|
|
ADDLW k
|
W:=w+k;ajoute k à w
|
C,DC,Z
|
ANDLw k
|
W:=w AND k ; ET entre w et k
|
Z
|
CALL k
|
Appel un sous programme
|
-
|
CLRwDT
|
Remet à 0 le compteur du chien de garde
|
TO,PD
|
GOTO k
|
Se branche à l'adresse k
|
-
|
IORLw k
|
w:=w OR k ; OU entre w et k
|
Z
|
MOVLw k
|
w:=k ; charge k dans w
|
-
|
RETFIE
|
Retour d'interruption
|
-
|
RETLw k
|
w:=k, puis effectue un retour de sous programme
|
-
|
RETURN
|
effectue un retour de sous programme
|
-
|
SLEEP
|
Place le circuit en mode sommeil et stoppe 'oscillateur
|
TO,PD
|
SUBw k
|
w:= k - w ; soustrait w de k
|
C,DC,Z
|
XORLw k
|
w:=w XOR k ; OU exclusif entre w et k
|
Z
|
F: adresse 7 bits k: valeur
immediate 8 bits ( 0 à 127) TO: Time Out
PD: Power Down C: Carry
(retenue) DC: Demi carry d = 0, destination
w,f
2) Le programme :
; Application avec un PIC : SOYEZ LES BIENVENUS
; 2X16 caractères ;Titre :Soyez les bienvenus
;Date : 06 mai 2007
; Auteur : B.B
; PIC utilisé : PIC 16F84A
; Ce montage d'initiation à base de PIC 16F84 permet de
gérer ;un afficheur de deux fois 16 caractères à
accès parallèle .
;dans ce montage on affichera un message dès que
l'interrupteur ;marche - arrêt sera actionné .
; configuration :
;les broches rb0 à rb7 sont configurées en sortie
elles pilotent ;les broches DB0 à DB7 de l'afficheur .
;les broches RA0 à RA3 sont en sortie la broche RA2 pilote
;la broche RS de l'afficheur
;la broche RA4 est en entrée elle est connectée
à l'interrupteur ;marche - arrêt .
; Directive d'assemblage pour MPLAB
list p = 16f84A
#include p16f84A.inc
_configH3FF9
; Définition des constants
#define F 0x01 ;variable F=1
#define inter 0x04 ;inter = 4 (broche RA4 )
#define rs 0x03 ;la broche rs est sur RA3
#define e 0x02 ;la broche e est sur RA2
; Définition des registres temporaires
retard1 EQU 0x0C ;le registre temporaire retard1
;pour la temporisation
retard2 EQU 0x0D ;le registre temporaire retard2
;pour la temporisation ; Numéro de version
org h'2100'
de "Soyez les bienvenus ver 1.0 06/05/07"
; Programme principal
ORG 0
; Programme d'init
bsf STATUS,5 ;on met à 1 le 5eme bit du registre status
;pour accéder à la 2eme page mémoire
; ( pour trisa et trisb )
MOVLW B'00000000' ; rb0 - rb7 en sortie
MOVWF TRISB ;on met 00 dans le port b il est programmé
; en sortie
;en sortie ra4 en entrée
bcf STATUS,5 ;on remet à 0 le 5eme bit du registre
;status pour accéder à la 1ere page
mémoire
clrf PORTA
clrf PORTB
call top_h ;impulsion d'horloge
; Configuration de l'afficheur ;mode de fonctionnement 8 bits
de données
init
bsf PORTA,e ;le bit e est mis à 1
bcf PORTA,rs ;la broche rs de l'afficheur à 0
;mode commande
MOVLW B'00111000' ;on met 38 dans le registre W
MOVWF PORTB ;accès 8 bites , 2 lignes pour l'afficheur
Call top_h
MOVLW B'00000001' ;on met 01 dans le registre W
MOVWF PORTB ;reset l'afficheur (clear display ) Call top_h
MOVLW B'00001110' ;on met 0E dans le register W
MOVWF PORTB ;display 'on' et cursor 'on'
Call top_h ;impulsion d'horloge
MOVLW B'00000110' ;on met 06 dans le register W
MOVWF PORTB ;incrémentation du curseur vers la droite
Call top_h ;impulsion d'horloge
MOVLW B'10000101' ;on met la dd ram à l'adresse 05
MOVWF PORTB ;le curseur clignote à la lere rangée
digit 6
Call top_h ;impulsion d'horloge
bsf PORTA,rs ;on repasse la broche rs de l'afficheur à
1
;pour le fonctionnement normal en data ; Attente de l'appui sur
l'inter debut
btfsc PORTA,inter ;interrupteur marche - arrêt
appuyé ?
;si oui on va à l'étiquette affiche 1
goto affiche
GOTO debut
; top d'horloge
top_h
call tempo ;on appel le sous-programme de
;temporisation
bcf PORTA,e ;le bit e est mis à 0
call tempo
bsf PORTA,e ;le bit e est mis à 1
return
; Temporisation courte T1
tempo
MOVLW 0x75 ;on met 75 dans le registre W
MOVWF retard1 ;on met W dans le registre retard1
MOVWF retard2 ;on met W dans le registre retard2
attente
DECFSZ retard],F ;on décrémente retard] et on
saute
;la prochaine instruction si
GOTO attente ;le registre retard] = 0 sinon retour à
;l'étiquette 'attente'
movlw 0x90 ;on recharge retard] avec 90
movwf retard]
DECFSZ retard2,F ;on décrémente retard2 et on
saute
;la prochaine instruction si
GOTO attente ;le registre retard2 = 0 sinon retour à
;l'étiquette 'attente'
RETURN ; retour au programme principal après
;l'instruction CALL
affiche
; Envoie du message sur l'afficheur
;le message est envoyé caractère par
caractère
; 'SOYEZ LES BIENVENUS'
bsf PORTA,0 ;on allume la led connectée sur RA0
MOVLW 'S' ;on met le caractère 'S' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h ;impulsion d'horloge
MOVLW 'O' ;on met le caractère 'O' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'y' ;on met le caractère 'y' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'E' ;on met le caractère 'E' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'Z' ;on met le caractère 'Z' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW ' ` ;on met le caractère ' ' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
;saut sur la 2eme rangée
bcf PORTA,rs ;on repasse la broche rs de l'afficheur à
0
;pour envoyer une commande
MOVLW B'0]00000]' ;on met la dd ram à l'adresse 4]
MOVWF PORTB ;le curseur se trouve donc sur la 2eme
;rangée digit 2
call top_h
bsf PORTA,rs ;on repasse la broche rs de l'afficheur à
1
;pour le fonctionnement normal en data
MOVLW 'L' ;on met le caractère 'L' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'E' ;on met le caractère 'E' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'S' ;on met le caractère 'S' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW ' ' ;on met le caractère ' ' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'B' ;on met le caractère 'B' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'I' ;on met le caractère 'I' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'E' ;on met le caractère 'E' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'N' ;on met le caractère 'N' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'V' ;on met le caractère 'v' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'E' ;on met le caractère 'E ' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'N' ;on met le caractère 'N ' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'U' ;on met le caractère 'U' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
MOVLW 'S' ;on met le caractère 'S ' dans le registre W
MOVWF PORTB ;on transfert le contenu du registre W sur
;le port B ( vers l'afficheur )
call top_h
boucle
btfsc PORTA,inter ;interrupteur marche - arrêt
appuyé ?
;si oui on va à l'étiquette boucle
goto boucle
bcf PORTA,0 ;on éteint la led
GOTO init ;on retourne à l'init de l'afficheur
END
3) Pour débuter avec MPLAB
![](Etude-et-application-de-microcontroleur-16f8439.png)
- MPLAB est un outil fournit gratuitement par la
société Microchip, Dans un premier temps si vous ne
possédez pas le logiciel connecter vous sur
www.microchip.com afin
de le télécharger.
- Dans cette page vous trouverez les vues d'écran vous
permettant de créer une application
- Attention selon les versions de MPLAB certains écrans
risquent de changer
![](Etude-et-application-de-microcontroleur-16f8440.png)
1 - Creation d 'une application
· Vous avez téléchargez MPLAB, Lancer
MPLAB.exe vous visualisez alors cet écran :
![](Etude-et-application-de-microcontroleur-16f8441.png)
· Dans le menu project cliquez sur new project et donnez un
nom à votre future application ( dans l ' exemple essai.pjt ) puis
cliquez sur "OK"
![](Etude-et-application-de-microcontroleur-16f8442.png)
· Une fois le nom donné cet écran
apparaît, vous devez sélectionner 'éditeur' et le pic sur
lequel vous travaillez dans l ' exemple "Editor Only" et "PIC 16F84A" , pour
changer de micro contrôleur cliquez sur le bouton Change... et choisissez
votre option.
![](Etude-et-application-de-microcontroleur-16f8443.png)
· Cliquez ensuite sur le nom dans la fenêtre du bas (
dans l 'exemple essai.hex ) puis cliquez sur "Node Properties"
![](Etude-et-application-de-microcontroleur-16f8444.png)
· Cet écran apparaît sélectionnez les
options indiquées ci-dessous et cliquez sur le bouton "OK"
![](Etude-et-application-de-microcontroleur-16f8445.png)
· En validant , vous revenez alors à l '
écran précédent, cliquez alors sur le bouton "Add Node..."
et indiquez le nom du fichier assembleur que vous allez créez ( dans l '
exemple 'essai.asm' ) puis validez avec "OK".
![](Etude-et-application-de-microcontroleur-16f8446.png)
· Vous devez alors avoir cet écran :
![](Etude-et-application-de-microcontroleur-16f8447.png)
· Cliquez sur le bouton "OK vous revenez alors au premier
écran. Cliquez sur "file" puis new, une fenêtre vous permet alors
de commencer à tapez votre source en assembleur :
![](Etude-et-application-de-microcontroleur-16f8448.png)
· Une fois votre source tapez cliquez sur 'file' et
'save as' et entrez le nom de votre fichier source dans notre exemple se sera
'essai.asm'
![](Etude-et-application-de-microcontroleur-16f8449.png)
· Il vous reste maintenant à compiler votre source
afin de créer un fichier 'hex' que vous pourrez
télécharger dans la mémoire du pic. Pour se faire cliquez
dans le menu "Project' puis "Make project" vous obtenez alors l ' écran
suivant :
![](Etude-et-application-de-microcontroleur-16f8450.png)
· Si tout est ok c 'est à dire qu 'il y a aucune
erreur de syntaxe vous obtenez l ' écran suivant :
![](Etude-et-application-de-microcontroleur-16f8451.png)
· La compilation est terminée , le fichier
"essai.hex" dans notre exemple est disponible dans le répertoire de
MPLAB. Si vous possédez un logiciel de programmation tel que ICPROG.EXE
par exemple cliquez sur "ouvrir" puis sélectionnez votre fichier
"essai.hex" afin de le transférer vers la mémoire du PIC à
programmer.
· Dans le cas ou il y a des erreurs le logiciel MPLAB
vous indique la ligne à laquelle se trouve l'erreur de syntaxe.
4) Le logiciel ICPROG :
- Un logiciel qui assure le transfert des données, entre
l'ordinateur et le microcontrôleur.
Lancer le logiciel ICPROG vous visualisez alors cet écran
:
![](Etude-et-application-de-microcontroleur-16f8452.png)
Dans le menu settings cliquez sur" hardware "et choser votre
com , votre PIC et votre oscillateur . Pour efface la mémoire du PIC
cliquez sur "Erase All " , et pour programmer le PIC cliquez sur "Program All
".
![](Etude-et-application-de-microcontroleur-16f8453.png)
[1] : La programmation des PICs . BIGONOFF Révision 6 ;
Edition : [2001].
[2] : Apprendre la programmation des PICs . PASCAL MAYEUX DUNOD
; Edition : [2002].
[3] : Les microcontrôleurs PIC . BERNARD BÉGHYN
HERMES-SCIENCE ; Edition : [2003].
Les sites :
- membres . lycos . fr /
Pmonphe / Chapitre / PIC
16F84. - www . microchip .com
-
www.pay.may.chez-alice.fr
tous les composants électroniques utilisés
disponibles chez:
ADC Electronique rue mostaganem ORAN tél :
041291515 / 041292626
TELECT2000 07 bouleverd emir abdelkader SIDI BEL
ABBES
Tél : 048549016
:ÉÈáØáÇ ????
Éã?Ç åÐ
|
??? ???? æ
|
ÚÇäáÇ
ãáÚáÇ ???
|
???? ?? íáÅ
|
ÉÇÏã
ÉÑßÐãáÇ åÐ
|
??? ÁÇÚÏáÇ ????
ìäãÊäæ ??????? ??? ?????
?? ÁÇØÎ ??? íæÊÍÊ
ÏÞæ
|