You are on page 1of 88

les microcontrleurs Microchip (PIC) de moyenne gamme (MID-RANGE).

PIC16F84
A.MOUHSEN

A.U:2011-2012

Un systme informatique en fonctionnement ralise des tches pour lesquelles il a t programm.

Bus d adresses Bus de donnes Bus de commandes

Sorties
Microprocesseur

ROM

RAM

Coupleur d entre sortie

Entres

Microprocesseur et circuits ddis

Microcontrleur

Les microcontrleurs Les microcontrleurs sont des composants lectroniques programmables. Ils regroupent dans un seul botier relativement compacte, un processeur, de la mmoire, et des priphriques externes permettant d'tablir une communication avec l'extrieur. Il existe des dizaines de modles : Les 68HC11 de Motorola Les 8051 d'Intel Les AVR d'ATMEL Les PIC de Microchip Toutes les spcification des diffrents microcontrleur se trouvent dans des documents appel Datasheet, que l'on peut trouver sur les sites de chacun des constructeurs.

Les PIC 16FXX

On peut trouver 3 familles principales : - Les 12F, qui embarquent peu de mmoire, et qui correspondent la classe des petits microcontrleurs. - Les 16F, qui correspondent la classe moyenne, et qui embarquent suffisement de mmoire pour crer un trs grand nombre d'application diverses et varis. - Les 18F, qui possdent plus d'instructions et de mmoire, et qui serviront pour des applications un peu plus consquentes.

ORGANISATION de la MEMOIRE DATA : Elle est constitue de deux zones : - La zone SFR (Special function registers) qui contient les registres de configuration et de fonction du microcontrleur. - La zone GPR ( General Purpose Register ) qui contient la RAM.

Elle est dcoupe en deux pages : Bank 0 et Bank 1.

REGISTRE INDF et FSR

Laccs aux registres et RAM se par utilisation du registre FSR sur 8 bits. On crit dans ce registre l'adresse de la zone SFR ou GPR que l'on veut atteindre. La donne lire ou crire dans le registre slectionn indirectement est accessible par le registre INDF l'adresse h'00' ou h'80'.

LE TIMER Le compteur/Timer TMR0 a les caractristiques suivantes : - Compteur sur 8 bits. - Lecture / criture de TMR0. - Prdiviseur 8 bits programmable. - Choix de l'horloge : interne en Timer et externe en compteur. - Interruption au dbordement ( passage de FF 00). - Choix du front de l'horloge en mode horloge externe. Tous les bits de configuration de TMR0 sont dans le registre OPTIONen h'81'. Le registre TMR0 est l'adresse h'01'.

Mode TIMER : Le choix de ce mode se fait par : TOCS = 0 (b5 de OPTION). TMR0 est incrment chaque cycle instruction ( Fosc/4), en considrant le prdiviseur avec un rapport de 1. Mode COMPTEUR : Ce mode est slectionn si TOCS = 1. TMR0 est alors incrment chaque front montant ou descendant sur la broche PA4/CLK (pin3). Le choix du front est fait par le bit TOSE ( b4 de OPTION). Si TOSE = 0 le compteur s'incrmente chaque front montant. Si TOSE = 1 c'est le front descendant qui incrmente le compteur.

LE PREDIVISEUR : Il est partag entre le Watchdog et TMR0. L'affectation se fait par le bit PSA (b3 de OPTION). Si PSA = 0 le prdiviseur est affect TMR0. Le choix du rapport de division se fait avec les bits PS2, PS1 et PS0 ( b2, b1 et b0 de OPTION). Si PSA = 1 le prdiviseur est affect au Watchdog et le rapport de division pour TMR0 est fix 1.

Ce registre en lecture criture permet de configurer les diffrentes sources d'interruption.

Bit 4 : INTE = RB0/Int Interrup Enable bit. 1 = Autorise les interruptions sur la broche : PB0 0 = Dsactive les interruptions sur la broche : PB0 Bit 3 : RBIE = RB Port Change Interrup Enable bit. 1 = Autorise les interruptions par changement d'tat du Port B (PB4 PB7). 0 = Dsactive les interruptions par changement d'tat du Port B (PB4 PB7). Bit 2 : TOIF = Timer TMR0 Overflow Interrup Flag bit. 1 = Le Timer dbord. Ce flag doit tre remis zro par programme. 0 = Le Timer n'a pas dbord. Bit 1 : INTF = RB0/Int Interrup Flag bit. 1 = Une interruption sur la broche PB0 est survenue 0 = Pas d' interruption sur la broche PB0.

Bit 0 : RBIF = RB Port Change Interrup Flag bit. Ce flag doit tre remis zro par programme. 1 = Quand au moins une entre du port B (de PB4 PB7) a chang d'tat. 0 = Aucune entre de PB4 PB7 n'a chang d'tat.

