Vous êtes sur la page 1sur 12

Lycée Jacquard

Lycée La tourelle 1/12 vendredi 13 avril 2001

Documents Assembleurs PIC COURS TS1EN


ressources
N°1 Le PIC 16FXX V 3.1

1. La FAMILLE « PIC 16FXX» de MICROCHIP.


Caractéristiques générales importantes

Les PIC 16FXX sont des microcontrôleurs 8 bits (largeur du bus de données) conçus en
technologie CMOS (faible consommation électrique).

Tous les PIC 16FXX utilisent une architecture RISC ( Reduce Instruction Set Computer
-> Processeur à jeu d’instructions réduit ).

La séparation des bus instructions et données de l’architecture HARVARD (Annexe),


souvent opposée à l’architecture VON NEUMAN (Annexe), permet d’avoir des
instructions codées en un seul mot de 14 bits, tout en manipulant des données d’une
largeur classique de 8 bits.

Chaque instruction est exécutée en un seul cycle, à l’exception des instructions de


branchement qui en nécessitent 2.
Le temps de cycle est égal à quatre fois la période d’horloge. Ainsi, si un PIC est piloté à
partir d’un quartz de 10 MHz (période de 100 ns), le temps de cycle sera de 400 ns. On
pourra donc exécuter 1/ 400 E-9 = 2 500 000 instructions par seconde (à l’exception des
instructions de branchement), ce qui correspond à une puissance de calcul de 2,5 MIPS.

Grâce à cette architecture RISC, un programme nécessite environ deux fois moins
d’espace mémoire et « tourne » environ deux fois plus vite que sur les systèmes à
architecture classique.

2. Le PIC 16F84
2.1. Présentation générale, spécificités

Voir la première page du DATA BOOK MICROCHIP.


On distingue particulièrement :
• La mémoire programme composée de 1024 mots de 14 bits d’EEPROM FLASH
(programmation possible en situation);
• Les 68 octets de RAM
• 64 octets de EEPROM pour des données de configuration ou d’exploitation
(consignes...)
• la présence d’un timer et d’un chien de garde
• la présence d’un port A (5 lignes) et d’un port B (8 lignes)
• compatible avec le 16C84

Documents Ressources 1/12 GUILBERT B. – VILLERS JM


Lycée Jacquard
Lycée La tourelle 2/12 vendredi 13 avril 2001
2.2. Schéma fonctionnel
Voir page 8 du DATA BOOK MICROCHIP.

2.3. Organisation mémoire


Comme mentionné précédemment, on distingue 2 zones distinctes :

• la zone donnée
• la zone programme

possédant chacune leur propre bus.

Documents Ressources 2/12 GUILBERT B. – VILLERS JM


Lycée Jacquard
Lycée La tourelle 3/12 vendredi 13 avril 2001
2.4. La zone programme (voir carte ci-dessous)

Le PC (compteur programme) contient 13 bits permettant d’adresser 8K x 14 bits


(taille d’une instruction). Sur le 16F84, seul les 1024 premiers mots sont utilisés et
matérialisés par de la mémoire EEPROM. L’espace programme s’étale donc de 0000h à
03FFh.

Le vecteur RESET se trouve en 0000h.


