You are on page 1of 28

Mahmoud walid

Le pic16F84

LES MICROCONTROLEURS PIC16F84

I LES MICROCONTROLEURS
1) Quest ce quun microcontrleur : Cest un ordinateur mont dans un circuit intgr. Les avances technologiques en matire dintgration, ont permis dimplanter sur une puce de silicium de quelques millimtres carrs la totalit des composants qui forment la structure de base dun ordinateur. Comme tout ordinateur, on peut dcomposer la structure interne dun microprocesseur en trois parties : -Les mmoires -Le processeur -Les priphriques Cest ce quon peut voir sur la figure 1 :

figure 1 -les mmoires sont charges de stocker le programme qui sera excut ainsi que les donnes ncessaires et les rsultats obtenus -le processeur est le cur du systme puisquil est charg dinterprter les instructions du programme en cours dexcution et de raliser les oprations quelles contiennent .Au sein du processeur, lunit arithmtique et logique interprte, traduit et excute les instructions de calcul. -les priphriques ont pour tche de connecter le processeur avec le monde extrieur dans les deux sens. Soit le processeur fournit des informations vers lextrieur (priphrique de sortie), soit il en reoit (priphrique dentre). 2) Qu'est-ce qu'un PIC
Un PIC est un microcontrleur de chez Microchip. Ses caractristiques principales sont : Sparation des mmoires de programme et de donnes (architecture Harvard) : On obtient ainsi une meilleure bande passante et des instructions et des donnes pas forcment codes sur le mme nombre de bits. Communication avec l'extrieur seulement par des ports : il ne possde pas de bus d'adresses, de bus de donnes et de bus de contrle comme la plupart des microprocesseurs.

Page1/28

Mahmoud walid Le pic16F84 Utilisation d'un jeu d'instructions rduit, d'o le nom de son architecture : RISC (Reduced Instructions Set Construction). Les instructions sont ainsi codes sur un nombre rduit de bits, ce qui acclre l'excution (1 cycle machine par instruction sauf pour les sauts qui requirent 2 cycles). En revanche, leur nombre limit oblige se restreindre des instructions basiques, contrairement aux systmes d'architecture CISC (Complex Instructions Set Construction) qui proposent plus d'instructions donc codes sur plus de bits mais ralisant des traitements plus complexes.
Il existe trois familles de PIC : - Base-Line : Les instructions sont codes sur 12 bits - Mid-Line : Les instructions sont codes sur 14 bits - High-End : Les instructions sont codes sur 16 bits Un PIC est identifi par un numro de la forme suivant : xx(L)XXyy zz - xx : Famille du composant (12, 14, 16, 17, 18) - L : Tolrance plus importante de la plage de tension - XX : Type de mmoire de programme C - EPROM ou EEPROM CR - PROM F - FLASH - yy : Identification - zz : Vitesse maximum du quartz

Page2/28

Mahmoud walid

Le pic16F84

II PRESENTATION GENERALE DU PIC 16F84


1) Classification du PIC 16F84 Le PIC 16F84 est un microcontrleur 8 bits. Il dispose donc d'un bus de donnes de huit bits. Puisquil traite des donnes de huit bits, il dispose dune mmoire de donne dans laquelle chaque emplacement (dfini par une adresse) possde huit cases pouvant contenir chacune un bit.

2) Architecture interne La structure gnrale du PIC 16F84 comporte 4 blocs comme le montre la figure 2 : -Mmoire de programme -Mmoire de donnes -Processeur -Ressources auxiliaires (priphriques)

figure 2 La mmoire de programme contient les instructions pilotant lapplication laquelle le microcontrleur est ddi. Il sagit dune mmoire non volatile (elle garde son contenu, mme en labsence de tension), elle est de type FLASH cest dire Page3/28

Mahmoud walid Le pic16F84 quelle peut tre programme et efface par lutilisateur via un programmateur et un PC. La technologie utilise permet plus de 1000 cycles deffacement et de programmation. Pour le PIC 16F84 cette mmoire est dune taille de 1024*14 bits, cest dire quelle dispose de 1024 emplacements (de 000h 3FFh) contenant chacun 14 cases car dans le cas du PIC, les instructions sont codes sur 14 bits. On peut donc stocker 1024 instructions. La mmoire de donne est spare en deux parties : -une mmoire RAM de 68 octets puisque le bus de donne est de huit bits. Cette RAM est volatile (les donnes sont perdues chaque coupure de courant). On peut y lire et crire des donnes. -une mmoire EEPROM de 64 octets dans laquelle on peut lire et crire des donnes (de huit bits soit un octet) et qui possde lavantage dtre non volatile (les donnes sont conserves mme en labsence de tension). La lecture et lcriture dans cette mmoire de donnes sont beaucoup plus lentes que dans la mmoire de donnes RAM. Le processeur est form de deux parties : -une unit arithmtique et logique (UAL) charge de faire des calculs. -un registre de travail not W sur lequel travail lUAL. Les ressources auxiliaires qui sont dans le cas du PIC16F84 -ports dentres et de sorties. -temporisateur. -interruptions -chien de garde -mode sommeil Ces ressources seront analyses dans la suite du cours.

