Home
Le PIC 16F84
Contents
1. gt m clock Avec un oscillateur RC la fr quence de Gel l oscillation est fix e par Vdd Rext et Cext Elle peut JE PIC 16F84 ZX 1 T 1 CRE varier l g rement d un circuit l autre OSC2 CLKOUT Fosc 4 Dans certains cas une horloge externe au Recommended values 5 KQ lt Rext lt 100 KQ Cext gt 20pF microcontr leur peut tre utilis e pour synchroniser le PIC sur un processus particulier Clock from OSC1 Quelque soit l oscillateur utilis l horloge syst me t system PIC 16F84 dite aussi horloge instruction est obtenue en divisant Open OSC2 la fr quence par 4 Dans la suite de ce document on utilisera le terme Fosc 4 pour d signer l horloge syst me Avec un quartz de 4 MHz on obtient une horloge instruction de 1 MHz soit le temps pour ex cuter une instruction de 1ps 1 6 Le port d E S PORTA Le port A d sign par PORTA est un port de 5 bits RAO RA4 Chaque E S est compatible TTL La configuration de direction pour chaque bit du port est d termin e avec le registre TRISA e Bit i de TRISA 0 gt bit de PORTA configur en sortie e Bit z de TRISA 1 gt bit de PORTA configur en entr e La broche RA4 est multiplex e avec l entr e horloge du timer TMRO elle peut donc tre utilis e soit comme E S normale du port A soit comme entr e horloge pour le Timer TMRO le choix se fait l aide du bit TOCS du registre OPTION REG e TOCS 0 gt RA4 est une E S normale e TOCS 1
2. N2 f boucle m diane goto tmp decfsz N3 f boucle ext rieure goto tmp return end 11 6 R f rences 1 2 3 PIC16F8X document DS30430C www microchip com PIC16F84a document DS35007A www microchip com Programmation des PIC Premi re partie PIC16F84 R vision 5 par BIGONOFF http www abcelectronique com bigonoff organisation php 2654c 22
3. RPO 0 Bank 0 RPO 1 Bank 1 M moire Maped in bankO utilisateur Registre STATUS RPO Pour la m moire utilisateur l utilisation des pages Bank n est pas n cessaire puisque le Bank 1 est mapped avec le Bank0 Cela signifie qu crire une donn e l adresse OC4 ou l adresse 8C revient au m me 1 4 L ALU et le registre W C est une ALU 8 Bits qui r alise les op rations arithm tique et logique entre l accumulateur W et n importe quel autre registre F ou constante K L accumulateur W est un registre de travail 8 bits il n a pas d adresse comme les autres SFR Pour les instructions deux op randes c est toujours lui qui contient un des deux op randes Pour les instructions un op rande celui ci peut tre soit W soit n importe quel registre F Le r sultat de l op ration peut tre plac soit dans le registre de travail W soit dans le registre F 1 5 L Horloge De L horloge peut tre soit interne soit externe M Ba L horloge interne est constitu e d un oscillateur z S logic quartz ou d un oscillateur RC are SLEEP Avec l oscillateur Quartz on peut avoir des PIC 16F84 fr quences allant jusqu 4 10 ou 20 MHz selon le type de uC Le filtre passe bas RS C2 limite les VDD harmoniques dus l cr tage et R duit l amplitude de l oscillation il n est pas obligatoire Rex 3 oSC1 nternal s
4. EECON2 Placer OxAA dans EECON2 D marrer l criture en positionnant le bit WR Attendre la fin de l criture 10 ms EEIF 1 ou WR 0 recommencer au point 2 si on a d autres donn es crire DE OO RUE RTE Le drapeau WRERR est positionn si une erreur d criture intervient EECON1 EEIF WRERR WREN WR RD EECON2 n en est pas v ritablement un Registre Microchip l utilise en tant que registre de commande L criture de valeurs sp cifiques dans EECON2 provoque l ex cution d une commande sp cifique dans l lectronique interne du PIC 1 13 Les interruptions Une interruption provoque l arr t du programme principal pour aller ex cuter une proc dure d interruption A la fin de cette proc dure le microcontr leur reprend le programme l endroit o il s tait arr t Le PIC16F84 poss de 4 sources d interruption A chaque interruption sont associ s deux bits un bit de validation et un drapeau Le premier permet d autoriser ou non l interruption le second permet au programmeur de savoir de quelle interruption il s agit Tous ces bits sont dans le registre INTCON part le drapeau EEIF de l interruption EEI qui se trouve dans le registre EECONI 1 13 1 D roulement d une interruption Lorsque l v nement d clencheur d une interruption intervient alors son drapeau est positionn un lev Si l interruption correspondante a t valid e elle est alors d clench e l
5. U V W endc Si le programme utilise des interruptions mettre l adresse 0000 adresse du RESET une instruction de branchement au d but du programme principal org 0 goto debut Ecrire la routine d interruption l adresse 4 ORG 4 crire la routine d interruption ici RETF IE Si le programme est configur pour interdire les interruptions on peut se passer des tapes 4 et 5 Ecrire les sous programmes s il y en a Chaque proc dure commence par une tiquette qui repr sente son nom et se termine par l instruction RETURN Ecrire le programme principal commen ant par l tiquette d but si les tapes 4 et 5 sont pr sentes terminer avec la directive END 19 11 5 Exemples de programme ptite IIIIIIIK programme led_int asm on connecte un interrupteur sur RBO entr e et une LED sur RB1 sortie Sion place l interrupteur 1 la LED doit s allumer si on le met z ro elle doit s teindre ptite p 16f84A f inhx8m r dec LIST INCLUDE __ CONFIG bsf movlw movwf bcf tst btfss goto bsf goto off bcf goto end p16f84A inc _CP_OFF amp XT OSC amp PWRTE_OFF amp _WDT_OFF STATUS RPO B 00000001 TRISB STATUS RP0 PORTB 0 off PORTB 1 tst PORTB 1 tst bank 1 pour configurer RBO en entr e bank 0 PEEEEEEEEEEEEEEEEEEEEEEEEEEEEELEELEEELEELEELEEEEEEEEEEEEE EELEE LLERELEELEELEEEEEEEEEEEEE EEEE REKK I programme led tmr0 1 asm faire clignote
6. est provoqu e par le d bordement du timer TMRO Les bits associ s sont TOIE validation et TOIF drapeau 1 13 5 L interruption EEI Fin d criture dans l EEPROM Cette interruption est d clench e la fin d une criture r ussie dans l EEPROM Les bits associ s sont EEIE validation et EEIF drapeau INTCON GIE EEIE TOIF INTE RBIE TOIF INTF RBIF EECON1 EEIF WRERR WREN WR RD OPTION_REG RBPU INTEDG TOCS TOSE _PSA PS2 PS1 PSO GIE ce bit permet de valider ou d interdire globalement toutes les interruptions 1 14 L adressage indirect L adressage indirect se fait par l interm diaire des registres FSR et INDF Le registre INDF n est pas un vrai registre mais repr sente la case m moire point e par le registre d index FSR Pour lire ou crire dans une case m moire en utilisant l adressage indirect on commence par placer l adresse dans le registre FSR ensuite on lit crit dans le registre INDF 1 15 Le conteur programme Le Program Counter est un registre de 13 bits qui s incr mente automatiquement lors de l ex cution du programme On peut toutefois le modifier par programme pour r aliser ce qu on appelle un goto calcul On y acc de par les registres PCL et PCLATH 12 e PCL 8 bits est la partie basse de PC il est accessible en lecture criture e PCH 5 bits est la partie haute de PC il n est pas accessible directement On peut tout
7. format par d faut Si par exemple on place une des D cimal D nnn D 36 instructions suivantes au d but du programme tous les nnn 36 nombres sans pr fix seront interpr t s en d cimal Hexad cimal H nn H 24 LIST r dec Oxnn 0x24 RADIX dec nnh 24h les radix valables sont dec hex ou oct Binaire B B 00100100 Octal O nnn O 44 11 4 Structure d un programme crit en assembleur Un programme crit en assembleur doit respecter une certaine syntaxe et un certain nombre de r gles afin qu il soit facile lire et d buguer e Tout ce qui commence la premi re colonne est consid r comme une tiquette label permettant de faire des renvois et aussi des assignations de constantes et de variables e tout ce qui suit un point virgule est consid r comme un commentaire non interpr t par le compilateur e Un programme appara t donc comme un texte crit sur 3 colonnes la colonne de gauche contient les tiquettes la colonne du milieu contient les l instructions la colonne de droite contient des commentaires e existe diff rentes coles indiquant comment doit tre organis un programme Voici un exemple d organisation 1 Quelques lignes de commentaire pr cisant la fonction du programme 18 Configuration exemple LIST p 16f84 f inhx8m r dec INCLUDE p16f84 inc __CONFIG H 3FF9 D finition des constantes et des variables exemple led equ 0 xX equ 0x0C cblock 0x0D y Z
8. garde C est un compteur 8 bits incr ment en permanence m me si le uC est en mode sleep par une horloge RC int gr e ind pendante de l horloge syst me Lorsqu il d borde WDT TimeOut deux situations sont possibles e Si le uC est en fonctionnement normal le WDT time out provoque un RESET Ceci permet d viter de rester plant en cas de blocage du microcontr leur par un processus ind sirable non contr l e Si le uC est en mode SLEEP le WDT time out provoque un WAKE UP l ex cution du programme continue normalement l o elle s est arr t e avant de rentrer en mode SLEEP Cette situation est souvent exploit e pour r aliser des temporisations L horloge du WDT est ajust e pour que Le Time Out arrive toutes les 18 ms Il est cependant possible d augmenter cette dur e en faisant passer le signal Time Out dans un pr diviseur programmable partag avec le timer TMRO l affectation se fait l aide du bit PSA du registre OPTION_REG PS2 PSI ra Div o PSA 1 gt on utilise le pr diviseur 01 0 0711 o PSA 0 gt pas de pr diviseur affect TMRO Le rapport du pr diviseur est fix par les bits PSO PS1 et PS2 du registre OPTION_REG voir tableau ci contre L utilisation du WDT doit se faire avec pr caution pour viter la r initialisation inattendue r p t e du programme Pour viter un WDT timeOut lors de l ex cution d un programme on a deux possibilit s e inhiber le WDT
9. Les microcontmleurs PIC de Microchip Le 16F84 s h L r Ps r T Sommaire INTRODUCTION SR en Ans cine rom nn D 3 l L PTE TOR TEE E E E EA 4 1 1 Aspect externe du 16F84 enr etres rental pnde lets dard rene tn ne des dons de rer ends te 4 1 2 La m moire programme flaSh asset nan tan nn ent 5 1 3 L im moire RAM s RrgiStre Snee a a A E EE 5 1 4 LALY et l registre Mr ane conne a a a Se a a S 5 1 5 BHOG Eorann naina aN A ONA OERA E TAa A ANa A VEN Aa 6 1 6 Le ports d E S POR TA EL ART RSS A a aeaa A aa 6 1 7 LS DONS M ETS PORTES INR SA Sn nd 7 1 8 Le Timer TMRO sasiore RE EAE ea aai AE ed na EEEa ea a 7 1 9 Le Timer Watchdog WDT Chien de garde 8 LL MES MOSS L EP Se ra aE E a eea a a E Ea e tn tn in A 8 TL La m moire EEPROM de configuration us e arsenal dns daslars s 9 1 12 La m moire EEPROM de donn es 9 1 12 1 Proc dure de lecture dans l EEPROM de donn es 10 1 12 2 Proc dure d criture dans l EEPROM de donn es 10 LES ESS MST DONS ER RL A A A Re AS QU En ur rente 10 1 13 1 D roulement d une Interprete amnn Are ee ann ns 10 1 13 2 L interruption INT Entr e RBO DU PORTB isansisiimanenm testament date 11 1 13 3 L interruption RBI RB4 A RB7 DU PORTB 11 1 13 4 L interruption TOI D bordement du Timer TMRO sssssrrnrrrrrrrrrrrrrrrrrrrrrrrrrrerree 11 1 13 5 interruption EEI Fin d criture dans l EPRO OM Ed a date 11 EE A
10. O en sortie movlw B 00001101 prescaler affect au WDT prescaler 101 32 movwf OPTION REG d bordement du WDT tous les 32 x 18ms 0 576s bcf STATUS RPO select bank0 moviw 1 bit 0 de W 1 le autres 0 Loop sleep passe en mode sleep r veil dans 0 576 s xorwf PORTB f compl mente le bit 0 de PORTB goto Loop recommence la loupe ind finitivement end PEEEEEEEEEEEEEEEEEEEEEEEEEELEELEELEEEEEEEEEEEEEEEEEEEEEEE EELEE LEELEE I Clignotement d une LED reli e n importe quelle sortie du port B La temporisation est r alis e l aide d une boucle de retard base de 3 boucles imbriqu es N1 256 N2 256 N3 pr ciser TL N1 1 x 1 2 2 gt N1 0 256 gt T1 767 us T2 T1 N2 1 x 1 2 T1 2 N2 0 gt T2 196352 us T3 T2HN3 1 x 142412 2 2 N3 x 196355 1 us je croix PRERE ERE III ANA NII HIHI III list p 16f84 f inhx8m r dec include p16f84A inc __config_CP_OFF amp _ WDT_ OFF amp _XT OSC amp PWRTE_ OFF N1 equ 0x0D N1 N2 N3 compteurs temporisateur N2 equ 0x0E N3 equ 0x0F gramme principal bsf STATUS RPO select bankl clrf TRISB programme tous les bits du bort B en sortie bcf STATUS RPO select bank0 loop comf PORTB f compl mente PORTB movlw 3 3 donne une tempo voisine de 0 6 s call tempo goto loop recommence la loupe ind finitivement panne pOC dure de temporisation tempo movwf N3 copier W dans N3 tmp decfsz N1f boucle int rieure goto tmp decfsz
11. W dans la case m moire d adresse 2C MOVWE EEDATA recopie W dans le registre EEDATA MOVF 0x08 recopie W dans le registre EEDATA d 1 MOVF F d recopie le registre F soit dans W soit dans lui m me Recopier un registre sur lui m me peut para tre sans int r t mais comme E E i l instruction positionne les indicateurs cela peut s av rer int ressant d 0 1 17 6 Le jeu d instructions 14 INSTRUCTI ONS OPERANT SUR REGISTRE direct indicateurs Cycles ADDWF F d W F gt W F 7 d C DC Z 1 ANDWF F d WandF W F d Z 1 CLRF F Clear F Z 1 CLRW Clear W Z 1 CLRWDT Clear Watchdoc timer TO PD 1 COMF F d Compl mente F gt W F d Z 1 DECF F d d cr mente F gt W F d Z 1 DECFSZ F d d cr mente F gt W F d skip if 0 1 2 I NCF F d incr mente F gt W F d Z 1 INCFSZ F d incr mente F gt W F d skip if 0 1 2 IORWF F d WorF gt WF d Z 1 MOVF Fid F gt W F d Z 1 MOVWF F WF 1 RLF F d rotation gauche de F a travers C gt W F d C 1 RRF F d_ rotation droite de F a travers C gt W F d 1 SUBWF F d F W gt 4 WF d C DC Z 1 SWAPF F d permute les 2 quartets de F gt W F d 1 XORWF F d W xorF gt W F d Z 1 INSTRUCTI ONS OPERANT SUR BIT BCF F b RAZ du bit b du registre F 1 BSF F b RAU du bit b du registre F 1 BTFSC F b te
12. aciliter l interfa age avec le monde ext rieur sans n cessiter l ajout de composants externes Les PICs sont des composants RISC Reduce Instructions Construction Set ou encore composant jeu d instructions r duit L avantage est 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 La famille des PICs est subdivis e 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 de 14 bits et dont font partie la 16F84 et 16F876 et la famille High End qui utilise des mots de 16 bits Nous nous limiterons dans ce document la famille Mid Range et particuli rement au PIC 16F84 sachant que si on a tout assimil on pourra facilement passer une autre famille et m me un autre microcontr leur Pour identifier un PIC on utilise simplement son num ro e Les 2 premiers chiffres indiquent la cat gorie du PIC 16 indique un PIC Mid Range e Vient ensuite parfois une lettre L celle ci indique que le PIC peut fonctionner avec une plage de tension beaucoup plus tol rante e Vient en suite une ou deux lettres pour indiquer le type de m moire programme 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 e On trouve ensuite un nombre qui constitue la r f rence
13. d une fa on permanente en mettant 0 le bit WDTE dans l EEPROM de configuration e Remettre le WDT 0 p riodiquement dans le programme l aide de l instruction CLRWDT pour viter qu il ne d borde Horloge gt WDT timeout 1 Pr diviseur 1 programmable PS2 PS1 PSO 1 10 Le mode SLEEP Le PIC peut tre plac en mode faible consommation l aide de l instruction SLEEP Dans ce mode l horloge syst me est arr t e ce qui arr te l ex cution du programme Pour sortir du mode SLEEP il faut provoquer un WAKE UP pour cela il y a 3 possibilit s e RESET externe d l initialisation du PIC en mettant l entr e MCLR 0 Le PIC reprend l ex cution du programme partir du d but e Timeout du chien de garde WDT si celui ci est valid Le PIC reprend le programme partir de l instruction qui suit l instruction SLEEP e Interruption INT sur RBO ou RBI sur RB4 RB7 ou EEI fin d criture en EEPROM de donn es Le bit de validation de l interruption en question doit tre valid par contre le WAKE UP a lieu quelque soit la position de bit de validation globale GIE On a alors deux situations 9 o GIE 0 Le PIC reprend l ex cution du programme partir de l instruction qui suit l instruction SLEEP l interruption n est pas prise en compte o GIE 1 Le PIC ex cute l instruction qui se trouve juste apr s l instruction SLEEP puis se branche l adresse 0004 pour ex cuter la proc dure d interr
14. du PIC e On trouve ensuite un tiret suivi de deux chiffres indiquant la fr quence d horloge maximale que le PIC peut recevoir Donc un 16F84 04 est un PIC Mid Range donc la m moire programme est de type FLASH de r f rence 84 et capable d accepter une fr quence d horloge de 4MHz Notez que les PICs sont des composants STATIQUES c est dire que la fr quence d horloge peut tre abaiss e jusque l arr t complet sans perte de donn es et sans dysfonctionnement Une version 10 peut donc toujours tre employ e sans probl me en lieu et place d une 04 Pas l inverse naturellement Pourquoi choisir un PIC Les performances sont identiques voir sup rieurs ses concurrents Les prix sont les plus bas du march Tr s utilis donc tr s disponible Les outils de d veloppement sont gratuits et t l chargeables sur le WEB Le jeu d instruction r duit est souple puissant et facile ma triser Les versions avec m moire flash pr sentent une souplesse d utilisation et des avantages pratiques ind niables e La communaut des utilisateurs des PICs est tr s pr sente sur le WEB On trouve sur le net quasiment tout ce dont on a besoin tutoriaux pour d marrer documents plus approfondis sch mas de programmeurs avec les logiciels qui vont avec librairies de routines forums de discussion LE PIC 16F84 Les caract ristiques principales du 16F84 sont Une m moire programme de type flash de 1K 1024 mots de 14 bits U
15. e programme arr te ce qu il est en train de faire et va ex cuter la proc dure d interruption qui se trouve l adresse 4 en ex cutant les tapes suivantes e l adresse contenue dans le PC Program Counter est sauvegard e dans la pile puis remplac e par la valeur 0004 adresse de la routine d interruption e Le bit GIE est plac 0 pour inhiber toutes les interruptions afin qu on ne soit pas d rang s pendant l ex cution de la proc dure d interruption e Ala fin de la proc dure d interruption instruction RETFIE o le bit GIE est replac l tat haut autorisant ainsi un autre v nement o le contenu du PC est recharg partir de la pile ce qui permet au programme de reprendre l o il s est arr t Deux remarques importantes sont faire 1 13 2 L interruption I NT Entr e RBO du port B Cette interruption est provoqu e par un changement d tat sur l entr e RBO du port B quand elle est programm e en entr e Elle est g r e par les bits INTE bit de validation 1 oui O non INTF drapeau INTEDG front de d clenchement 1 montant 0 descendant registre OPTION REG 1 13 3 L interruption RBI RB4 A RB7 du port B Cette interruption est provoqu e par un changement d tat sur l une des entr es RB4 RB7 du port B Le front n a pas d importance Les bits associ s sont RBIE validation et RBIF drapeau 1 13 4 L interruption TOI D bordement du Timer TMRO Cette interruption
16. efois le modifier indirectement l aide du registre PCLATH qui est une registre SFR accessible en lecture criture et o seuls 5 bits sont utilis s 1 15 1 GOTO calcul Si on veut modifier le Program Counter pour r aliser un saut il faut d abord placer la partie haute dans le registre PCLATH ensuite on crit la partie basse dans PCL Au moment de l criture dans PCL le contenu de PCLATH est recopi automatiquement dans PCH PCLATH Ecriture dans PCL Dans les instructions de branchement l adresse de destination est cod e sur 11 bits Lors de l ex cution de telles instruction les 11 bits sont copi s dans PC les deux bits manquants sont pris dans PCLATH Pour le 16F84 On n aura pas besoin de ces bits car pour adresser 1024 lignes de programme seuls 10 bits du Programme Counter sont utilis s PC 11 bits venant de l instruction 1 16 Les indicateurs Les indicateurs C DC et Z sont des bits qui nous informent sur le r sultat d une instruction Ils sont situ s dans le registre STATUS 7 DC C e C Carry ce bit II passe 1 lorsque le r sultat d une op ration d passe la valeur FF ou si le r sultat est n gatif e DC Digital Carry ce bit passe 1 lorsque une retenue s est produite entre les bit 3 et 4 e Z Zero Ce bit passe 1 pour indiquer que le r sultat de l op ration est nul 1 17 Les instructions du 16F84 Tous les PICs Mid Range ont un
17. gt RA4 horloge externe pour le timerTMRO Vdd RA4 est une E S drain ouvert si on veut l utiliser comme sortie pour allumer une LED par exemple il ne faut pas oublier de mettre une lk Aa i RA4 r sistance externe vers Vdd Le sch ma ci contre illustre pour les non lectronicien le principe d une sortie drain ouvert ou collecteur ouvert si LED masse Si RA4 est plac e 1 l interrupteur est ouvert la sortie est d connect e d o la n cessite de la r sistance externe pour amener le courant de l alimentation vers la LED la valeur de 1k est donn e titre indicatif vous d ajuster selon votre application RA4 est positionn e 0 l interrupteur est ferm la sortie est reli e la Registre OPTION_REG RBPU INTEDG TOCS TOSE PSA PS2 PS1 PSO 1 7 Le port d E S PORTB Le port port B d sign par PORTB est un port bidirectionnel de 8 bits RBO RB7 Toutes les broches sont compatibles TTL La configuration de direction se fait l aide du registre TRISB Voir PORTA TRISA En entr e la ligne RBO appel e aussi INT peut d clencher l interruption externe INT En entr e une quelconque des lignes RB4 RB7 peut d clencher l interruption RBI Nous reviendrons l dessus dans le paragraphe r serv aux interruptions 1 8 Le Timer TMRO C est un compteur 8 bits ayant les caract ristiques suivantes e l est incr ment en permanence soit par l horl
18. ikadressage indirectes ta a e a D e EU AN 11 LIS Lecont eur pr graMMe seniai a a A mp a a E a A AA TE 11 LIST GOTO COEUR iii a ea a aae iae See aT Ea KAS 12 ILo LS indiate rS RER na a a a aaa a a es 12 1 17 Les instructions du FGF ner Sister dt te dE A et ne nn nr cest 12 1 17 1 Les instructions orient es octet adressage direct 12 1 17 2 Les instructions orient es DIS dan nant mme A 13 1 17 3 Les instructions op rant sur une donn e adressage imm diat ercerre 13 1 17 4 Les instructions de saut et appel de proc dures 13 1 17 5 Le jeu d instructions Enr on nee tnt cdi ta ei eds nu 14 1 17 6 Etat de quelque registre l initialisation 14 II Les outils de d veloppement RS ANNE re 15 IsI Deux Motsu r MPLAB rrine a a a En Ms NA A 15 II 2 Les directives de MPASM An en rer reed nn NA der des 16 11 2 1 Lessdirectiyes l s plus tiliS eS esii ieni aa at i a an 16 1 37 Format des roms sn one rare nds hate nn nd TEKEE TEE TERA T 17 11 4 Structure d un programme crit en assembleur 17 11 5 Exemples de programme sssssssssisssssstttiktkk kkt ttnn EEEE EEE EEEE EEEREN EEEE EEEE EEEE 19 l1 6 R f rences ane E E E O E E nine E 22 NTRODUCTI ON Un PIC est un microcontr leur c est une unit de traitement de l information de type microprocesseur laquelle on a ajout des p riph riques internes permettant de f
19. ion inhib e 0 temporisation valid e e Bit 13 4 CP Protection en lecture du code programme 1 pas de protection 0 protection activ e 1 12 La m moire EEPROM de donn es La m moire EEPROM de donn es est constitu e de 64 octets commen ant l adresse 0x2100 que l on peut lire et crire depuis un programme Ces octets sont conserv s apr s une coupure de courant et sont tr s utiles pour conserver des param tres semi permanents On y acc de l aide des registres EEADR et EEDATA toute lecture criture dans le registre EEDATA se fait dans la position m moire point e par EEADR En fait EEADR contient l adresse relative par rapport la page qui commence en 0x2100 autrement dit l adresse va de 0 63 Deux registres de contr le EECON1 et EECON2 sont associ s la m moire EEMROM 10 La dur e d criture d un octet est de l ordre de 10 ms la fin de chaque criture r ussie est annonc par le drapeau EEIF et la remise z ro du bit RW du registre EECON1 Le drapeau EEIF peut d clencher l interruption EEI si elle a t valid e 1 12 1 Proc dure de lecture dans l EEPROM de donn es e Placer l adresse relative dans EEADR e Mettre le bit RD de EECONI 1 e Lire le contenu du registre EEDATA 1 12 2 Proc dure d criture dans l EEPROM de donn es L criture dans L EEPROM doit tre autoris e bit WREN 1 Placer l adresse relative dans EEADR Placer la donn e crire dans EEDATA Placer 0x55 dans
20. jeu de 35 instructions Chaque instruction est cod e sur un mot de 14 bits qui contient le code op ration OC ainsi que l op rande A part les instructions de saut toutes les instructions sont ex cut es en un cycle d horloge Sachant que l horloge fournie au PIC est pr divis e par 4 si on utilise par exemple un quartz de 4MHz on obtient donc 1000000 cycles seconde cela nous donne une puissance de l ordre de 1MIPS 1 Million d Instructions Par Seconde Avec une horloge de 20MHz on obtient une vitesse de traitement plus qu honorable 1 17 1 Les instructions orient es octet adressage direct Ce sont des instructions qui manipulent les donn es sous forme d octets Elles sont cod es de la mani re suivante 13 6 bits pour l instruction logique car comme il y a 35 instructions il faut 6 bits pour pouvoir les coder toutes 1 bit d pour indiquer si le r sultat obtenu doit tre conserv dans le registre de travail accumulateur W de l unit de calcul W pour Work ou sauv dans un registre F F pour File Reste 7 bits pour encoder l adresse de l op rande 128 positions au total Probl me 7 bits ne donnent pas acc s la m moire RAM totale donc voici l explication de la division de la RAM en deux banks Pour remplacer le bit manquant on utilise le bit RPO du registre STATUS Bien qu on ne l utilise pas sur le 16F84 le bit RP1 est aussi r serv pour le changement de bank le 16F876 par exemple po
21. la remplacera soit par la constante 0x20 a peut tre une constante s il s agit d une instruction avec adressage imm diat ou d une adresse s il s agit d une instruction avec adressage direct DEFINE d finit un texte de substitution DEFINE pos x y z y 2z x Chaque fois que le compilateur rencontrera le texte pos x y z il le remplacera par y 2z x ORG d finit la position dans la m moire programme partir de laquelle seront inscrites les instructions suivantes CBLOCK ENDC d finit un bloc de constantes CBLOCK 0X0C varl 0x0C var2 0x0D k 0x0D varl var2 k ENDC 17 e DE pour d clarer des donn s qui seront stock e dans l EEPROM de donn e au moment de l implantation du programme sur le PIC ORG 0x2100 DE Programmer un PIC rien de plus simple 70 Z e DT pour d clarer un tableau RETLW proc addwf PCL f saut la position position suivante W DT Programmer un PIC 23 0x47 L assembleur remplacera cette ligne par la suite d instructions RTLW P RTLW r RTLW o RTLW C RTLW 23 RTLW 0x47 e END indique la fin du programme Pour plus de d tail sur les directives de MPASM voir MPASM USER S GUIDE 11 3 Format des nombres L assembleur reconna t les nombres en d cimal hexad cimal binaire o octal Pour pr ciser la base il faut utiliser les pr fixes pr cis s dans le tableau ci dessous On peut l aide de la directive LIST ou RADIX d finir Base Pr fixe Exemple 36 un
22. mate pour arr ter il faut cliquer sur le bouton ha t l Pour plus de d tail consulter le manuel d utilisation de MPLAB 11 2 Les directives de MPASM Les directives de l assembleur sont des instructions qu on ajoute dans le programme et qui seront interpr t es par l assembleur MPASM Ce ne sont pas des instructions destin es au PIC 11 2 1 Les directives les plus utilis es LIST permet de d finir un certain nombre de param tres comme le processeur utilis p la base par d faut pour les nombres r le format du fichier hex produire f ainsi que d autres param tres Exemple LIST p 16F84A r dec f inhx8m INCLUDE permet d ins rer un fichier source Par exemple le fichier p16f84A inc contient la d finition d un certain nombre de constante comme les noms des registres ainsi que les noms de certain bits INCLUDE p16f84A inc __ CONFIG permet de d finir les 14 fusibles de configuration qui seront copi dans l EPROM de configuration lors de l implantation du programme dans le PIC protection de code type d oscillateur chien de garde et temporisation du d part __ CONFIG B 11111111111001 __ CONFIG H 3FF9 si le fichier p16f84 inc a t ins r on peut utiliser les constantes pr d finies __ CONFIG CP OFF amp _XT OSC amp _PWRTE OFF amp _WDT_ OFF EQU permet de d finir une constante ou une variable XX EQU 0x20 Chaque fois que le compilateur rencontrera XX il
23. ne m moire RAM constitu e o Des registres de control SFR Special Function Registers o 68 octets de RAM utilisateur appel s aussi GPR General Propose Resisters Une m moire EEPROM de donn e de 64 octets Deux ports d entr e sortie un de 8 bits et un de 5 bits Un timer Compteur cadenc par une horloge interne ou externe Un chien de garde compteur qui est un timer particulier Un pr diviseur de fr quence programmable permettant d tendre les possibilit s du Timer TMRO et du chien de garde WDT 4 sources d interruption L horloge peut tre g n r e par 4 types d oscillateurs s lectionnables Protection de code Fonctionnement en mode sleep pour r duction de la consommation Programmation par mode ICSP n Circuit Serial Programming 14 bits config M moire TT programme de type Flash He utilisateur yp 64 octets 1024 mots de 14 bits RUE re RUE re EE KE KE I 1 Aspect externe du 16F84 Le 16F84 est commercialis dans un bo tier 18 broches classique RA2 O1 RAI RA3 02 RAO RA4 TOCKI O3 OSCI MCLRO 4 OSC2 vss O5 Vdd RBO INT O 6 RB7 RB1 O7 RB6 RB2 O8 RB5 RB3 O9 RB4 Fig 1 1 brochage du 16 F84 1 2 La m moire programme flash Cette m moire de 1024 mots stocke le programme Elle est non volatile et reprogrammable souhait Chaque position de 14 bits contient une instruction L emplacement du programme peut se situer n importe quel endroit de la m moire Cependant il fa
24. new ou cliquez sur l ic ne feuille blanche e Taper le petit programme ci dessous dans la fen tre qui vient de s ouvrir Ce programme incr mente sans fin la position m moire RAM 0C loop incf 0x0C 1 goto looop end e Sauvegarder file gt save ce programme dans la directory de votre chois sous le nom bidon asm e Lancer la compilation du programme l aide de la commande project gt Quikbuild Apparemment il y a un probl me le compilateur nous dit qu il y une erreur la ligne 2 Error 113 C 1 IBIDON ASM 2 Symbol not previously defined looop Evidemment le label loop d finit dans la ligne pr c dente prend seulement deux o Corrigez et recommencez Cette fois a a l air d aller On peut v rifier que le compilateur cr e le fichier bidon hex dans la m me directory o se trouve bidon asm Les fichiers bidon cod bidon err et bidon Ist ne nous servent rien pour l instant on peut les d truire e Nous pouvons maintenant ex cuter notre programme en simulation pour voir s il r alise bien la tache demand e 16 Ouvrez la fen tre qui visualise la m moire RAM view gt FileRegisters La case m moire 0x0C se trouve sur la premi re ligne ligne 0000 colonne 0C Ex cuter maintenant le programme PAS PAS en cliquant chaque fois sur le bouton Step Into L en observant la case m moire 0C on dirait que a marche On peut aussi ex cuter en continu en cliquant sur le bouton ani
25. oge interne Fosc 4 mode timer soit par une horloge externe appliqu e la broche RA4 du port mode compteur Le chois de l horloge se fait l aide du bit TOCS du registre OPTION REG o TOCS 0 gt horloge interne o TOCS 1 gt horloge externe appliqu e RA4 e Dans le cas de l horloge externe on peut choisir le front sur lequel le TIMER s incr mente o TOSE 0 gt incr mentation sur fronts montants o TOSE 1 gt incr mentation sur fronts descendants PS2 PS1L PSO Div e Quelque soit l horloge choisie on peut la passer dans un diviseur de fr quence programmable prescaler dont le rapport est fix s par les bits PS0 PS1 et PS2 du registre OPTION REG tableau ci contre L affectation ou non du pr diviseur se fait l aide du bit PSA du registre OPTION_REG o PSA 0 gt on utilise le pr diviseur o PSA 1 gt pas de pr diviseur affect au chien de garde e Le contenu du timer TMRO est accessible par le registre qui porte le m me nom Il peut tre lu ou crit n importe quel moment Apr s une criture l incr mentation est inhib e pendant deux cycles instruction e Au d bordement de TMRO FF gt 00 le drapeau TOIF est plac 1 Ceci peut d clencher l interruption TOI si celle ci est valid e Registre OPTION_REG TOCS TOSE PSA PS2 PS1 PSO Pr diviseur programmable Horloge Syst me Fosc PS2 PS1 PSO 1 9 Le Watchdog Timer WDT Chien de
26. r une LED connect e sur une sortie du port B la temporisation permettant d ajuster la fr quence est obtenue par scrutation des d bordement du timer TMRO titre LIST p 16f84A f inhx8m r dec __CONFIG_CP_OFF amp _XT_OSC amp _PWRTE_OFF amp _WDT_OFF INCLUDE p16f84A inc CTR equ bsf cirf movlw movwf bcf encore comf call goto delay movlw movwf tst btfss goto bcf decfsz goto return end 0x0C STATUS RPO TRISB B 00000111 OPTION_REG STATUS RPO PORTB f delay encore 5 CTR INTCON TOIF 1 INTCON TOIF CTRf tst bank 1 pour TRISB et OPTION _ REG PORTB en sortie PSA 0 pr diviseur affect TMRO PS1 PS2 PS3 111 div 256 TOCS 0 horloge TMRO fosc 4 div retour bank 0 compl menter PORTB attendre un peu recommencer pour attendre que TMRO d borde 5 fois ce qui donne 5 x256 x 256 us attendre que TMRO d borde baisser le drapeau pour recommencer CTR fois 20 HkkkbkkbeRrRREERHEERRIERHEIREREIERHIERRRIEERRIERRRIENRHIHRRRRIENRHIHRRRIENERIHIRRRRIENRRIHRRHRIERRIERRHRERERIERRHIRERIEIENRRREE RIRE I programme led tmr0 2 asm faire clignoter une LED connect e sur une sortie du port B La temporisation permettant d ajuster la fr quence est obtenue en comptant les d bordements du timer TMR 0 l interieur de l interruption TOI TMRO est utilis en timer avec un pr diviseur de 256 En comptant 5 d bordement on obtient une temporisa
27. ss de 4 banks 1 17 2 Les instructions orient es bits Ce sont des instructions destin es manipuler directement les bits d un registre d une case m moire Elles sont cod es de la mani re suivante 4 bits pour l instruction 3 bits pour indiquer le num ro du bit manipuler de 0 7 7 bits pour indiquer l op rande 1 17 3 Les instructions op rant sur une donn e adressage imm diat Ce sont les instructions qui manipulent des donn es qui sont cod es dans l instruction directement Elles sont cod es de la mani re suivante L instruction est cod e sur 6 bits Elle est suivie d une valeur IMMEDIATE cod e sur 8 bits donc de 0 255 1 17 4 Les instructions de saut et appel de proc dures Ce sont les instructions qui provoquent une rupture dans la s quence de d roulement du programme Elles sont cod es de la mani re suivante Les instructions sont cod es sur 3 bits La destination est cod e sur 11 bits Nous pouvons d j en d duire que les sauts ne donnent acc s qu 2K de m moire programme 21 Pas de probl me pour le 16F84 qui ne poss de que 1k de m moire programme 1 17 5 Exemples d instruction MOVWF F recopie W dans le registre d adresse F W gt F F File d signe l adresse de n importe quel registre SFR ou GPR Pour les registres SFR on peut utiliser leurs noms condition d inclure le fichier pZ6F84 inc dans le programme MOVWEF Ox2C recopie
28. ste le bit b de F si 0 saute une instruction 1 2 BTFSS F b teste le bit b de F si 1 saute une instruction 1 2 INSTRUCTI ONS OPERANT SUR DONNEE I mmediat ADDLW K W K gt W C DC Z 1 ANDLW K WandK gt W Z 1 IORLW K WorK gt W Z 1 MOVLW K K gt W 1 SUBLW K K W gt W C DC Z 1 XORLW K W xorK gt W Z 1 INSTRUCTI ONS GENERALES CALL L Branchement un sous programme de label L 2 GOTO L branchement la ligne de label L 2 NOP No operation 1 RETURN retourne d un sous programme 2 RETFI E Retour d interruption 2 RETLW K retourne d un sous programme avec K dans W 2 SLEEP se met en mode standby TO PD 1 W F d signifie que le r sultat va soit dans W si d 0 ou w soit dans F si d 1 ou f 1 17 7 Etat de quelque registre l initialisation STATUS IRP RP1 RPO TO PD Z DC C 000x xxxx TRISA 11111 OPTION REG RBPU INTEDG TOCS TOSE PSA PS2 PS1 PSO 11111111 TRISB 11111111 INTCON GIE EEIE TOIF INTE RBIE TOIF INTF RBIF 0000 000x PORTA XXXXX EECONI EEIF WRERR WREN WR RD 0x000 PORTB XXXX XXXX 15 II LES OUTILS DE DEVELOPPEMENT Les tapes n cessaires permettant de voir un programme s ex cuter sur un PIC sont e Ecrire un programme en langage assembleur dans un fichier texte et le sauvegarder avec l extension asm e Compiler ce programme avec l assembleur MPASM fourni par Microchip Le r sultat est un fichier avec l extension hex contenant
29. tion de 4 x 256 x 256 us VEEEEEEEEEEEEEEEEEEEEEEEEEELEE LEELEE EEEE LERE I list p 16f84 f inhx8m r dec __config PWRTE_OFF amp _CP_OFF amp _WDT_OFF amp _XT_OSC include p16f84 inc CTR equ 0x0C varible de comptage j marrage sur RESET org 0 goto start Procedure d interruption org 4 bcf INTCON TOIF baisser le drapeau lev par l interruption decfsz CTR f retfie comf PORTB f changer l tat de la LED movlw 5 initializer compteur movwf CTR retfie Programme principal start bsf STATUS RPO select bankl clrf TRISB programme tous les bits du bort B en sortie movlw B 00000111 mode timer pr diviseur pour TMRO div 256 movwf OPTION REG bcf STATUS RPO select bank0 movlw B 10100000 autorisation Interruption TOI movwf INTCON movlw 5 Initialise CTR pour le premier passage movwf CTR Loop goto Loop le PIC reste plant ici et n en sort que pour aller executer une interuption due au d bordement de TMRO end 21 PEEEEEEEEEEEEEEEEEEEEEEEEEEEEE LEELEE EEE EEELEELEELEEEEEELEEELEEELEEEEEEELEEE EEEE LLR k I Clignotement d une LED reli e la sortie 0 du port B Les autres bits du port B ne sont pas affect s La temporisation est r alis e l aide du Watchdog timer PRERE oook list p 16f84 f inhx8m r dec __config PWRTE_OFF amp _CP_OFF amp _WDT_ONG amp _XT_OSC include p16f84A inc bsf STATUS RPO select bankl bcf TRISB 0 RB
30. une suite d instruction compr hensible par le pic e Transplanter le fichier hex dans la m moire programme du PIC m moire flash l aide d un programmateur ad quat On peut utiliser les programmateurs de Microchip ou tout autre programmateur achet ou r alis par soit m me e Mettre le PIC dans son montage final mettre sous tension et admirer le travail Microchip propose gratuitement l outil de d veloppement MPLAB qui regroupe l diteur de texte le compilateur MPASM un outil de simulation et le logiciel de programmation Le programmateur lui m me n est malheureusement pas gratuit Pour ce qui nous concerne nous utiliseront MPLAB pour crire compiler et ventuellement simuler nos programmes ensuite nous utiliserons un programmateur fait maison pour implanter les programmes dans la m moire flash du PIC Moi j utilise le programmateur J DM avec le logiciel ICPROG les deux sont disponibles gratuitement sur le Web 11 1 Deux mot sur MPLAB MPLAB peut tre trouv sur les CD distribu s par Microchip ou t l charg directement du site Web http www microchip com Nous allons r aliser un tout petit programme sans grand int r t pour voir la proc dure de fonctionnement avec MPLAB 6 30 e Debugger Select tool MPLAB SIM faire une fois apr s installation de MPLAB e Configure Select Device PIC16F64A e Ouvrir une nouvelle fen tre de l diteur pour commencer crire un programme file gt
31. uption Dans le cas o l instruction suivant SLEEP n est pas d sir e il faut utiliser l instruction NOP L utilisation des interruptions pour r aliser un WAKE UP doit tre utilis e avec pr caution Voir le data sheet 1 2 du 16F84 pour plus de pr cisions 1 11 La m moire EEPROM de configuration Pendant la phase d implantation d un programme dans la m moire programme du PIC on programme aussi une EEPROM de configuration constitu e de 5 mots de 14 bits 4 mots d identification ID partir de l adresse 0x2000 pouvant contenir un rep rage quelconque que nous n utiliserons pas e 1 mot de configuration adresse 0x2007 qui permet o de choisir le type de l oscillateur pour l horloge o de valider ou non le WDT timer o d interdire la lecture des m moires EEPROM de programme et de donn es 13 12 11 10 9 8 7 6 5 4 3 2 1 0 CP CP CP CP CP CP CP CP CP CP PWRTE WDTE FOSC1 FOSCO e bits 1 0 FOSC1 FOSCO S lection du type d oscillateur pour l horloge 11 Oscillateur RC 10 Oscillateur HS High speed quartz haute fr quence jusqu 10 MHz 01 Oscillateur XT c est le mode le plus utilis quartz jusqu 4 MHz 00 Oscillateur LP Low power consommation r duite jusqu 200 kHz e bit 2 WDTE validation du timer WDT chien de garde 1 WDT valid 0 WDT inhib e Bit 3 PWRTE validation d une temporisation la mise sous tension 1 temporisat
32. ut savoir que suite un RESET ou lors de la mise sous tension le PIC commence l ex cution l adresse 00004 De plus lorsqu il y a une interruption le PIC va l adresse 00044 Il est donc conseill de placer le d but du programme apr s l adresse 00044 et de mettre un branchement au d but du programme l adresse 00004 et un branchement au d but de la routine d interruption s il y en a une l adresse 00044 Le programme est implant dans la flash l aide d un programmateur hard soft sur lequel nous reviendrons dans la suite de ce document 1 3 La m moire RAM Rrgistres La m moire RAM est constitu e de deux parties e Les registres SFR Special Function Register ce sont les registres de fonctionnement du PIC L ensemble de ces registres est souvent appel fichier des registres Nous reviendrons sur ces registres tout le long de ce document A 0 1 2 3 4 5 e Les registres GPR General Propose PORTB TRISB 6 7 l utilisateur peut utiliser pour stocker ses EEDATA EECON1 8 9 B C variables et ces donn es On remarquera TERA EEADR EECON2 A T e e a p PCLATH PCLATH nature les position de la son INTCON INTCON 8 toujours appel registres 8 8 8 Register sont des positions m moire que 8 8 8 8 8 La m moire RAM est organis e en deux banks pour acc der un registre il faut d abord se placer dans le bank o il se trouve Ceci est r alis en positionnant le bit RPO du registre STATUS
Download Pdf Manuals
Related Search
Related Contents
STATISTICS, TELEMATIC NETWORKS AND EDI BULLETIN Bedienungsanleitung UM MC-CPU-78K0RIE3 CPU Daughter Card 31445 - C (Alteração MAR FP7 Positioning Unit User`s Manual, WUME-FP7POSP-02 Manuel DSO Nano Dell S520 Projector Quick Start Manual MANUAL SF-300.CDR Avaya BCM 2.0 Personal Call Manager User Guide Copyright © All rights reserved.
Failed to retrieve file