PORTA (h05) et TRISA (h85) : Ce port bidirectionnel est constitu de 5 bits. Le registre de direction correspondant est TRISA. Quand on crit un "1" dans TRISA, le bit correspondant du PORTA est configur en ENTREE, et le driver de sortie est plac en haute impdance. Si on crit un "0", le port devient une SORTIE, et le contenu du latch correspondant est charg sur la broche slectionne. PORTB (h06) et TRISB (h86) : Il comporte 8 bits. Le registre de direction correspondant est TRISB. Si on crit un "1" dans le registre TRISB, le driver de sortie correspondant passe en haute impdance. Si on crit un "0", le contenu du Latch de sortie correspondant est recopi sur la broche de sortie. Chaque broche du PORT B est munie d'un tirage au +VDD que l'on peut mettre ou non en service en mode entre uniquement. On active cette fonction par la mise "0" du bit 7 dans le registre OPTION en h'81'. Au reset, le tirage est dsactiv. Il est inactif quand le port est configur en sortie.

b7

b6

b5

b4

b3

b2

b1

b0

TRISB

Sens

TRISB = 0b01111000;

b7

b6

b5

b4

b3

b2

b1

b0

TRISB

Sens TRISB = 0;

Les 4 broches PB7 PB6 PB5 et PB4 provoquent une interruption sur un changement d'tat si elles sont configures en ENTREE. On doit remettre zro le Flag de cette interruption (bit 0 du registre INTCON en h'0B') dans le programme d'interruption. Cette possibilit d'interruption sur un changement d'tat associ la fonction de tirage configurable sur ces 4 broches, permet l'interfaage facile avec un clavier. Cela rend possible le rveil du PIC en mode SLEEP par un appui sur une touche du clavier. Le bit 0 du PORT B peut galement tre utilis comme entre d'interruption externe. Le choix du front de dclenchement se fait en configurant le bit 6 du registre OPTION.

Au RESET: PORT A et PORT B configurs en ENTREE (TRISA et TRISB = 1) PORT B : Tirage dsactiv.

PILE DE SAUVEGARDE (STACK) : Le PIC 16F84 possde 8 niveaux physiques de pile (sur 13 bits) pour la sauvegarde du compteur programme avant un saut sous programme (CALL) ou quand une interruption apparat. Les 13 bits de la valeur du compteur sont restitus l'instruction de retour sous programme ou retour d'interruption (RETURN et RETLWou RETFIE). La pile est un buffer circulaire. Quand la pile a t sauve 8 fois, la 9eme valeur prend la place de la 1ere valeur stocke.

LA MEMOIRE DE DONNEE EEPROM Cette mmoire est en lecture/criture. Elle n'est pas place dans la zone de mmoire DATA et sera donc adresse indirectement par 4 registres de la zone SFR, il s'agit des registres suivant : - EECON1 en h'88' - EECON2 en h'89' - EEDATA en h'08' - EEADR en h'09' Le PIC 16F84 possde 64 octets d'EEPROM dont les adresses vont de 00 3F.

EEADR : Registre d'adresse. Ce registre permet d'adresser jusqu' 256 octets d'EEPROM mais seulement les 64 premiers octets sont implments. Les deux bits de poids forts doivent donc tre positionn "0" pour tre certain de bien accder aux 64 premiers octets. EEDATA : Registre donnes. C'est le registre dans lequel transitent les donnes crire ou lues.

EECON1 : Registre de contrle. Ce registre de contrle possde 5 bits.

Bits 7 5 : non implments. Bit 4 : EEIF : EEPROM Write Operation Interrup Flag bit. 1 = L'opration d'criture est termine. Ce Flag doit tre remis zro par soft. 0 = L'opration d'criture n'est pas termine ou n'a pas encore dmarr. Bit 3 : WRERR : EEPROM Error Flag bit. 1 = Une opration d'criture s'est termine prmaturment cause d'un reset ou de l'entre en action du watchdog pendant la phase d'criture. 0 = L'opration d'criture s'est pass correctement. Bit 2 : WREN : EEPROM Write Enable bit. 1 = Autorise les cycles d'criture. 0 = Interdit l'criture dans l'EEPROM.

Bit 1 : WR : Write Control bit 1 = Dmarre un cycle d'criture. Ce bit ne peut qu'tre mis "1"par soft. Il est remis "0" par hard quand l'criture est termine. 0 = Le cycle d'criture en EEPROM est termin. Bit 0 : RD : Read Control bit. 1 = Dbute un cycle de lecture de l'EEPROM. Ce bit ne peut qu'tre mis "1" par soft. Il est remis "0" par hard. 0 = Ne dbute pas un cycle de lecture. EECON2 : Registre de contrle. Ce n'est pas un registre physique. Il est utilis uniquement pendant les squences d'criture en EEPROM.