III STRUCTURE INTERNE DU PIC 16F84


1) Brochage et caractristiques principales Le PIC16F84 est un circuit intgr de 18 broches (figure 3) :

figure 3 Page4/28

Mahmoud walid

Le pic16F84

Lalimentation du circuit est assure par les pattes VDD et VSS. Elles permettent lensemble des composants lectroniques du PIC de fonctionner. Pour cela on relie VSS (patte 5) la masse (0 Volt) et VDD (patte 14) la borne positive de lalimentation qui doit dlivrer une tension continue comprise entre 3 et 6 Volts. Le microcontrleur est un systme qui excute des instructions les unes aprs les autres une vitesse (frquence) qui est fixe par une horloge interne au circuit. Cette horloge doit tre stabilise de manire externe au moyen dun cristal de quartz connect aux pattes OSC1/CLKIN (patte 16) et OSC2/CLKOUT (patte 15). Montage avec un Quartz ou un Filtre cramique : MODE: XT, HS ou LP
FOSC1 FOSC0 Type doscillateur

0 0 1 1

0 1 0 1

LP XT HS RC

Caractristiques (Low Power) Quartz jusqu 200 KHz Quartz (XT ou 4) MHz (High Speed) jusqu 20 MHz RC jusqu 4 MHz

Page5/28

Mahmoud walid

Le pic16F84

Montage avec une Horloge Externe : MODE: XT, HS ou LP

Montage avec oscillateur RC : MODE: RC

La patte 4 est appele MCLR. Elle permet lorsque la tension applique est gale 0V de rinitialiser le microcontrleur. Cest dire que si un niveau bas ( 0 Volt ) est appliqu sur MCLR le microcontrleur sarrte, place tout ses registres dans un tat connu et se redirige vers le dbut de la mmoire de programme pour recommencer le programme au dbut ( adresse dans la mmoire de programme :0000 ).

Page6/28

Mahmoud walid

Le pic16F84

A la mise sous tension, la patte MCLR tant zro, le programme dmarre donc ladresse 0000,( MCLR=Master Clear Reset ). Les broches RB0 RB7 et RA0 RA4 sont les lignes dentres/sorties numriques. Elles sont au nombre de 13 et peuvent tre configures en entre ou en sortie. Ce sont elles qui permettent au microcontrleur de dialoguer avec le monde extrieur (priphriques). Lensemble des lignes RB0 RB7 forme le port B et les lignes RA0 RA4 forment le port A. Certaines de ces broches ont aussi dautres fonctions (interruption, timer). 2) Structure interne La structure interne du PIC16F84 est donne figure 4 : (structure HARVARD : la mmoire de programme et la mmoire de donnes sont spares contrairement l'architecture Von Neuman qui caractrise d'autres fabricants de microcontrleurs)

figure 4 On retrouve sur ce schma la mmoire de programme, la mmoire RAM de donnes, la mmoire EEPROM, les ports A et B, ainsi que la partie processeur avec lUAL et le registre de travail W (work). Nous allons tudier prsent plus en dtail le fonctionnement du PIC.

Page7/28

Mahmoud walid Le pic16F84 3) Principe de fonctionnement du PIC Un microcontrleur excute des instructions. On dfinit le cycle instruction comme le temps ncessaire lexcution dune instruction. Attention de ne pas confondre cette notion avec le cycle dhorloge qui correspond au temps ncessaire lexcution dune opration lmentaire (soit un coup dhorloge). Une instruction est excute en deux phases : La phase de recherche du code binaire de linstruction stock dans la mmoire de programme La phase dexcution ou le code de linstruction est interprt par le processeur et excut. Chaque phase dure 4 cycles dhorloge comme le montre la figure 5 :

figure 5 On pourrait donc croire quun cycle instruction dure 8 cycles dhorloge mais larchitecture particulire du PIC lui permet de rduire ce temps par deux. En effet, comme les instructions issues de la mmoire de programme circulent sur un bus diffrent de celui sur lequel circulent les donnes, ainsi le processeur peut effectuer la phase de recherche dune instruction pendant quil excute linstruction prcdente (Voir figure 6 et 7).

figure 6

Page8/28

Mahmoud walid

Le pic16F84

figure 7 4) Droulement dun programme Le droulement dun programme seffectue de faon trs simple. A la mise sous tension, le processeur va chercher la premire instruction qui se trouve ladresse 0000 de la mmoire de programme, lexcute puis va chercher la deuxime instruction ladresse 0001 et ainsi de suite (sauf cas de saut ou dappel de sous programme que nous allons voir plus loin). On parle de fonctionnement squentiel. La figure 8 va nous permettre de mieux comprendre le fonctionnement :