L’unique vecteur lié aux autres interruptions se trouve en 0004h. (Un registre de
contrôle et d’état des interruptions permet de connaître la source de l’interruption
survenue (port, timer ...).

Documents Ressources 3/12 GUILBERT B. – VILLERS JM


Lycée Jacquard
Lycée La tourelle 4/12 vendredi 13 avril 2001
2.5. La zone de données ( FILE )
(Voir carte ci-dessous et page 13 du DATA BOOK de MICROCHIP)
Elle est vue par le constructeur comme un fichier ( FILE ).
Elle s’étale de 00h à FFh. Une majorité de cet espace est inutilisé. On distingue 2 zones
distinctes :

• les registres à usage général (GPR) qui constituent les 36 octets de RAM du 16F84
• les registres à usage spécial (SFR) qui sont en fait constitués du registre d’état du
noyau du processeur (CORE) et des registres de contrôle et d’état des
périphériques.
IMPORTANT :
La zone de donnée est divisée en 2 banques. Avant d’accéder à certains
registres, il faut s’assurer que la banque correspondante est sélectionnée.
Cette sélection se fait par l’affectation du bit 5 (RP0) du registre STATUS
(0 -> Banque 0 / 1 -> Banque 1).

Documents Ressources 4/12 GUILBERT B. – VILLERS JM


Lycée Jacquard
Lycée La tourelle 5/12 vendredi 13 avril 2001
2.6. Le jeu d’instruction
2.6.1. Format des instructions.
Comme annoncé précédemment, une instruction est codée en un seul mot de 14 bits.
Ce mot de 14 bits est composé :

• d’un code opération (OPCODE), disposé sur les bits de poids forts du mot,
précisant le type d’instruction
• d’une ou plusieurs opérande(s), codée(s) sur les bits restants, précisant
l’opération de l’instruction.

On distingue 4 grands types d’instruction :

• Les instructions orientées « octet ». Le traitement porte simultanément sur 8 bits


• Les instructions orientées « bit ». Le traitement porte sur un seul bit désigné
• Les instructions de contrôle de branchement.

Le codage s’effectue donc de la façon suivante :

Documents Ressources 5/12 GUILBERT B. – VILLERS JM


Lycée Jacquard
Lycée La tourelle 6/12 vendredi 13 avril 2001

2.6.2. liste des instructions.


Voir page 51 du DATA BOOK de MICROCHIP.

Il faut noter la présence et l’importance du registre W (Working register).


Ce registre est en fait l’unique accumulateur du processeur.
En effet, toute instruction de calcul (addition, soustraction, ET logique...) sollicite
l’ALU qui travaille uniquement sur w et un registre de la zone « FILE » ( Voir page 8 du
DATA BOOK MICROCHIP).
Dans le cas des instructions orientées « octet », selon l’état du bit « d » (rang
7) de l’instruction, le résultat de l’instruction sera logé dans W (d=0) ou dans le registre
considéré de la zone « FILE » (d=1).

Exemples :

Soit l’instruction ADDWF 0x0C, 1


où 0x0C désigne le registre 0x0C de la zone « FILE » (RAM).

Cette instruction accomplit le travail suivant :


W + (0x0C) --> (0x0C)
Son codage sur 14 bits est le suivant :

0 0 0 1 1 1 1 0 0 0 1 1 0 0

ADDWF 0x0C

d=1
résultat dans le registre
considéré de la zone FILE.

S’il avait fallu loger le résultat du calcul dans W, l’écriture de l’instruction aurait
été le suivant :

ADDWF 0x0C, 0

et son codage :

0 0 0 1 1 1 0 0 0 0 1 1 0 0

Documents Ressources 6/12 GUILBERT B. – VILLERS JM


Lycée Jacquard
Lycée La tourelle 7/12 vendredi 13 avril 2001

Exercices :
I - Charger 0x22 dans le premier emplacement RAM.

II - Charger W avec le contenu du 5ème emplacement RAM.

III - Réalisez l’opération suivante :


(0x0C) + (0x0D) -> (0x0E)

IV - Réalisez l’opération suivante:


(0x0D) x 2 -> W

V - Brancher sur l’étiquette LAB1 si (0x0F) = 0 :

LAB1

Documents Ressources 7/12 GUILBERT B. – VILLERS JM


Lycée Jacquard
Lycée La tourelle 8/12 vendredi 13 avril 2001
VI -

1) Codez le sous-programme réalisant l’opération suivante :


(0x0C) x (0x0D) -> (0x0E)H / (0x0F)L
(multiplication)
2) Calculez le temps d’exécution de ce sous-programme
si le PIC est cadencé par un quartz de 4.000MHz.

2.7. Les ports d’Entrées/Sorties.

Comme tout microcontrôleur qui se respecte, Le 16F84 possède un PIA intégré.


Plus précisément :

• Un port A d’une largeur de 5 bits,

X X X RA4 RA3 RA2 RA1 RA0


PORTA

• Un port B d’une largeur de 8 bits.

RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0


PORTB

Chacune de ces lignes peuvent-être configurées par logiciel en entrée ou en


sortie.
Quelques différences électriques, importantes dans certains cas d’utilisation,
existent entre ces lignes. Consulter la documentation constructeur.

A ces deux registres, PORTA et PORTB correspondent également deux registres de


direction : TRISA et TRISB.

X X X TRISA4 TRISA3 TRISA2 TRISA1 TRISA0


TRISA

TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0


TRISB

Documents Ressources 8/12 GUILBERT B. – VILLERS JM


Lycée Jacquard
Lycée La tourelle 9/12 vendredi 13 avril 2001

Un bit de ces registres à ‘1’ positionne la ligne correspondante en entrée.


Ci-dessous, le schéma fonctionnel de la cellule d’une ligne du port B :
Sur ce schéma, on distingue notamment les points suivants :

• ‘Data Latch’ : Cette bascule permet de mémoriser l’état à déposer sur la ligne
dans le cas où celle-ci est utilisée en sortie.
• Les 8 lignes du port B comportent une de ces bascules ce qui constitue le registre
de donnée du port B (PORTB).

• -’TRIS Latch’ : Cette Bascule permet de valider ou d’invalider le buffer ‘c’.


• Lorsque un ‘1’ est mémorisé dans cette bascule le buffer n’est pas validé (Haute
impédance - TRI-State). Dans ce cas, la ligne est utilisée en entrée.
• Les 8 lignes du port B comportent une de ces bascules ce qui constitue le registre
de direction du port B (TRISB).

