WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Etude et application de microcontroleur 16f84

( Télécharger le fichier original )
par Mustapha BOUZIANE
Université de Mascara, Algérie - Génie électrique et électronique 2007
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

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

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

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

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

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

( 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 ).

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

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

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

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

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]

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

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 .

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

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 .

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

(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).

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

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

(Figure : 3-1 ) Alimentation par une pile 9 v suivie d'un régulateur 5v du type 7805 .

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

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

5. Le typon du circuit imprimé :

6. l'implantation des composants sur circuit imprimé :

(La photo : b) présentent l'implantation des composants sur circuit imprimé.

(La photo : b ) l'implantation des composants sur circuit imprimé

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.

1.2. Organigramme fonctionnel :

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 .

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

( figure : 4-3 ) Schéma de principe du compteur binaire

2.2. Organigramme fonctionnel :

État initial

Déclaration des variables utilisées

Initialisation des ports A et B

Leds éteintes et registre memo = 0

Le bouton NON

Marche-arrêt

est appuyé

?

OUI

Memo est dirigé sur le port B

Appel de la temporisation

Incrémentation de memo

NON

Retard2
= 0 ?

OUI

Sous-programme de temporisation

Chargement de retard1 et retard2

Décrémentation retard 1

NON

Retard1
= 0 ?

OUI

Chargement de retard1

Décrémentation retard2

Retour de sous-programme

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 .

( Photo : d ) le montage sur la plaque d'essai pour compteur binaire

- 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

- 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

1 - Creation d 'une application

· Vous avez téléchargez MPLAB, Lancer MPLAB.exe vous visualisez alors cet écran :

· Dans le menu project cliquez sur new project et donnez un nom à votre future application ( dans l ' exemple essai.pjt ) puis cliquez sur "OK"


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

· Cliquez ensuite sur le nom dans la fenêtre du bas ( dans l 'exemple essai.hex ) puis cliquez sur "Node Properties"

· Cet écran apparaît sélectionnez les options indiquées ci-dessous et cliquez sur le bouton "OK"


· 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".

· Vous devez alors avoir cet écran :

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


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

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

· Si tout est ok c 'est à dire qu 'il y a aucune erreur de syntaxe vous obtenez l ' écran suivant :


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

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

[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

:ÉÈáØáÇ ????

Éã?Ç åÐ

??? ???? æ

ÚÇäáÇ ãáÚáÇ ???

???? ?? íáÅ

ÉÇÏã ÉÑßÐãáÇ åÐ

??? ÁÇÚÏáÇ ???? ìäãÊäæ ??????? ??? ????? ?? ÁÇØÎ ??? íæÊÍÊ ÏÞæ






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Le doute est le commencement de la sagesse"   Aristote