figure 8

Page9/28

Mahmoud walid Le pic16F84 On constate sur cette figure que la mmoire de programme contient 1024 emplacements (3FF en hexadcimale) contenant 14 bits (de 0 13). Une instruction occupe un emplacement qui est dfini par une adresse. Le processeur peut alors slectionner l'emplacement souhait grce au bus dadresse et il peut lire son contenu ( ici linstruction ) grce son bus dinstruction ( voir figure 7 ). Cet adressage seffectue laide dun compteur ordinal appel PC qui lors de la mise sous tension dmarre zro puis sincrmente de 1 tous les quatre coups dhorloge, on excute bien ainsi les instructions les unes la suite des autres. Mais il arrive que dans un programme on fasse appel un sous programme dont ladresse de linstruction ne se trouve pas juste aprs celle qui est en train dtre excute. Cest le rle de la pile qui sert emmagasiner de manire temporaire ladresse dune instruction. Elle est automatiquement utilise chaque fois que lon appelle un sous programme et elle permet une fois que lexcution du sous programme est termine de retourner dans le programme principal juste aprs lendroit o lon a appel le sous programme. On constate que cette pile possde huit niveaux, cela signifie quil nest pas possible dimbriquer plus de huit sous programmes, car au-del de huit, le processeur ne sera plus capable de retourner ladresse de base du programme principal. Ladresse 0000 est rserve au vecteur RESET, cela signifie que cest cette position que lon accde chaque fois quil se produit une rinitialisation ( 0 volts sur la patte MCLR ). Cest pour cette raison que le programme de fonctionnement du microcontrleur doit toujours dmarrer cette adresse. Ladresse 0004 est assigne au vecteur dinterruption et fonctionne de manire similaire celle du vecteur de Reset. Quand une interruption est produite et valide, le compteur ordinal PC se charge avec 0004 et linstruction stocke cet emplacement est excute. 5) La mmoire de donnes RAM Si lon regarde la mmoire de donne RAM, on saperoit que celle-ci est un peu particulire comme le montre la figure 9 : On constate en effet que cette mmoire est spare en deux pages ( page 0 et page 1 ). De plus, on remarque que tant pour la page 0 que pour la page 1, les premiers octets sont rservs (SFR pour Special File Register). Ces emplacements sont en effet utiliss par le microcontrleur pour configurer lensemble de son fonctionnement. On les appelle registres spcifiques et nous verrons au chapitre suivant leurs rles. Le bus dadresse qui permet dadresser la RAM est compos de 7 fils ce qui veut dire quil est capable dadresser 128 emplacements diffrents. Or, chaque page de la RAM est compose de 128 octets, le bus dadresse ne peut donc pas accder aux deux pages, cest pourquoi on utilise une astuce de programmation qui permet de diriger le bus dadresse soit sur la page 0, soit sur la page 1. Cela est ralis grce un bit dun registre spcifique ( le bit RP0 du registre STATUS ) dont nous verrons le fonctionnement plus loin. La RAM de donnes proprement dite se rduit donc la zone note GPR (Registre usage gnrale ) qui stend de ladresse 0Ch ( 12 en dcimale ) jusqu 4Fh ( 79 en dcimale ) soit au total 68 registres en page 0 et autant en page 1, mais on constate que les donnes crites en page 1 sont rediriges en page 0 cela signifie quau final lutilisateur dispose uniquement de 68 registres ( donc 68 octets de mmoire vive) dans lesquels il peut crire et lire volont en sachant qu la mise hors tension, ces donnes seront perdues.

Page10/28

Mahmoud walid

Le pic16F84

STATUS

STATUS

figure 9

Page11/28

Mahmoud walid

Le pic16F84

6) Les registres Nous avons vu au chapitre prcdent que la mmoire de donnes RAM contenait des registres spcifiques qui permettent de configurer le PIC, nous allons les dtailler un un et voir comment on peut accder la page 0 ou la page 1. Afin de faciliter la comprhension, les registres les plus utiliss sont encadrs. Adresse 00 et 80, INDF. Cette adresse ne contient pas de registre physique, elle sert pour ladressage indirect. Adresse 01, TMR0. Contenu du Timer (8 bits). Il peut tre incrment par lhorloge (fosc/4) c'est dire tous les 4 coups d'horloge ou par la broche RA4. Adresse 02 et 82, PCL .8 bits de poids faibles du compteur ordinal PC. Les 5 (13-8) bits de poids forts sont dans PCLATH.

