Home
2 Programmation du PIC 16F84/16F870
Contents
1. calcule le ou exclusif de la variable Var et du contenu du registre W Z est activ si le r sultat est nul ce qui veut dire que Var et W avaient le m me contenu apr s ex cution de l instruction la variable Var est inchang e et W vaut z ro dans ce cas Move W Var ne modifie pas Z mais Move Var W modifie Z Z 1 si Var contient z ro Il faut au d but regarder chaque fois la feuille de codage verte voir plus loin pour v rifier ce que fait exactement l instruction Le bit C est activ s il y a d passement de capacit dans une addition soustraction ou d calage L aussi il faudra faire tr s attention Le bit D est utile pour calculer en d cimal mais il est rarement utilis PortA tr Variables Registres de commande et modes 3 Fig 2 Mod le simple du PIC 8 bits picgexe3 2 4 Initialiser les ports Comme on l a vu tout programme commence par des d clarations quel est le processeur quels noms sont donn s aux bits des ports aux variables Au d but du programme il faut initialiser les directions de ports en entr e ou en sortie Avec les PIC des instructions sp ciales permettent d initialiser ces registres de direction TrisA et TRisB En CALM elles s crivent Move W TrisA mais Move TrisA W ou Set TrisA bit n est pas possible Un z ro programme une sortie Par d faut si on oublie de d finir les registres TrisA ou TrisB les ports sont en entr e apr s une Raz remise z ro c
2. CO C1 sont des compteurs pour boucle d attente Compteur est la variable qui compte lentement et est copi e sur le port B pour tre visualis e chaque changement On pourrait d clarer Compteur 16 20 Co 16 21 ou Compteur 1 C1 16 22 On pr f re comme dans le programme ci dessous r server un position m moire avec la pseudoinstruction Blk 16 1 la variable est 8 bits mais l assembleur PIC doit consid rer que les variables ont la m me taille que les instructions 12 14 ou 16 bits des processeurs de la famille PIC Il faut naturellement dire alors partir de quelle adresse on trouve ce bloc de variables Loc 160 et mettre au d but du programme un Loc O pour dire que le programme commence en z ro Ceci sera fait d s que les programmes deviennent plus complexes Boucle PicGTO Comptage des actions sur le A Call Delai poussoir gauche TestSkip BS PortA bSwitch Proc 16F84 Jump A Ex cut si bit clear DebVar 16 20 B Call Delai TestSkip BC PortA bSwitch Constant Ports bSwitch 93 sur RAB a Jump B DirA 2 11000 RA4 RAM en entr e me Compteur DirB tout en sortie LEDs actives z ro Not Compteur W Move W PortB Variables Jump Boucle Compteur DebVar p A Z DebVar 1 te Denai pelaj multiple de 100us DebVar 2 LS Le AT 0 1 25 5 ms Delai Move 20 W Exemple avec 2 ms Move W c1 A Move 32 W Boucle interne 10 us Debut Move DirA W RAS en sortie M
3. but de programme on tablit un dictionnaire entre un langage qui nous est naturel DirA pour la configuration de direction du port A et le langage du processeur form de bits seulement On voit dans le sch ma qu il faut que le bit en sortie soit z ro pour que la diode correspondante s allume Tous les bits du port B doivent tre un pour que les diodes soient teintes La constante ToutEteint qui permettra de s assurer que toutes les diodes sont teintes la fin de l initialisation est donc un mot avec des 1 partout prog Initialisation Debut Move DirA W Move W TrisA Move DirB W Move W TrisB Ce sont les 4 premi res instructions ex cut es partir de l adresse O Elles initialisent la direction des ports TrisA et TrisB sont les registres de direction Il faut les initialiser avec les valeurs DirA et DirB ce qui implique de copier la valeur transf rer dans le registre de travail W workspace register On pourrait crire Move 2 11111 W et ne pas d clarer DirA Mais c est prendre une mauvaise habitude que de ne pas d clarer les constantes et variables Pour les programmes simples cela simplifie un peu mais d s que les programmes sont compliqu s on s emp tre fait des fautes et un programme que l on a crit soi m me est difficile comprendre apr s quelques jours Le signe lu valeur plut t que di ze montre que DirA est une valeur imm diate fixe dans le pr
4. diate donc avec le signe TestSkip BC PortA bNumber Skip si le bit test est z ro TestSkip BS PortA bNumber Skip si le bit test est un Par exemple si on veut copier l tat du poussoir c bl sur RA3 sur le bit de poids fort de l affichage RB7 on initialisera au moins RA3 en entr e et RB7 en sortie avant de tester et activer les bons bits Le programme s crit Lit et copie un interrupteur D but du programme Proc 16F84 Loc Debut Move DirA W Variables N ant Move W TrisA Move DirB W Constant Move W TrisB binter 3 interrupteur en RA3 Boucle 3 DirA 2 11111 RA4 0 en entr e TestSkip BS PortA blnter Si bit clear on 3 Clr PortB bLed constant Port B TestSkip BC PortA blnter dans l autre cas on Set PortB bLed predi ten i Led ennRB7 i rien d autre faire dans ce programme DirB 2 O0000000 Tout en sortie y Jump Boucle End Notons que c est assez pratique de mettre un b minuscule comme premi re lettre lorsqu il s agit d un bit et non pas d un mot de 8 bits Il ne faut pas avoir peur de passer du temps choisir et taper des noms explicites ce temps reste n gligeable vis vis du temps pass trouver des erreurs de programmation 2 6 Supression de rebonds Nous voulons compter les actions sur le poussoir Le premier probl me est de suivre un signal qui passe un puis passe z ro et d ex cuter une action compter et afficher le
5. r sultat pour l une de ces transitions Il suffit d crire 09 13 41 03 05 01 8890 TYPO MM1 TYPO AMMI PICG2 TF 5 RIC324 PICG nial 12 DiDEL_ Avril 200 A TestSkip BS PortA bSwitch Jump A Ex cut si bit clear on attend que le signal monte B TestSkip BC PortA bSwitch Jump B Ex cut si bit set on attend que le signal redescende T che ex cuter Le deuxi me probl me r soudre est que notre poussoir a des rebonds de contact la lame du contact rebondit pendant quelques millisecondes et le processeur est assez rapide pour voir ces contacts successifs Une solution est de ne pas lire trop souvent en ins rant une boucle d attente de 2 ms au moins et 50ms au plus pour ne pas rater une action tr s rapide sur le poussoir Le programme complet appelle une routine d attente dans laquelle le d lai en 100 microsecondes est un param tre Il est facile de le r duire pour voir quelle est la dur e maximale des rebonds Puisque les diodes sont allum es par un z ro il faut inverser la valeur du compteur avant de la transf rer vers le port B Le PIC sait faire cela en une seule instruction L instruction NOT inverse tous les bits d un registre Avec le PIC NOT Compteur inverse tous les bits de la variable compteur ce qui n est pas souhait ici NOT Compteur W ne modifie pas Compteur car l inversion est faite au moment de la copie dans W Le programme suivant a besoin de 3 variables
6. RIC324 picgexe2 JDN DIDEL e CH 1092 Belmont Switzerland DIDE d info didel com www didel com Fichier www didel com picg Picg2 pdf PICG n al Microcontr leur PIC 16F84 16F870 Introduction la programmation avec le PICG nia suite 2 Programmation du PIC 16F84 16F870 L architecture le r pertoire d instruction et les p riph riques internes du PIC seront expliqu es en plusieurs fois pour viter des longs commentaires et des listes r barbatives d instructions 2 1 Un premier mod le simplifi du PIC Le PIC 16F84 16F870 peut tre vu en premi re approche comme un registre W deux ports A et B leurs registres de direction associ s Le portA est l adresse 5 et le portB l adresse 6 l assembleur le sait il n y a pas besoin de le lui dire Les registres de direction sont dans une Ze banque mais peuvent tre acc d s directement Le PIC 16F84 16F870 a heureusement des instructions sp ciales pour les acc der Avec CALM les registres de direction s apellent TrisA TrisB et TrisC pour le 16F870 et l instruction Move permet de transf rer la valeur pr par e dans W On ne peut par contre pas lire le contenu ou faire des op rations comme avec les autres registres et variables Un O dans un bit de direction met la ligne correspondante en sortie truc mn motechnique O gt O out 1 gt In Lorsque le processeur ex cute par exemple l instruction Move W PortA une impulsion charge le registr
7. e appel PortA ou RA register A Les sorties qui ont t pr par es en sortie copient cette information W gt registre interne gt sorties Si on relit avec un Move PortA W on lit directement l tat des broches Le passeur qui met en communication la broche avec le bus interne lui m me reli au registre W n est activ que pendant quelques dizaines de nanosecondes C est une photo instantan e de l tat des broches du port si la tension sur une broche est inf rieure O 7V le fabricant garantit qu un z ro sera enregistr dans W Si c est sup rieur 2V alimentation 5V c est un 1 Entre les deux ce sera O ou 1 La fronti re d pend du circuit et de sa temp rature A partir de la position 16 C l utilisateur peut placer ses variables compteurs bits d tat etc Il faut passer par le registre W Work register pour initialiser une variable une valeur diff rente de z ro Le r sultat des op rations entre W et un registre n est pas n cessairement dans W la destination peut tre le registre ce qui est souvent tr s efficace LS w Ent TEE Porta Cent E T RAC h ra COO PortB 1 aoa Triss i eaaa picgexe2 i PortA ou RA Attention RA4 en Move PortA W eE mots de collecteur 14 bits ouvert Move W TrisA TrisA direction i Bus interne du processeur Fig 1 Mod le pour les ports du PIC Le registre F flags tat m mori
8. e qui est logique puisque l on veut viter que le processeur entre en conflit avec des signaux allant vers le processeur Pour initialiser un registre une variable il faut toujours avec le PIC passer par le registre de travail W On initialise les 4 bits de poids faible du port B en sortie avec les instructions Move 2 11110000 W 27 pour les nombres binaire 2711110000 16 FQ Move W TrisA A noter que comme pour tous les processeurs l instruction Move en CALM copie la valeur source donn e dans le registre destination La 2e instruction ne modifie pas le contenu de W Le signe prononc di ze ou valeur devant un nom indique que la valeur est imm diate param tre d assemblage Il serait pr f rable de d clarer au d but du RIC324 JDN DIDEL 09 13 41 03 05 01 8890 TYPO tMI TYPO MMI PICG2 TF 4 RIC324 0 94 JDN DI DEL PICG nial 11 DiDEL_ Avril 2001 programme DirB 2 11110000 et d crire dans le programme Move DirB W On aime bien avoir toutes les d finitions de constantes au d but et il faut toujours nommer et d clarer au d but du programme les constantes que l on peut tre amen modifier par la suite Si on veut mettre tous les ports en sortie et les initialiser z ro l instruction Clr Clear existe mais elle ne peut pas agir sur les registres de direction TrisA et TrisB On doit donc crire Cir W Move W TrisA Move W TrisB Clr PortA ou Move W PortA car W contie
9. fin pied d oeuvre pour devenir des experts dans la programmation du PIC Comme pour tous les processeurs il faudrait d j conna tre tout le processeur avant de pouvoir expliquer clairement la moindre instruction Avec des exemples nous allons progressivement nous familiariser avec l architecture et le r pertoire d instruction Toute l information utile est r sum e dans une feuille de codage qui deviendra notre instrument de travail La documentation compl te du fabricant est essentielle pour comprendre toutes les possibilit s du processeur timer interruptions mais en premi re tape on ne peut que s y perdre Le document en anglais Programming the Microchip PlC microcontrollers www didel com picg PicE html d taille en anglais les instructions en notation CALM et Microchip PlC et donne plusieurs exemples de programmes avanc s Chargeons et ex cutons le programme PicgT Il copie le port A initialis en entr e sur le port B initialis en sortie Si on presse sur l un des deux poussoirs du module PicgExe l effet sera visible sur deux LEDs Pouvez vous pr voir lesquelles Le programme PicgT le PC ne fait pas de distinction entre majuscules et minuscules a l extension ASM comme tous les programmes en assembleur mais cette extension n a pas besoin d tre pr cis e SMILE NG Il se trouve dans le r pertoire PicGenial et se transf re pour programmer le PIC avec F5 comme expliqu dans la section 1 1 3 Ce m me p
10. he qui vont tre activ es Comme un z ro est actif la fois pour les poussoirs et pour les LEDs l effet est correct Si on veut que les LEDs non concern es ne s allument pas il faut forcer les autres lignes du port B un ce qui se pr pare dans W avec un OU logique Il faut ins rer entre la lecture du port A et l criture sur le port B l instruction Or 2 11100111 W Ceci sera expliqu avec plus de d tails plus loin mais il faut d s maintenant s habituer compter les positions de bits correctement de O 7 m me si on dit premier 8e 2 3 Un peu plus sur l architecture du PIC Le PIC 16F84 16F870 contient en plus de ses deux ports et B et leurs registres de direction associ s des registres de commande et de mode que nous d couvrirons petit petit Ils utilisent les adresses O 16B sur le 16F84 et O 16 1F sur le 16F870 Une zone de registres est pr vue pour les variables partir de l adresse DebVar 16 20 Il y a deux fa ons de d clarer les adresses des variables On peut les assigner avec des d clarations Var1 1620 mieux DebVar 0 Var2 1621 DebVar 1 ce que nous ferons dans les premiers programmes simples Les bits Z C et D r unis dans un registre de fanions flag register F sont tr s importants et nous donneront bien du fil retordre Le bit Z est activ par certaines op rations pour signaler que le r sultat de l op ration est nul Par exemple l instruction XOR Var W
11. nt Clr PortB ou Move W PortB 2 5 Copie de bits Nous avons jusqu pr sent manipul les 8 bits du port B simultan ment Pour le port A ce serait la m me chose mais seuls les 5 bits de poids faibles sont disponibles avec un 5e bit RA4 un peu sp cial puisqu il est en collecteur ouvert une r sistance garantit l tat 1 si le port est utilis en entr e Sur un port chaque bit doit en g n ral tre g r individuellement Le PIC est tr s performant pour agir directement sur l un des bits d un port ou d une variable en m moire mais pas sur les registres de direction si on les acc de par les instructions Tris sans modifier les autres bits Les bits sont num rot s de O poids faible 7 poids fort Le signe indique une sous adresse PortA 3 est le bit 3 du port A On nomme naturellement les num ros de bits selon leur fonction Clr PortA BitNumber Met le bit z ro Set PortA BitNumber Met le bit un On peut de m me lire en fait tester un bit d un port initialis en entr e sur lequel on a c bl un interrupteur par exemple ou un bit dans une variable Tester un bit veut dire que l on va prendre une d cision Tout ce que sait faire le PIC est de sauter conditionnellement l instruction suivante Le nom de l instruction est TestSkip et la condition est Bit Set ou Bit Clear BS BC L adresse du registre ou port suit avec comme sous adresse le num ro du bit de O 7 qui est une valeur imm
12. ogramme La valeur peut tre donn e en d cimal en binaire 2 01101 ou en hexad cimal 16 F3 l assembleur traduira en binaire pour mettre en m moire programme la valeur que le processeur comprend TrisA par contre est un registre dont le contenu est variable W galement Move W TrisA transf re le contenu de W dans le registre TrisA W n est pas modifi A noter encore qu il n y a pas de commentaires pour expliquer ces 4 instructions Leur lecture est vidente Ce qui est important c est que DirA et DirB soient bien expliqu s au d but du programme avec tous les d tails n cessaires pour que l on puisse c bler le syst me conform ment au programme Move ToutEteint W Move W PortB Les bits en sortie doivent tre assign s autrement l tat initial sera quelconque en fait le PIC initialise ses registres z ro la remise z ro Raz Ici on veut que les diodes soient teintes l enclenchement La r flexion pour savoir s il faut mettre des 1 ou O a t faite au d but dans les d clarations II n y a plus besoin de se reposer des questions Si on change de syst me et qu il faut un O pour teindre il suffit de changer les d clarations et rien dans le programme prog BouclelOn boucle sans cesse pour copier RA dans RB Boucle End L assembleur note l adresse m moire de boucle Plus loin l instruction Jump Boucle permet de revenir ici pour r p ter l op ration Move PortA W Move W Po
13. ove W C2 Move W TrisA B DecSkip EQ C2 Move DirB W Jump B Move W TrisB PortB en so DecSkip EQ C1 Jump A RetMove 1 W End Sauriez vous remettre le compteur z ro avec l autre poussoir C est plus simple car il n y a pas besoin de se pr occuper des rebonds Si le poussoir n est pas activ on passe par dessus une instruction Clr Compteur rajouter Cette instruction doit tre mise dans la boucle qui attend que l on presse sur le poussoir de comptage Il faut aussi faire la mise jour du port B imm diatement car c est lui qu on voit C est un peu plus compliqu et il y a plusieurs solutions vous de trouver la plus l gante 2 7 Feuille de codage La feuille de codage CALM du PIC16F84 en www didel com picg Pic84Calm pdf contient toute l information n cessaire pour se rafra chir la m moire quand on programme Pour les fonctions sp ciales la documentation du fabricant est indispensable JDN DIDEL 09 13 41 03 05 01 8890 TYPO MI TYPO MMI PICG2 TF 6
14. pas les autres outils d dition de transfert et d impression C est donc une solution simple et compatible Les ordres LILA interpr t s pas Smile NG sont donn s dans l annexe 3 Le nom du programme PicgT est naturellement le m me que celui du fichier sur disque dans le r pertoire PicG nial PicgT asm L extension asm est automatique Les minuscules et majuscules sont identifi es JDN DIDEL 09 13 41 03 05 01 8890 TYPO tMI TYPO MMI PICG2 TF 2 RIC324 JDN DIDEL PICG nial 9 DiDEL_ Avril 200 proc 16F84 Cette pseudo instruction signale l assembleur le processeur utilis 16C84 et 16F84 ont le m me jeu d instructions Un fichier 16F84 pro doit exister sur le disque dans le r pertoire Proc de SmileNG en plus de l assembleur Ascalmc exe contenu dans le r pertoire Exe const Ports Ports A et B Un ordre de mise en page que l assembleur ignore DirA 211111 Tout le port A est en entr e DirB 2 00000000 Tout le port B est en sortie ToutEteint 211111111 Lampes teintes Les constantes sont d clar es au d but du programme Ici le port 5 bits est voulu en entr e Les 5 bits de direction doivent tre mis un 2 signifie que l on travaille en binaire ce qui est naturel ici Les 8 bits du port B sont en sortie Les bits de direction devront tre mis z ro Ces pseudo instructions de d claration n ont pas d effet sur le processeur Avec ces d clarations en d
15. rogramme peut tre charg dans le 16F870 Le code est le m me pour les deux processeurs mais pas la s quence de programmation C est donc tr s important que SmileNG soit pr s lectionn sur le bon processeur 16F84 RC 16F84 XT ou 16F870 XT DebVar est choisi dans les exemples pour tre compatible avec les deux processeurs Debut Move DirA W PicgT Copie le port A sur le port B Move W TrisA proc 16F84 Move DirB W Move W TrisB constant Ports Ports et B DirA 2711111 Tout le port A en entr e Boucle On boucle sans cesse pour copier RA DirB 2 00000000 Tout en sortie dans RB ToutEteint 2 11111111 Lampes teintes Boucle se Move PortA W PET M W PortB Initialisation si E Jump Boucle End Reprenons ce programme instruction par instruction pour comprendre la raison et le sens de chaque instruction Ce programme est traduit par l assembleur en codes d instructions qui sont charg es en m moire On peut voir les codes g n r s en chargeant le fichier PicgT lst mis dans le r pertoire Picgenial par l assembleur prog PicgT Copie le port sur le port B Dans SmileNG il y a en plus des instructions pour le processeur des ordres de mise en page et des pseudo instructions pour l assembleur Pour avoir sur l cran un joli graphisme en d but de programme il faut taper la s quence prog xx yy Cet ordre est interpr t par Smile NG et par le programme d impression Il ne perturbe
16. rtB Ces deux instructions copient le port A qui comporte en particulier deux poussoirs sur les entr es RAB et RA4 sur le port B La copie se fait sur les bits de m me num ro Attention pour le 16F870 RA3 n est pas copi Voir www didel com picg PicgO pdf Jump Boucle La pseudo instruction END dit l assembleur que son travail de traduction et termin Les lignes suivantes sont ignor es Cela peut tre le mode d emploi de votre programme Les fichiers se perdent moins facilement que les feuilles de papier Documentez ce que vous faites autant que possible dans votre programme et pas ailleurs Apr s le End il n y a plus besoin de devant les lignes et les lignes peuvent avoir plus de 96 caract res S il n y a pas d erreurs l assembleur g n re le code binaire transf r automatiquement dans le PIC via le port parall le du PC si vous l avez demand A l ex cution le processeur va initialiser les ports et ensuite ex cuter sans cesse la boucle qui copie le port sur le port B La dur e de la boucle est 4 microsecondes Si le poussoir est press l entr e sur le port A passe z ro Ce z ro est copi sur le bit correspondant du port B et allume la lampe correspondante Puisque les poussoirs sont sur 09 13 41 03 05 01 8890 TYPO MM1 TYPO AMMI PICG2 TF 3 PICG nial 10 DiDEL_ Avril 200 les lignes RAS et RA4 du processeur port A bits 3 et 4 ce sont les LEDs 3 et 4 donc 4e et 5e depuis la gauc
17. se en particulier deux bits que l on trouve dans tous les processeurs C est le Carry activ par une addition avec d passement de capacit ou un d calage Z est le z ro bit activ si le r sultat d une op ration est nul les 8 bits du r sultat transf r dans W ou dans un registre sont nuls Toutes les instructions n agissent pas sur Z et sur C la feuille de codage verte pr cise pour chaque intruction les bits modifi s Le programme est dans une m moire s par e architecture Harvard Le processeur d marre en O nous parlerons des interruptions plus tard et ex cute chaque instruction en 1 microseconde AMHz sauf les sauts qui cassent le pipeline et demandent deux microsecondes 09 13 41 03 05 01 8890 TYPO MM1 TYPO AMMI PICG2 TF 1 RIC324 0 95 PICG nial 8 DiDEL_ Avril 200 Un programme commencera toujours par une initialisation des registres de direction des ports et B Si on ne fait rien ils sont en entr e apr s un Reset Il faudra aussi initialiser les variables compteurs dont la valeur l enclenchement est importante On donnera un nom aux variables en d clarant au d but les quivalences entre ces noms et les adresses m moire assign es en vitant de mettre deux variables diff rentes dans la m me adresse m moire Les noms des registres du PIC sont connus par l assembleur et n ont pas besoin d tre d clar s 2 2 Un premier programme Nous voici en
Download Pdf Manuals
Related Search
Related Contents
Télécharger - Mairie de Villemotier 2015 Sistema de conforto e conveniência Chevrolet Cruze 635500RF IQ RF LED Term Basic GPS Navigation - wavecable.com Login page Manuel d`utilisation lire la suite 2 Copyright © All rights reserved.
Failed to retrieve file