Architecture des pic

Disponible uniquement sur Etudier
  • Pages : 8 (1826 mots )
  • Téléchargement(s) : 0
  • Publié le : 28 avril 2011
Lire le document complet
Aperçu du document
http://www.didel.com/

info@didel.com

http://www.bricobot.ch/

info@bricobot.ch

http://www.didel.com/pic/Architecture.pdf

Architecture des PICs
Ce document présente l’architecture des microcontrôleurs PICs pour un lecteur qui n’a pas de connaissances particulières, sans rentrer dans trop de détail. Il complète les cours Kidule, 628, 877 et d’autres documents qui montrent commentprogrammer et insistent plus sur le répertoire d’instructions. Un premier modèle simplifié du PIC Un microcontrôleur a comme première mission de lire des entrées, et décider les valeurs à assigner aux sorties. Les PICs 16Fxxx peuvent être vus en première approche comme comportant des ports d’entrée-sortie plus ou moins complets et spécialisés, avec leurs registres de direction associés. Les port A,B, C sont aux adresses 5, 6, 7 (l'assembleur le sait, il n'y a pas besoin de le lui dire). Les registres de direction TrisA, TrisB et TrisC définissent si le Fig 1 Modèle pour les ports et les 2 mémoires du PIC 16F870 bit du port est en entrée ou en sortie, comme on verra plus loin. Une mémoire en écriture et lecture prolonge la zone des entrées-sorties et registres de contrôle et stocke lesvariables (compteurs, registres de calcul, valeurs temporaires). Les instruction sont dans une mémoire programme, en lecture seulement (l’écriture se fait avec un programmateur à partir du programme traduit en binaire). Elles sont exécutées l’une après l’autre en général et analysées par le décodeur d’instructions. Un registre W joue un rôle particulier et fait penser aux plaques tournantes dans lesanciennes gares de locomotives. La loco est une valeur qui passe par W pour aller dans le hangar (ports ou variables), vers la gare (entrées-sorties) ou dans le dépôt (test, modifications). Lorsque le processeur exécute par exemple l'instruction "Move W,PortA", une impulsion charge le registre appelé PortA ou RA (register A). Les sorties qui ont été préparées en sortie copient cette information. W--> registre interne --> sorties. Si on relit avec un "Move PortA,W", on lit directement l'état des broches. A partir de la position DebVar, 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 dansW; la destination peut être le registre, ce qui est souvent très efficace. On a donc des instruction comme
Move #Valeur,W ; Le nombre Valeur est copié dans W Move W,MaVariable ; Le contenu de W est copié dans MaVariable Clr Compteur ; Initilalise la variable compteur avec la valeur zéro (2’00000000) Add W,Total ; Additionne le contenu de W au contenu de Total, et met le résultat dans Total

Leregistre F ou STATUS (flags, état) à l’adresse 3 mémorise 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 par 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 passur Z et sur C: la feuille de codage précise pour chaque intruction les bits modifiés. Le programme est dans une mémoire séparée des variables (architecture dite de "Harvard"). Le processeur démarre en 0 (nous parlerons des interruptions plus tard) et exécute chaque instruction en 1 microseconde (à 4MHz), sauf les sauts qui demandent deux microsecondes.

Un programme commence toujours par uneinitialisation des registres de direction des ports utilisés. Si on ne fait rien, les ports sont en entrée après un Reset. Il faut aussi initialiser les variables, compteurs dont la valeur à l'enclenchement est importante. On donne un nom aux variables, en listant dans les programmes simples leur emplacement mémoire. Var1= 16'20 (mieux: DebVar+0), Var2 = 16'21 (DebVar+1) Un programme doit spécifier...
tracking img