Vous êtes sur la page 1sur 26

PRESENTATION GENERALE DU PIC 16F84

5. Les registres
 Adresse 03 et 83 STATUS Registre d’état contient des informations
sur l’exécution de l’instruction en cours. Les cinq bits de poids faible de
ce registre sont en lecture seule, ce sont des témoins (drapeaux ou
flag en anglais) caractérisant le résultat de l’opération réalisée par
l’UAL. Le bit RP0 est lui en lecture /écriture et c’est lui qui permet de
sélectionner la page dans la mémoire RAM.
Si RP0=0 on accède à la page 0 et si RP0=1 on accède à la page 1

Remarque:

RP1=0 non utilisé pour 16F84


IRP =0 non utilisé pour 16F84

13/03/2022 Dr. HORCH Med 66


66
PRESENTATION GENERALE DU PIC 16F84

5. Les registres (STATUS)

RP0: Permet de fixer la banque (0: banque0, 1: banque1) .

TO (Time Out): Indique dépassement du temps du watchdog (Chien de


garde) (1 au démarrage, après CLRWDT ou SLEEP et 0 dépassement du
temps du watchdog) .

PD (Power Down) : indique le passage du PIC en mode sommeil (1 au


démarrage ou par CLRWDT et 0 par l’instruction SLEEP) .

Z (Zéro) résultat nul pour une opération arithmétique et logique.

DC (Digit Carry) retenue sur un quartet (4 bits).

C (Carry) retenue sur un octet (8 bits).

13/03/2022 Dr. HORCH Med 67


67
PRESENTATION GENERALE DU PIC 16F84

5. Les registres

 adresse 85 , TRISA . Direction des données pour le port A : 0 pour


sortir et 1 pour entrer.
 adresse 86 , TRISB . Direction des données pour le port B : 0 pour
sortir et 1 pour entrer.

Le PIC16F84 est équipé de 13 lignes d’entrées/sorties réparties en deux


ports : le port A : RA0 à RA4 et le port B : RB0 à RB7

Chaque ligne peut être configurée soit en entrée, soit en sortie, et


ceci indépendamment l’une de l’autre. Pour cela on utilise les registres
TRISA et TRISB.

13/03/2022 Dr. HORCH Med 68


68
PRESENTATION GENERALE DU PIC 16F84

5. Les registres (TRISA et TRISB)

Le bit de poids faible A0 du registre TRISA correspond à la ligne RA0, le bit


A1 de TRISA correspond à RA1 et ainsi de suite. Il en est de même pour le
registre TRISB (B0 de TRISB correspond à RB0 ⇒ B7 correspond à RB7).

Si l’on veut placer une ligne en sortie il suffit de mettre le bit correspond
dans TRISA ou TRISB à 0 (à retenir : 0 comme Output = sortie).
Si l’on veut placer une ligne en entrée, il suffit de placer le bit
correspondant dans TRISA ou TRISB à 1 (à retenir : 1 comme Input =
entrée).

13/03/2022 Dr. HORCH Med 69


69
PRESENTATION GENERALE DU PIC 16F84
5. Les registres

 adresse 05 , PORTA . Ce registre contient l’état des lignes du port A :


0 pour désactiver et 1 pour activer.

 adresse 06 , PORTB . Ce registre contient l’état des lignes du port B :


0 pour désactiver et 1 pour activer.

Particularité du PORTA :les bits A7 à A5 des registres TRISA et PORTA


ne correspondent à rien car il n’y a que 5 lignes (A0 à A4). RA4 est une
ligne à collecteur ouvert, cela veut dire que configurée en sortie cette
broche assure 0 Volt à l’état bas, mais qu’à l’état haut, il est nécessaire de
fixer la valeur de la tension grâce à une résistance de tirage (pull up en
anglais).

13/03/2022 Dr. HORCH Med 70


70
PRESENTATION GENERALE DU PIC 16F84

5. Les registres (TRISA et TRISB)

Particularité du PORTB :il est possible de connecter de façon interne sur