• - Une lecture sur le registre de données est toujours une lecture de


l’état des lignes du port via les buffers ‘b’, ‘d’ et les bascules ‘ Latch’.

• Les buffers ‘a’ permettent une lecture du registre TRISB.

• Une résistance de rappel (pull-up) interne au PIC peut-être disposée sur chaque
entrée ce qui évite de devoir la rajouter sur le montage lorsque certaines
applications en ont besoin. Cette possibilité se sélectionne par logiciel à l’aide
d’un bit du registre ‘OPTION’. Cette fonctionnalité, si elle est utilisée, s’applique
sur toutes les lignes du port B. Le port A ne possède pas cette possibilité.

De plus, lorsqu’elles sont utilisées en entrées, les lignes RB4 à RB7 peuvent être
configurées pour déclencher une interruption lors d’un changement d’état sur une de ces
quatre entrées. Cette fonctionnalité est permise grâce aux fonctions logiques ‘A’, ‘B’, ‘C’
et ‘Porte IT’.

Documents Ressources 9/12 GUILBERT B. – VILLERS JM


Lycée Jacquard
Lycée La tourelle 10/12 vendredi 13 avril 2001
En effet, la fonction XOR ‘C’ délivrent ‘1’ lorsque la valeur obtenue lors de la
dernière lecture de la ligne via Latch est différente de la valeur actuelle de
l’entrée via ‘Porte IT’.
La fonction ET ‘C’ permet d’autoriser cette fonctionnalité uniquement lorsque la
ligne est en entrée.
La fonction OU ‘A’ rassemble les quatre lignes dotées de cette fonctionnalité.

2.8. Le TIMER

Le TIMER du 16F84 présente les fonctionnalités classiques suivantes :


• Compteur 8 bits pouvant être relu;
• Horloge interne ou externe;
• Sélection du front actif sur l’horloge externe;
• Interruption possible sur le passage de 0x00 à 0xFF;
• Pré division possible de la fréquence d’horloge jusqu’à 256.

Le schéma fonctionnel du TIMER est le suivant :

Remarques importantes :

• - L’entrée du signal d’horloge dans le cas de l’utilisation d’une horloge externe se


fait sur la patte RA0 qui peut donc être utilisée de deux façons;
• Le pré diviseur peut aussi être utilisé pour le WATCHDOG.
• La configuration du TIMER se fait depuis le registre SFR ‘OPTION’.

2.9. Les interruptions

Le 16F84 possède 4 sources d’interruption :


• Changement d’état de RB4 à RB7;
• Front actif sur RB0, le sens pouvant être sélectionné par logiciel;
• TIMER;
• Fin d’écriture dans un octet de la EEPROM DATA.

Il existe un seul vecteur d’interruption situé à l’adresse 0x0004 de la mémoire


programme (cf § 3.2.3.1).

Le registre FSR ‘INTCON ‘ permet la gestion des interruption.

Documents Ressources 10/12 GUILBERT B. – VILLERS JM


Lycée Jacquard
Lycée La tourelle 11/12 vendredi 13 avril 2001
En effet, grâce à ce registre, on peut inhiber ou autoriser une source d’interruption à
interrompre le CPU, mais aussi déterminer la source d’une interruption.

On retrouve le rôle des bits de ITCON dans le schéma suivant :

Exemple :

#include "p16F84.inc"

org 0
goto debut

inter org 4
bcf INTCON,INTF ; enlève le Flag d’int erruption par RB0
nop
retfie

debut
bsf INTCON,GIE ; demasque les interruptions
bsf INTCON,INTE ; autorise l’interruption par RB0

fin goto fin ; boucle infini


end
Déterminer ce que fait ce programme simple.. très simple.

Exercice VII
Proposer un programme qui fasse clignoter une led sur RB1 toute les
200ms (1/400e-3 Hz)

Exercice VIII
Proposer un programme qui modifie l’état d’une LED branchée sur RA0 à
chaque front montant vu sur RB0. (utilisation des interruptions.)

Réaliser les ORGANIGRAMMES avant les programmes..


Tester et valider les exercices avec MPLAB, puis en réel sur cible
PIC16F84.

Documents Ressources 11/12 GUILBERT B. – VILLERS JM


Lycée Jacquard
Lycée La tourelle 12/12 vendredi 13 avril 2001

Annexe
HARVARD

VON NEUMAN

bus d'adresse ROM

Decodeur instructions
et données
d'adresse
BC

CPU

RAM

instructions
et données
Bus de donnée

PERIPHE
RIQUE

Données

Schéma simplifié de la structure de Von Neuman


BC: BUS DE CONTROLE

Documents Ressources 12/12 GUILBERT B. – VILLERS JM

Vous aimerez peut-être aussi