- Adresse 03 et 83, STATUS Registre dtat. les cinq bits de poids faible de ce registre sont en lecture seule, ce sont des tmoins (drapeaux ou flag en anglais) caractrisant le rsultat de lopration ralise par lUAL. Le bit RP0 est lui en lecture /criture et cest lui qui permet de slectionner la page dans la mmoire RAM. Si RP0=0 on accde la page 0 et si RP0=1 on accde la page 1 . RP0 TO/ PD/ Z DC C

Au reset, seul le bit RP0 de slection de page est fix ( RP0=0 : page 0 ) TO/ (Time Out) : dbordement du timer WDT PD/ : (Power Down) caractrise lactivit du chien de garde WDT Z (zro) rsultat nul pour une opration arithmtique et logique. DC (digit carry) retenue sur un quartet (4 bits) C (carry) retenue sur un octet (8 bits). Adresse 04 et 84, FSR. Registre de slection de registre : contient ladresse dun autre registre (adressage indirect, non utilis dans le projet) adresse 05, PORTA. Ce registre contient ltat des lignes du port A adresse 06, PORTB. Ce registre contient ltat des lignes du port B adresse 08, EEDATA .Contient un octet lu ou crire dans lEEPROM de donnes. adresse 09, EEADR. Contient ladresse de la donne lue ou crite dans lEEPROM de donnes. adresse 0A et 8A, PCLATH. Voir ladresse 02 PCL.

Page12/28

Mahmoud walid - adresse 0B et 8B , INTCON . Contrle des 4 interruptions GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

Le pic16F84

Masque : GIE : (Global Interrupt Enable) : masque global dinter. EEIE : (EEProm Interrupt Enable) autorise l'interruption venant de l'EEPROM. T0IE : (Timer 0 Interrupt Enable) autorise l'interruption provoque par le dbordement du TIMER0 INTE: ( Interrupt Enable) autorise linterruption provoque par un changement d'tat sur broche RB0/INT RBIE: (RB Interrupt Enable) autorise les interruptions provoques par un changement d'tats sur l'une des broches RB4 RB7. Si ces bits sont mis 1 , ils autorisent les interruptions pour lesquels ils sont ddis . Drapeaux : T0IF : (Timer 0 Interrupt Flag) dbordement du timer INTF ( Interrupt Flag) interruption provoque par la broche RB0/INT RBIF ( RB Interrupt Flag) interruption provoque par les broches RB4-RB7. - adresse 81 , OPTION 8 bits (tous 1 au RESET) affectant le comportement des E/S et des timers. RBPU/ INTEDG RTS RTE PSA PS2 PS1 PS0

RBPU/ (RB Pull Up) Rsistances de tirage Vdd des entres du port B ( voir le dtail du fonctionnement au chapitre port ).Si RBPU/=0 les rsistances de pull-up sont connectes en interne sur l'ensemble du port B. INTEDG (Interrupt Edge) slection du front actif de linterruption sur RB0/INT ( 1 pour front montant et 0 pour front descendant ). RTS (Real Timer Source) slection du signal alimentant le timer 0 : 0 pour horloge interne, 1 pour RA4/T0CLK RTE (Real Timer Edge) slection du front actif du signal timer (0 pour front montant). PSA (Prescaler assignment) 0 pour Timer 0 et 1 pour chien de garde WDT. PS2..0 (Prescaler 210) slection de la valeur du diviseur de frquence pour les timers. adresse 85, TRISA.Direction des donnes pour le port A : 0 pour sortir et 1 pour entrer). adresse 86, TRISB.Direction des donnes pour le port B : 0 pour sortir et 1 pour entrer

Page13/28

Mahmoud walid -

Le pic16F84

adresse 88, EECON1 Contrle le comportement de lEEPROM de donnes. EEIF WRERR WREN WR RD

