TD n°4 - Présentation du PIC 18F4550 – Programmation en assembleur Documents indispensables pour suivre le TD : Manuel de référence + Documentation constructeur. 1- GENERALITÉS PIC : famille 18 : gamme (12 et 16 : instructions codées sur 14 bits, 17 et 18 : instructions codées sur 16 bits) F : Mémoire Flash (CR : mémoire ROM, R : mémoire REPROM) 4550 : type 2- STRUCTURE INTERNE DU PIC 18F4550 Analyser la structure interne du microcontrôleur (µC) PIC décrite page 5 du manuel de référence. En consultant les documents à votre disposition, trouver les réponses aux questions suivantes. 2.1 Quelle est la taille du bus de données ? 2.2 Comment s'appelle le compteur ordinal ? 2.3 Comment s'appelle la mémoire de données (RAM) ? 2.4 Comment s'appelle le registre Accumulateur ? 2.5 Quelle est l'organisation de la mémoire de programme ? En déduire la taille des instructions. 2.6 Quelle est l'organisation de la mémoire de données (RAM) ? 2.7 Combien de bits sont prévus dans les instructions pour l'adressage direct de la RAM (p.315 et suivantes de la documentation constructeur)? Quel est le rôle du bit a? 2.8 Quels sont les emplacements mémoires réservés pour des registres du µC (Special Function Registers) ? 2.9 Quelle est la plage d'adresses des registres disponibles pour une utilisation générale (General Purpose RAM)? 2.10 Quelles sont les différentes sources de Reset du microcontrôleur ? 3- CONFIGURATION DE L'HORLOGE 3.1 Analyser le schéma complet de l'horloge (p12 Manuel de référence). Quels paramètres permettent de gérer l'horloge ? Préciser le rôle de chacun d'eux. 3.2 On souhaite que l'horloge du CPU soit telle que : Fosc = 16 MHz et Fusb = 48 MHz, avec un quartz de 8 MHz en entrée de l'oscillateur primaire (broches OSC1 et OSC2). Quelles sont les valeurs de ces paramètres ? 3.3 Rechercher dans le manuel de référence la relation entre Tcyc et Tosc. En déduire la valeur de Tcyc (période du cycle instruction) en ns. 4- JEU D'INSTRUCTIONS Il est résumé à partir de la page 315 de la documentation constructeur. Chaque instruction est détaillée dans les pages qui suivent. Codage binaire (toutes les instructions sont codées sur 16 bits) : a → a = 0 seule une partie de la mémoire est accessible ; a = 1 accès complet à la RAM en utilisant BSR <3:0> pour choisir la banque. f → ffff ffff, adresse d'un registre de la RAM d → d = 0 la destination du résultat est W d = 1, la destination est l'adresse ffff ffff bbb → n° de bit du registre à l'adresse ffff ffff x → 0 ou 1 (au choix) k → kkkk kkkk, constante (valeur littérale) Exercice 1 Donner le code binaire généré par l'instruction : ADDWF 2Eh, 1, 0 Que fait cette instruction ? Quelle est sa durée ? Exercice 2 Trouver l'instruction correspondante au code binaire : 0000 1110 0101 1001 Que fait cette instruction ? Quelle est sa durée ? 5- PROGRAMMATION EN ASSEMBLEUR Dans un programme en assembleur, les instructions commencent à partir de la colonne 2. Seuls les « labels » (dit aussi les « étiquettes ») commencent à la ligne 1. Ils permettent de revenir à cet endroit par l'instruction GOTO label. Le programme doit se terminer par le mot END. Les commentaires commencent par un point-virgule « ; ». Exercice Écrire un programme qui recopie le contenu du port B sur le port D. Algorithme : TRISB Å 0xFF TRISD Å 0x00 FAIRE PORTD Å PORTB TANT QUE (1) (Configurer tous les bits du port B en entrée) (Configurer tous les bits du port D en sortie) (Copier le portB dans le portD) (Répéter tant condition est vraie, c.à.d. ≠ 0 donc ici indéfiniment) Instructions à utiliser : movlw, movwf, clrf, movf, goto, end Formation par Apprentissage Département Geii, IUT de Marseille Page 1 sur 2 Formation par Apprentissage Département Geii, IUT de Marseille Page 2 sur 2
© Copyright 2024 Paperzz