chaque ligne une résistance de tirage (pull up) dont le rôle consiste à
fixer la tension de la patte (configuré en entrée) à un niveau haut
lorsque qu’aucun signal n’est appliqué sur la patte en question. Pour
connecter ces résistances, il suffit de placer le bit RBPU/ du registre
OPTION à 0.

13/03/2022 Dr. HORCH Med 71


71
PRESENTATION GENERALE DU PIC 16F84

Programmation en assembleur
Les étapes nécessaires permettant de voir un programme s'exécuter sur
un μC 16F84 sont :

1. Ecrire un programme en langage assembleur dans un fichier texte et le


sauvegarder avec l'extension asm.
2. Compiler ce programme avec l'assembleur MPASM fourni par
MicroChip. Le résultat est un fichier avec l'extension hex contenant une
suite d'instruction compréhensible par le μC.
3. Transférer le fichier hex dans la mémoire programme du μC (Flash
ROM) à l'aide d'un programmateur adéquat. On peut utiliser les
programmateurs de MicroChip ou tout autre programmateur acheté ou
réalisé par soit même.
4. Mettre le μC dans son montage final, mettre sous tension et vérifier le
fonctionnement. MicroChip propose gratuitement l'outil de développement
MPLAB qui regroupe l'éditeur de texte, le compilateur MPASM, un outil
de simulation et le logiciel de programmation.
19/03/2022 Dr. HORCH Med 72
72
PRESENTATION GENERALE DU PIC 16F84

Programmation en assembleur

On utilisera MPLAB pour écrire, compiler et éventuellement simuler les


programmes, ensuite on les transférera à l’aide du programmateur PICkit
3 piloté par le logiciel PICkit 3 programmer, les deux sont disponibles
gratuitement sur le Web.

19/03/2022 Dr. HORCH Med 73


73
PRESENTATION GENERALE DU PIC 16F84

Directives de MPASM

Les directives de l'assembleur sont des instructions qu'on ajoute dans le


programme et qui seront interprétées par l'assembleur MPASM. Ce ne
sont pas des instructions destinées au μC.

 LIST : Permet de définir un certain nombre de paramètres comme le


processeur utilisé (p), la base par défaut pour les nombres (r) ainsi que
d'autres paramètres.
Exemple : LIST p=16F84, r=dec.

 #INCLUDE : Permet d'insérer un fichier source. Par exemple le fichier


p16F84.inc contient la définition d'un certain nombre de constantes
comme les noms des registres ainsi que les noms de certains bits du
μC 16F84.
Exemple : #INCLUDE "p16f84.inc" ou #INCLUDE <p16f84.inc>.

19/03/2022 Dr. HORCH Med 74


74
PRESENTATION GENERALE DU PIC 16F84

Directives de MPASM

 __CONFIG : Permet de définir les 14 fusibles de configuration qui


seront copiés dans le registre de configuration lors de l'implantation du
programme dans le μC.
Exemple : __CONFIG B'11111111111001' ou __CONFIG H'3FF9'.
Remarque : Si le fichier p16f84.inc a été inséré, on peut utiliser les
constantes prédéfinies :
__CONFIG _CP_OFF & _XT_OSC & _PWRTE_OFF & _WDT_OFF

Registre de configuration :

19/03/2022 Dr. HORCH Med 75


75
PRESENTATION GENERALE DU PIC 16F84
Directives de MPASM
Registre de configuration :
1- Bits FOSC0 et FOSC1 : Sélection du type d'oscillateur pour l'horloge.
FOSC0 et FOSC1 =11 ⇒ Oscillateur à circuit RC jusqu'à 4 MHz.
FOSC0 et FOSC1 =10 ⇒ Oscillateur HS, quartz haute fréquence, jusqu'à
20 MHz.
FOSC0 et FOSC1 =01 ⇒ Oscillateur XT, quartz standard jusqu'à 4 MHz.
FOSC0 et FOSC1 =00 ⇒ Oscillateur LP, quartz basse fréquence, jusqu'à
200 KHz.

2- Bit WDTE :Validation du timer du watchdog WDT.


WDTE=1 ⇒ WDT validé et WDTE=0 ⇒ WDT inhibé.

3- Bit PWRTE : Validation d'une temporisation à la mise sous tension.