EEIF (EEProm Interrupt Flag) passe 1 quand lcriture est termine. WRERR (Write Error) 1 si erreur dcriture. WREN (Write Enable) : 0 pour interdire lcriture en EEPROM de donnes. WR (Write) 1 pour crire une donne. Bit remis automatiquement 0 RD (Read) : 1 pour lire une donne. Bit remis automatiquement 0 - adresse 89, EECON2. Registre de scurit dcriture en EEPROM de donnes. Une donne ne peut tre crite quaprs avoir crit successivement 0x55 et 0xAA dans ce registre. 7) Les ports dentres/sorties Le PIC16F84 est quip de 13 lignes dentres/sorties rparties en deux ports : -le port A : RA0 RA4 -le port B : RB0 RB7 Chaque ligne peut tre configure soit en entre, soit en sortie, et ceci indpendamment lune de lautre. Pour cela on utilise les registres TRISA et TRISB . Le bit de poids faible ( b0 ) du registre TRISA correspond la ligne RA0, le bit b1 de TRISA correspond RA1 et ainsi de suite. Il en est de mme pour le port B et le registre TRISB ( b0 de TRISB correspond RB0 b7 correspond RB7 ). Si lon veut placer une ligne en sortie il suffit de mettre le bit correspond dans TRISA ou TRISB 0 (retenez 0 comme Output=sortie ) . Si lon veut placer une ligne en entre, il suffit de placer le bit correspondant dans TRISA ou TRISB 1 (retenez 1 comme Input=entre). Les bits des deux registres PORTA et PORTB permettent soit de lire ltat dune ligne si celle-ci est en entre, soit de dfinir le niveau logique dune ligne si celle-ci est en sortie. Lors dun RESET, toutes les lignes sont configures en entres. Particularit du portA : les bits b7 b5 des registres TRISA et PORTA ne correspondent rien car il ny a que 5 lignes (b0 b4). RA4 est une ligne collecteur ouvert, cela veut dire que configure en sortie cette broche assure 0Volt ltat bas, mais qu ltat haut, il est ncessaire de fixer la valeur de la tension grce une rsistance de tirage (pull up en anglais) Particularit du portB : il est possible de connecter de faon interne sur chaque ligne une rsistance de tirage (pull up) dont le rle consiste fixer la tension de la patte (configur en entre) un niveau haut lorsque quaucun signal nest appliqu sur la patte en question. Pour connecter ces rsistances, il suffit de placer le bit RBPU/ du registre OPTION 0.

Page14/28

Mahmoud walid

Le pic16F84

8) Le Timer Dans la majeure partie des applications, il est ncessaire de contrler le temps; afin de ne pas occuper le microcontrleur qu' cette tche (boucle de comptage qui monopolise le micro), on le dcharge en utilisant un timer. Le pic 16F84 dispose de deux timers, un usage gnral (le TMR0) et un autre utilis pour le chien de garde (watch dog WDG). Le TMR0 est un compteur ascendant (qui compte) de 8 bits qui peur tre charg avec une valeur initiale quelconque. Il est ensuite incrment chaque coup d'horloge jusqu' ce que le dbordement ait lieu (passage de FF 00); Le principe est reprsent figure 10 :

figure 10

Le TMR0 peut remplir deux fonctions: -Temporisateur ou contrle du temps. Son entre d'incrmentation est alors l'horloge qui correspond au cycle instruction (Fosc/4). Il est possible d'utiliser un pr-diviseur de frquence que nous verrons plus loin. -Compteur d'vnements. Dans ce cas les d'impulsions d'entres du timer sont fournies par la patte RA4/TOCK1 le choix s'effectue grce au bit RTS du registre OPTION. Le pic 16F84 dispose d'un diviseur de frquence qui peut tre assign soit au chien de garde, soit au TMR0 (uniquement un la fois). L'assignation du pr diviseur se fait grce au bit PSA du registre OPTION. La structure interne du TMR0 est donc la suivante (figure 11):
du registre intcon

RTS

RTE

il se produit un retard de deux cycles avant que le timer ne commence compter aprs un chargement

figure 11

Page15/28

Mahmoud walid Le pic16F84 Suivant que le pr-diviseur est assign au chien de garde ou au TMR0, la valeur de la prdivision n'est pas la mme, il faut donc tre vigilant lors de la programmation comme le montre la figure 12 :

RTS

RTE

RTE

RTS

INTEDG

RPBU/ figure 12 Enfin, vu que le timer ne peut que compter, cela oblige une petite gymnastique lors de l'introduction de la valeur de pr chargement : exemple : On veut que le timer nous indique par la mise un du drapeau T0IF l'coulement d'une dure de 20ms (la frquence d'horloge tant de 4MHz) d'o Fosc/4=1s Si on choisit un pr division de 256, on aura donc 20000 s / 256 =78 Il ne faut pas charger le TMR0 avec 78 mais avec le complment deux de cette valeur (car le timer compte et ne dcompte pas) d'o 256-78=178 Soit en hexadcimale la valeur B2h charger dans le registre TMR0.

Page16/28

Mahmoud walid

Le pic16F84

9) Mise en oeuvre Lutilisation et la mise en uvre trs simple des PICs les a rendus extrmement populaire au point que la socit qui les fabrique (MICROCHIP) est en passe de devenir le leader mondial dans le domaine des microcontrleurs devant MOTOROLA et INTEL. Il suffit dalimenter le circuit par ses deux broches VDD et VSS, de fixer sa vitesse de fonctionnement laide dun quartz (figure13) et dlaborer un petit systme pour permettre de rinitialiser le microcontrleur sans avoir couper lalimentation (figure 14).

figure 13

figure 14 Il suffit ensuite dcrire le programme en langage assembleur ou en C sur un ordinateur grce au logiciel MPLAB de MICROCHIP puis de le compiler pour le transformer en langage machine et le transfrer dans le PIC grce un programmateur.

Page17/28

Mahmoud walid