#DEFINE LED PORTA,2 #DEFINE BOUTON PORTB,2

LEDON macro bsf LED endm LEDOFF macro bcf LED endm la premire colonne donne le nom de la macro (ici, 2 macros, une LEDON et une LEDOFF). La directive macro signifie dbut de la macro la directive endm signifie fin de la macro. Notez que les macros peuvent videmment comporter plusieurs lignes de code. Prenons notre exemple : quand nous utiliserons la ligne suivante dans notre programme (attention, ne pas mettre la macro en premire colonne) : LEDON Au moment de la compilation, notre assembleur remplacera LEDON par : bsf LED Il remplacera galement LED par PORTA,2

logiciel MPLAB Le logiciel le plus courant qui permet de programmer ces composants aussi bien en Assembleurs qu'en C est le logiciel MPLAB, qui est fourni gratuitement sur le site de Microchip (Tlecharger MPLAB). Ce logiciel trs pratique permet d'crire les programmes, de les compiler, et mme de les simuler. Pour dmarrer avec MPLAB, procdez comme suit : - Tlechargez le, puis installez le. - Lancer MPLAB IDE, puis cliquez sur "Project/Project Wizard..."

Une nouvelle fentre apparat, cliquez sur suivant :

Ensuite choisissez le type de microcontrleur que vous dsirez programmer :