Le μC possède un timer permettant de retarder de 72 ms le lancement du
programme après la mise sous tension. Ce délai maintient le μC à l’arrêt et
permet ainsi à la tension d'alimentation de bien se stabiliser.
PWRTE=1 ⇒ le μC démarre tout de suite et PWRTE=0 ⇒ le μC attend 72
ms.
19/03/2022 Dr. HORCH Med 76
76
PRESENTATION GENERALE DU PIC 16F84
Directives de MPASM
Registre de configuration :
4- Bits CP : Protection en lecture des mémoires de programme et de
données.
CP=1 ⇒ pas de protection et CP=0 ⇒ protection activée.

Exemple : On désire configurer le registre pour répondre aux critères


suivants :
oscillateur à quartz de 4 MHz, le timer du watchdog n’est pas autorisé, une
attente de 72 ms est souhaitée et le μC n’est pas protégé en lecture.

Configuration requise:

3FF1 en hexadécimal

19/03/2022 Dr. HORCH Med 77


77
PRESENTATION GENERALE DU PIC 16F84

Directives de MPASM
 EQU : Permet de définir une constante.
Exemple : XX EQU 0x20.
Chaque fois que le compilateur rencontrera la valeur XX, il la remplacera
par la constante 0x20. Ça peut être une constante s'il s'agit d'une
instruction avec adressage immédiat, ou d'une adresse s'il s'agit d'une
instruction avec adressage direct.

 #DEFINE : Définit un texte de substitution.


Exemple : #DEFINE monbit PORTA,1.
Chaque fois que le compilateur rencontrera monbit, il le remplacera par
PORTA,1.

 ORG: Définit la position dans la mémoire programme à partir de


laquelle seront inscrites les instructions qui suivent cette directive
ORG.
Exemple : ORG 0 ; adresse du début du programme principal.
ORG 4 ; adresse du début du sous-programme d’interruption.
19/03/2022 Dr. HORCH Med 78
78
PRESENTATION GENERALE DU PIC 16F84

1- Bits FOSC0 et FOSC1 : Sélection du type d'oscillateur pour l'horloge.


FOSC0 et FOSC1 =11 ⇒ Oscillateur à circuit RC jusqu'à 4 MHz.
FOSC0 et FOSC1 =10 ⇒ Oscillateur HS, quartz haute fréquence, jusqu'à
20 MHz.
FOSC0 et FOSC1 =01 ⇒ Oscillateur XT, quartz standard jusqu'à 4 MHz.
FOSC0 et FOSC1 =00 ⇒ Oscillateur LP, quartz basse fréquence, jusqu'à
200 KHz.
Bit WDTE :Validation du timer du watchdog WDT.
WDTE=1 WDT validé et WDTE=0 WDT inhibé.
Bit PWRTE :Validation d'une temporisation à la mise sous tension.
Le μC possède un timer permettant de retarder de 72 ms le lancement du
programme après la mise
sous tension. Ce délai maintient le μC à l’arrêt et permet ainsi à la tension
d'alimentation de bien se
stabiliser.
PWRTE=1 le μC démarre tout de suite et PWRTE=0 le μC attend
72 ms.
Bits CP : Protection en lecture des mémoires de programme et de
données.
19/03/2022
CP=1 pas de protection et CP=0 protection activée. Dr. HORCH Med 7979
PRESENTATION GENERALE DU PIC 16F84

Jeu d’instructions
Le μC 16F84 possède un jeu de 35 instructions. Chaque instruction est
codée sur un mot de 14 bits qui contient le code opération (OC) ainsi
que l'opérande. A part les instructions de saut, toutes les instructions sont
exécutées en un cycle d'horloge. Sachant que l’horloge fournie au μC est
prédivisée par 4, si on utilise par exemple un quartz de 4 MHz, on obtient
donc 1000000 cycles/seconde, cela nous donne une puissance de l’ordre
de 1 MIPS (1 Million d’Instructions Par Seconde). Avec un quartz de 20
MHz, on obtient une vitesse de traitement d’autant plus rapide.

Organisation des instructions:

1. Instructions « orientées octets » (adressage direct) :