Le pic16F84

IV JEU DINSTRUCTIONS
Afin de comprendre la fonction de chaque instruction, la notation adopte pour les donnes et adresses manipules par les instructions est fort simple et est la suivante : -f reprsente un registre -b reprsente un numro de bit en sachant que 0 correspond toujours au bit de poids faible (le plus droite dans le registre) -k reprsente une donne aussi appel littral Un certain nombre dinstructions (ADDWF, ANDWF, etc..) utilise une notation spciale prsente sous la forme : ADDWF f,d O f indique le registre et o d peut prendre deux valeurs (0 ou 1), ce qui change le comportement de linstruction . Si d est 0, le rsultat est plac dans le registre de travail W, la valeur dans le registre f est alors inchange, alors que si d est 1, le rsultat est plac dans le registre f. Un autre type dinstruction mrite quelques claircissements, ce sont les instructions de branchement conditionnel. Prenons comme exemple : BTFSC f,b Qui va vouloir dire ( Bit Test File Skip if Clear ) qui signifie que lon va tester le bit b du registre f ( b peut prendre une valeur de 0 7 pour un registre 8 bits ) .Il peut alors y avoir deux solutions : -Soit le bit test est 1, donc la condition teste nest pas ralise, le programme continue alors son droulement normalement en squence avec linstruction juste en dessous. -Soit le bit test vaut 0, donc la condition teste est ralise et le programme saute linstruction qui suit le BTFSC dans le programme. Cette faon de programmer peut paratre trange, mais avec de lhabitude, elle savre trs pratique et permet de raliser des programmes compacts et performants. Les 35 instructions sont donc les suivantes : -ADDLW (Add Literal to W) Syntaxe : ADDLW k Opration : W+kW

Bits dtat du registre STATUS affects : C, DC, Z On ajoute au registre de travail la valeur k et on place le rsultat dans le registre de travail W Dure : 1 cycle instruction (4 cycles dhorloge)

Page18/28

Mahmoud walid -ADDWF (Add W to F) syntaxe : ADDWF Opration :

Le pic16F84 f,d

W+ff si d=1 ou W+fW si d=0

Bits dtat du registre STATUS affects : C, DC, Z On ajoute le contenu de W et le contenu de f et on place le rsultat dans f si d=1 ou dans W si d=0 Dure : 1 cycle instruction (4 cycles dhorloge)

-ANDLW (And Literal and W) Syntaxe : ANDLW k Opration : W ET kW

Bit dtat du registre STATUS affect : Z on effectue un ET logique entre le contenu de W et le littral k , on place le rsultat dans W Dure : 1 cycle instruction (4 cycles dhorloge)

-ANDWF (And W with F) syntaxe : ANDWF f,d Opration : W ET ff si d=1 ou W ET fW si d=0

Bit dtat du registre STATUS affect : Z on effectue un ET logique entre le contenu de W et le contenu de f , on place le rsultat dans W si d=0 ou dans f si d=1 Dure : -BCF (Bit Clear F) syntaxe : BCF Opration : 0b(f) 1 cycle instruction (4 cycles dhorloge) f,b

Bits dtat du registre STATUS affects : aucuns On met 0 le bit b du registre f Dure : 1 cycle instruction (4 cycles dhorloge)

Page19/28

Mahmoud walid -BSF (Bit Set F) syntaxe : BSF Opration : 1b(f)

Le pic16F84 f,b

Bits dtat du registre STATUS affects : aucuns On met 1 le bit b du registre f Dure : 1 cycle instruction (4 cycles dhorloge)

-BTFSC (Bit Test, Skip if Clear) syntaxe : BTFSC f,b Opration : saut de linstruction qui suit si b(f)=0

Bits dtat du registre STATUS affects : aucuns Si le bit b de f est nul, linstruction qui suit celle-ci est ignore et traite comme un NOP. Dans ce cas et dans ce cas seulement, linstruction BTFSC demande deux cycles pour sexcuter. Dure : 1 cycle instruction (4 cycles dhorloge) ou 2 cycles 20294452

-BTFSS (Bit Test, Skip if Set) syntaxe : BTFSS f,b Opration : saut de linstruction qui suit si b(f)=1

Bits dtat du registre STATUS affects : aucuns Si le bit b de f est 1, linstruction qui suit celle-ci est ignore et traite comme un NOP. Dans ce cas et dans ce cas seulement, linstruction BTFSS demande deux cycles pour sexcuter. Dure : 1 cycle instruction (4 cycles dhorloge) ou 2 cycles label

-CALL (subroutine Call) Syntaxe : CALL

Bits dtat du registre STATUS affects : aucuns On sauvegarde ladresse de retour dans la pile puis on appelle le sous programme dfinit avec ltiquette label Dure : 2 cycles instruction (8 cycles dhorloge)

Page20/28

