TD n°4 - Présentation du PIC 18F4550 – Programmation en

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