Puis slectionner le type de language que vous voulez utiliser : (CC5X pour programmer en C, MPASM pour l'assembleur)

Il vous faut maintenant entrer un nom de projet, par exemple essai, et le dossier dans lequel vous voulez enregistrez ce projet, par exemple C:\Projets MPLAB :

Vous pouvez dsormais commenc taper votre programme. Voici la structure d'un programme Assembleur : Clignotement d'une Led sur RA2

LIST p=16F84A ; Processeur 16F84A #INCLUDE <p16F84A.inc> ; Dfinition des registre internes du 16F84 ORG 0X00; Dclaration du Reset BSF STATUS, RP0 ; Acces Bank1 MOVLW 0xFB ; TRISA.b2 0 pour RA2 en sortie MOVWF TRISA BCF STATUS, RP0 ; Acces Bank0 BSF PORTA, RA2 ; Allume la Led BCF PORTA, RA2 ; Eteint la Led GOTO Start ; Reboucle end

Start

LCD Display

Brochage du connecteur

DL =

1 : interface en mode "8 bits" 0 : interface en mode "4 bits"

0 : 1 ligne 1 : 2 lignes

0 : caractres en 5x8 points 1 : caractres en 5x10 points. Non autoris pour les afficheurs 2 lignes

0 : afficheur "teint", mais le contenu de DDRAM est maintenu 1 : afficheur "allum"

0 : curseur cach 1 : curseur apparent (barre "soulign")

0 : caractre du curseur affich normalement 1 : caractre du curseur clignotant (positif/ngatif)

I/D =

1 : le compteur d'adresse ADD s'incrmente chaque caractre entr 0 : le compteur d'adresse ADD se dcrmente chaque caractre entr

0 : le texte dj affich reste fig et le curseur se dplace chaque caractre entr 1 : le curseur reste fig et le texte dj affich se dplace chaque caractre entr

la liaison RS-232

Instrument RS 232

Cble RS 232

TD RD GND

TD RD GND

La vitesse de transmission exprime en Bauds est Vitesse bauds = 1 / dure dun bit seconde. En effet, la liaison srie est totalement asynchrone. Aucune horloge n'est transmise. Il faut donc se mettre d'accord sur la vitesse de transfert des bits et rajouter des bits de synchronisation : Au repos ( pas de transmission) la ligne est au niveau haut, 1 logique. Le dbut de la transmission est annonc par la mise 0 de la ligne durant 1 bit : cest le bit de start. Ce bit indique au rcepteur que la transmission va commencer. La donne est ensuite transmise bit aprs bit en commenant par le bit de poids faible( LSB ). Afin de sparer les donnes transmises la fin de transmission est signale par une remise au repos, niveau 1, de la ligne durant 1 bit: cest le bit de stop. La transmission de la donne suivante peut alors commencer. Etc.

Afin de dtecter les erreurs de transmission on peut aussi ajouter un bit de parit.

Le contrle de flux est ncessaire afin que les quipements en relation (PC / modem par exemple ) puisse fonctionner sans perte dinformations.

1. CD (Carrier Detect) 2. RXD (Receive Data) 3. TXD (Transmit Data) 4. DTR (Data terminal Ready) 5. GND (Ground) 6. DSR (Data Set Ready) 7. RTS (Request To Send) 8. CTS (Clear To Send) 9. RI (Ring Indicator)

DB9 1 2 3

DB25 8 3 2

Signal DCD RD TD

Type Entre Entre Sortie

4 5

20 7

DTR SG

Sortie Masse

DSR

Entre

7 8 9

4 5 22

RTS CTS RI

Sortie Entre Entre

Utilisation Data Carrier Detect: le passage au 0 logique annonce que l'autre quipement reoit une rponse. Dans le cas d'un modem, il annonce que la connexion est tablie et qu'il reoit un signal de rponse de celui qui se trouve l'oppos de la ligne tlphonique. Received Data: donne reue (ou RX) Transmitted Data: donne mise. Lorsque l'quipement est en attente, la sortie est au 1 logique. (ou TX) Data Terminal Ready: le passage au 0 logique indique l'autre quipement que l'on souhaite communiquer. Dans le cas d'un modem, cela prpare celui-ci se connecter une ligne tlphonique, et une fois connect, le rester. Signal Ground: masse de rfrence des signaux (0V) Data Set Ready: le passage au 0 logique annonce que l'quipement oppos est prt. Dans le cas d'un modem, cela signifie qu'il est connect une ligne tlphonique en mode donnes, que la composition du numro de tlphone est termine et qu'il peut mettre un signal de rponse. Request To Send: le passage au 0 logique demande l'quipement oppos de se tenir prt recevoir. Clear To Send: le passage au 0 logique annonce que l'quipement oppos est prt recevoir. Ring Indicator: le passage au 0 logique annonce que le modem reoit un appel.

0 1
Tension -12V -3V -3V 3V 3V 12V 1

[ 5 V ; 25 V ] [ - 25 V ; - 5 V ]
Etat logique, marque (mark), en attente

Typ : 12 V Typ : - 12 V

zone interdite, afin liminer les problmes dus aux bruits sur la ligne 0 logique, espace (space), actif

LE BUS I2C LI2C (Inter Integrated Circuit bus) a t cr par PHILIPS dans les annes 80. Il a t adopt par un grand nombre de constructeurs. LI2C est un protocole de communication de niveau physique. Son fonctionnement sappui sur trois fils (SDA : Serial Data, SCL : Serial Clock et la rfrence : Masse). Le fil nomm SCL transmet lhorloge pour la synchronisation de communication; alors que la ligne SDA transmet les informations (adresses et donnes ). Un seul botier matre peut commander plusieurs botiers esclaves, (chacun dentre eux rpondant une adresse unique). Un esclave ne sexprime que sur ordre dun matre et plusieurs matres peuvent partager le mme rseau.
SCL : Horloge srie fournie par le matre.

SDA : Donnes dans les deux sens. Du matre vers lesclave ou de lesclave vers le matre.

Conditions de START et de STOP Etat repos pour SDA et SCL = HIGH. Un dbut de transmission doit respecter des conditions particulires : La ligne SDA passe de ltat haut ltat bas alors que la ligne SCL est ltat haut. Une fin de transmission a aussi un caractre particulier : La ligne SDA passe de ltat bas ltat haut alors que la ligne SCL est ltat haut. START : data sur SDA change ( passage de 1 0 ) quand SCL est HIGH STOP : data sur SDA change ( passage de 0 1 ) quand SCL est HIGH Cest entre ces deux conditions que les donnes doivent tre transmises.

TRANSMISSION : Le matre envoi le bit START et ensuite les 8 bits dadressage sur SDA : - Les 4 premiers bits dterminent le type de circuit et sont fixs par le fabriquant. - Les 3 bits suivants dpendent du cblage de 3 pattes du CI et constituent ladresse. - Le dernier bit est le R/W. Avec 0 on crit dans le CI et un 1 permet la lecture. Lesclave prend alors la ligne SDA qui est au repos donc 1 et la positionne 0 pour un ACK.

Les changements d'tat sur le bus de donnes SDA se font toujours lorsque le signal d'horloge SCL est au niveau bas SAUF pour marquer les conditions de START ou de STOP. Les communications sont toujours l'initiative d'un matre. Chaque change dbute par une condition START, et se termine par une condition STOP. Le premier octet transmis par le matre aprs le "start" est l'adresse du terminal esclave adress. Si l'esclave se reconnat, il accuse rception de son adresse, et ds lors, il est seul sur le bus avec le matre. Il existe 3 types d'change : Lecture de N octets : Start, Add, R, data0, ack, data1, ack, data2, ack,...datai, nack, Stop Ecriture de N octets : Start, Add, W, data0, ack, data1, ack, data2, ack,...datai, nack, Stop Ecriture/Lecture de M/N octets : Start, Add, W, data0, ack, data1, ack, data2, ack,...dataj, ack, Start, Add, R, data0, ack, data1, ack, data2, ack,...datai, nack, Stop

You might also like