Mahmoud walid -CLRF (Clear F) Syntaxe : CLRF Opration : 0F f

Le pic16F84

Bit dtat du registre STATUS affect : Z On met le contenu du registre f 0 et on positionne Z Dure : -CLRW (Clear W) Syntaxe : CLRW Opration : 0W 1 cycle instruction (4 cycles dhorloge)

Bit dtat du registre STATUS affect : Z On met le contenu du registre W 0 et on positionne Z Dure : 1 cycle instruction (4 cycles dhorloge)

-CLRWDT (Clear WatchDog Timer) Syntaxe : CLRWDT Opration : 0WDT et 0pr diviseur du Timer

On met le contenu du registre du timer chien de garde 0 ainsi que le pr diviseur Dure : 1 cycle instruction (4 cycles dhorloge) f,d

-COMF (Complment F) syntaxe : COMF Opration :

/ff si d=1 ou /fW si d=0

Bit dtat du registre STATUS affect : Z On complmente le contenu du registre f bit bit, le rsultat est plac dans f si d=1, dans W si d=0. Dure : 1 cycle instruction (4 cycles dhorloge)

Page21/28

Mahmoud walid -DECF (Decrement F) syntaxe : DECF Opration : f,d

Le pic16F84

f-1f si d=1 ou f-1W si d=0

Bit dtat du registre STATUS affect : Z On diminue le contenu du registre f dune unit, le rsultat est plac dans f si d=1, dans W si d=0 (dans ce cas f reste inchang). Dure : 1 cycle instruction (4 cycles dhorloge)

-DECFSZ (Decrement F, Skip if Zero) syntaxe : DECFSZ f,d Opration : f-1f si d=1 ou f-1W si d=0 et saut si f-1=0

Bit dtat du registre STATUS affect : aucun On diminue le contenu du registre f dune unit, le rsultat est plac dans f si d=1, dans W si d=0 (dans ce cas f reste inchang).Si le rsultat est nul, linstruction suivante est ignore et dans ce cas, cette instruction dure deux cycles. Dure : 1 cycle instruction (4 cycles dhorloge) ou 2 cycles

-GOTO (branchement inconditionnel) Syntaxe : GOTO label Bit dtat du registre STATUS affect : aucun On effectue un saut dans le programme pour aller ladresse point par le label prcis dans GOTO Dure : 2 cycles (8 cycles dhorloge) f,d

-INCF (Increment F) syntaxe : INCF Opration :

f+1f si d=1 ou f+1W si d=0

Bit dtat du registre STATUS affect : Z On augment le contenu du registre f dune unit, le rsultat est plac dans f si d=1 , dans W si d=0 ( dans ce cas f reste inchang ). Dure : 1 cycle instruction (4 cycles dhorloge)

Page22/28

Mahmoud walid -INCFSZ (Increment F, Skip if Zero) syntaxe : INCFSZ f,d Opration : f+1f si d=1 ou f+1W si d=0 et saut si f-1=0

Le pic16F84

Bit dtat du registre STATUS affect : aucun On augmente le contenu du registre f dune unit, le rsultat est plac dans f si d=1, dans W si d=0 (dans ce cas f reste inchang).Si le rsultat est nul, linstruction suivante est ignore et dans ce cas, cette instruction dure deux cycles. Dure : 1 cycle instruction (4 cycles dhorloge) ou 2 cycles

-IORLW (Inclusive or Literal with W) Syntaxe: IORLW k Opration: W OU k W

Bit dtat du registre STATUS affect : Z On effectue un OU logique entre le contenu de W et le littral k, le rsultat est plac dans W. Dure : 1 cycle instruction (4 cycles dhorloge)

-IORWF (Inclusive or W with F) syntaxe : IORWF f,d Opration : W OU ff si d=1 ou W OU fW si d=0

Bit dtat du registre STATUS affect : Z On effectue un OU entre le contenu de W et le contenu de f, on place le rsultat dans f si d=1, dans W si d=0 Dure : -MOVF (Move F) syntaxe : MOVF Opration : 1 cycle instruction (4 cycles dhorloge) f,d

ff si d=1 ou fW si d=0

Bit dtat du registre STATUS affect : Z On dplace le contenu de f dans f si d=1 ou de f dans W si d=0. Attention, le dplacement de f dans f semble priori inutile, mais il permet en fait de tester le contenu de f par rapport 0 et de positionner le bit Z dure : 1 cycle instruction ( 4 cycles dhorloge )

Page23/28

Mahmoud walid -MOVLW (Move Literal to W) Syntaxe : MOVLW k Opration : kW

Le pic16F84

Bit dtat du registre STATUS affect : aucun On charge le contenu de W avec le littral k Dure : 1 cycle instruction (4 cycles dhorloge)

-MOVWF (Move W to F) Syntaxe : MOVWF f Opration : Wf