Ce sont des instructions qui manipulent les données sous forme d’octets.
Elles sont codées de la manière suivante :

19/03/2022 Dr. HORCH Med 80


80
PRESENTATION GENERALE DU PIC 16F84

Jeu d’instructions

Organisation des instructions:

1. Instructions « orientées octets » (adressage direct) :

 6 bits pour l’instruction : c’est logique, car comme il y a 35 instructions,


il faut 6 bits pour pouvoir les coder toutes.
 1 bit (d) pour indiquer si le résultat obtenu doit être conservé dans le
registre de travail (accumulateur) W de l’unité de calcul (W pour Work)
ou sauvé dans un registre f (f pour file).
Remarque : (W, f ?d) signifie que le résultat est stocké soit dans W si d=0,
soit dans f si d=1.
 Reste 7 bits pour encoder l'adresse de l’opérande, mais 7 bits ne
donnent pas accès à la mémoire RAM totale, c’est ainsi qu’on on utilise
le bit RP0 du registre STATUS pour compléter le 8ème bit.

19/03/2022 Dr. HORCH Med 81


81
PRESENTATION GENERALE DU PIC 16F84
Jeu d’instructions
Organisation des instructions:
1. Instructions « orientées octets » (adressage direct) :

19/03/2022 Dr. HORCH Med 82


82
PRESENTATION GENERALE DU PIC 16F84

Jeu d’instructions

Organisation des instructions:

2. Instructions « orientées bits » :

Ce sont des instructions destinées à manipuler directement les bits d’un


registre d'une case mémoire. Elles sont codées de la manière suivante :
 4 bits pour l’instruction.
 3 bits pour indiquer le numéro du bit à manipuler (de 0 à 7).
 7 bits pour indiquer l’opérande.

19/03/2022 Dr. HORCH Med 83


83
PRESENTATION GENERALE DU PIC 16F84

Jeu d’instructions
Organisation des instructions:

3. Instructions opérant sur une donnée (adressage immédiat) :


Ce sont des instructions qui manipulent des données qui sont codées dans
l’instruction directement. Elles sont codées de la manière suivante :
 L’instruction est codée sur 6 bits.
 Elle est suivie d’une valeur immédiate codée sur 8 bits (donc de 0 à
255).

19/03/2022 Dr. HORCH Med 84


84
PRESENTATION GENERALE DU PIC 16F84

Jeu d’instructions
Organisation des instructions:

4. Instructions de saut et appel de procédures :


Ce sont des instructions qui provoquent une rupture dans la séquence de
déroulement du programme. Elles sont codées de la manière suivante :
 L’instruction est codée sur 6 bits.
 Elle est suivie d’une valeur immédiate codée sur 8 bits (donc de 0 à
255).

19/03/2022 Dr. HORCH Med 85


85
PRESENTATION GENERALE DU PIC 16F84

Exemple:
Allumer une LED en assembleur (PIC 16F84A)

Organigramme
d’un programme
PIC 16F84

19/03/2022 Dr. HORCH Med 86


86
PRESENTATION GENERALE DU PIC 16F84

Exemple:

Allumer une LED en assembleur (PIC 16F84A)


Programme 1

19/03/2022 Dr. HORCH Med 87


87
PRESENTATION GENERALE DU PIC 16F84

Exemple:

Allumer une LED en assembleur (PIC 16F84A)


Programme 2

19/03/2022 Dr. HORCH Med 88


PRESENTATION GENERALE DU PIC 16F84

Exemple:
Allumer une LED avec un bouton en assembleur (PIC 16F84A)

Organigramme
d’un programme
PIC 16F84

19/03/2022 Dr. HORCH Med 89


89
PRESENTATION GENERALE DU PIC 16F84

Exemple:
Allumer une LED avec un bouton en assembleur (PIC 16F84A)

Programme 1

19/03/2022 Dr. HORCH Med 90


90
PRESENTATION GENERALE DU PIC 16F84
Exemple:
Allumer une LED avec un bouton en assembleur (PIC 16F84A)
Programme 2

19/03/2022 Dr. HORCH Med 91


91

Vous aimerez peut-être aussi