Bit dtat du registre STATUS affect : aucun On charge le contenu de f avec le contenu de W Dure : 1 cycle instruction (4 cycles dhorloge)

-NOP (No Operation) Syntaxe: NOP Opration: nant

Bit dtat du registre STATUS affect : aucun On ne fait que consommer du temps machine (un cycle dans ce cas) Dure : 1 cycle instruction (4 cycles dhorloge)

-RETFIE (Return From Interrupt) Syntaxe : RETFIE Opration : Pile PC

Bit dtat du registre STATUS affect : aucun On charge le compteur ordinal avec la valeur qui se trouve au sommet de la pile pour revenir au programme principal lorsque lexcution du sous programme est termine. dure : 2 cycles instruction ( 8 cycles dhorloge )

Page24/28

Mahmoud walid -RETLW (Return Literal to W) Syntaxe : RETLW Opration : kW, PilePC

Le pic16F84 k

Bit dtat du registre STATUS affect : aucun On charge le contenu de W avec le littral k puis on charge le compteur ordinal PC avec la valeur qui se trouve au sommet de la pile effectuent ainsi un retour de sous programme. Dure : 2 cycles instruction (8 cycles dhorloge)

-RETURN (Return from subroutine) Syntaxe : RETURN Opration : PilePC

Bit dtat du registre STATUS affect : aucun On charge le compteur ordinal PC avec la valeur qui se trouve au sommet de la pile effectuent ainsi un retour de sous programme. Cest un RETLW simplifi. Dure : 2 cycles instruction (8 cycles dhorloge)

-RLF (Rotate Left F through carry) syntaxe : RLF f,d Opration : C Registre f 7 6 5 4 3 2 1 0

Bit dtat du registre STATUS affect : C On effectue une rotation gauche de un bit du contenu du registre f en passant par le bit de retenu C. Si d=1 le rsultat est plac dans f, si d=0, le rsultat est plac dans W Dure : 1 cycle instruction (4 cycles dhorloge)

Page25/28

Mahmoud walid -RRF (Rotate Right F through carry) syntaxe : RRF f,d Opration : C Registre f 7 6 5 4 3 2

Le pic16F84

Bit dtat du registre STATUS affect : C On effectue une rotation droite de un bit du contenu du registre f en passant par le bit de retenu C. Si d=1 le rsultat est plac dans f, si d=0, le rsultat est plac dans W Dure : -SLEEP (Sleep) Syntaxe : SLEEP Opration : 0PD, 1T0, 0WDT, 0 pr diviseur 1 cycle instruction (4 cycles dhorloge)

On place le circuit en mode sommeil avec arrt de loscillateur. Cette commande est utiliser avec prcaution, elle ncessite la connaissance du mode sommeil. -SUBLW ( Substract W from Literal ) Syntaxe : SUBLW k Opration : k-WW

Bits dtat du registre STATUS affects : C, DC, Z On soustrait le contenu du registre W du littral k et on place le rsultat dans W (soustraction par la mthode du complment 2). Dure : 1 cycle instruction (4 cycles dhorloge)

-SUBWF ( Substract W from F ) syntaxe : SUBWF f,d Opration : f-WW si d=0 ou f-Wf si d=1

Bits dtat du registre STATUS affects : C, DC, Z On soustrait le contenu du registre W du contenu du registre f et on place le rsultat dans W si d=0, ou dans f si d=1 (soustraction par la mthode du complment 2). Dure : 1 cycle instruction (4 cycles dhorloge)

Page26/28

Mahmoud walid -SWAPF (Swap F) syntaxe : SWAPF opration :

Le pic16F84 f,d

f(0-3)f(4-7) et f(4-7)f(0-3) rsultat dans W ou f selon d

Bit dtat du registre STATUS affect : aucun On change les quatre bits de poids forts avec les quatre bits de poids faibles et on place le rsultat dans W si d=0, ou dans f si d=1 dure : 1 cycle instruction (4 cycles dhorloge )

-XORLW (Exclusive Or Literal with W ) Syntaxe : XORLW k Opration : W OU EXCLUSIF kW

Bit dtat du registre STATUS affect : Z On effectue un OU Exclusif entre W et le littral k, le rsultat est plac dans W Dure : 1 cycle instruction (4 cycles dhorloge)

-XORWF (Exclusive or W with F) syntaxe : XORWF f,d Opration : W OU EXCLUSIF fW si d=0 ou W OU EXCLUSIF ff si d=1

Bit dtat du registre STATUS affect : Z On effectue un OU Exclusif entre W et le contenu de f, le rsultat est plac dans W si d=0, sinon il est plac dans f. Dure : 1 cycle instruction (4 cycles dhorloge)

Page27/28

Mahmoud walid

Le pic16F84

JEU D'INSTRUCTION

Page28/28

You might also like