You are on page 1of 13

Formation Pic Cellule Robotique et Projet Innovent

 

Chapitre 1

Hjdjqknkdj

Plan :

 
  • C’est quoi un PIC?

 

P 2

  • Pourquoi un microcontrôleur

P 3

  • Présentation du pic 16F877

P 4

  • Organisation du Pic 16F877

P 5

  • Mémoires

P 6

  • Entrées / Sorties

 

P 9

  • Unité de calcul

P 11

  • Périphériques

P 11

  • Registres (W, STATUS, OPTION, PCL & PCLATH)

P 11

Formation Pic Cellule Robotique et Projet Innovent Chapitre 1 Hjdjqknkdj  Pic ! C’est quoi ?
Formation Pic
Cellule Robotique et Projet Innovent
Chapitre 1
Hjdjqknkdj
Pic ! C’est quoi ?
PIC = microcontrôleur d’une société américaine qui s’appelle MICROCHIP
Microcontrôleur = mini environnement informatique qui se compose d’un
microprocesseur, une mémoire programme, une ram, des entrées /sorties et
des périphériques .
Microprocesseur : se compose d’une unité de calcule arithmétique et
logique et un compteur programmes (c’est le séquenceur qui indique à l’unité
arithmétique et logique qu’elle instruction va exécuter); c’est le cerveau de
microcontrôleur.
Mémoire programme : c’est la mémoire qui contient le programme (les
instructions) à exécuter par le microcontrôleur.
RAM : c’est la mémoire qui contient les variables déclarées dans le
programme.
Les entrée / sorties : sont les ports ou bien l’interface de communication
de µC avec les autres unités (capteurs, moteurs, leds, boutons poussoirs, les
afficheurs …).
Les périphériques : sont des fonctionnalités intégrées dans le µC pour
faciliter le traitement (interruptions, timers, Convertisseur analogique
numérique …) ou bien la communication avec des protocoles standards (port
USART, USB, SPI, I2C, Port parallèle …).
Formation Pic Cellule Robotique et Projet Innovent Chapitre 1 Hjdjqknkdj  Pourquoi un µC : Parfois
Formation Pic
Cellule Robotique et Projet Innovent
Chapitre 1
Hjdjqknkdj
Pourquoi un µC :
Parfois l’utilisation des systèmes combinatoires (port logiques, décodeurs …)
et systèmes séquentiels (bascules, compteurs …) rend le système très
encombrant, complexe et coûteux. Un autres défaut aussi est une fois conçus il
n’est plus possible de changer le fonctionnement .Tous ces défaut sont quasi
inexistant dans les µC .Donc le µC a pour rôle de construire des systèmes avec
une grande souplesse et à bas coût.
Présentation du Pic 16F877 :
Formation Pic Cellule Robotique et Projet Innovent Chapitre 1
Formation Pic
Cellule Robotique et Projet Innovent
Chapitre 1
Formation Pic Cellule Robotique et Projet Innovent Chapitre 1 Hjdjqknkdj  Organisation du PIC 16F877:
Formation Pic
Cellule Robotique et Projet Innovent
Chapitre 1
Hjdjqknkdj
Organisation du PIC 16F877:
Formation Pic Cellule Robotique et Projet Innovent Chapitre 1  Mémoires du 16F877 : Mémoire: le
Formation Pic
Cellule Robotique et Projet Innovent
Chapitre 1
Mémoires du 16F877 :
Mémoire: le pic possède deux types de mémoire ; FLASH programme,
Mémoire de données .
I.
FLASH programme : c’est la mémoire qui contient le programme à
exécuter par le l’unité arithmétique et logique. Elle est organisée de la manière
suivante :
Formation Pic Cellule Robotique et Projet Innovent Chapitre 1 Hjdjqknkdj • Explication :  8 stack
Formation Pic
Cellule Robotique et Projet Innovent
Chapitre 1
Hjdjqknkdj
Explication :
8 stack level : c’est la pile du pic , elle se compose de 8 cases de 13 bit
(nombre de bits pour adresser 8K de mémoire : 8K =8196= 2^13); c’est-à-dire
qu’elle empile la valeur de compteur programme après chaque fois on utilise
l’instruction call ou à chaque interruption .Et qu’elle dépile la valeur de
compteur programme après chaque instruction de return , retfie , retlw .Elle
permet au programme de retourner à ça position initiale après chaque retour
d’un sous programmes ou un retour de programme d’interruption.
L’adresse 0x0000 : c’est l’adresse où le programme commence après
démarrage ou après un reset.
L’adresse 0x0004 : c’est l’adresse à laquelle le programme se branche après
une interruption (interruption = événement avec une priorité supérieure à celle
du programme principale).
0x0005 jusqu’à 0x1FFF : est le reste de la mémoire et se compose de 4 pages
chacune d’une capacité de 2K
Remarque : pour savoir pourquoi cette notion de pages veuillez lire les détails
sur le registre PC (programme counter) dans la suite de ce chapitre.
Mémoire de donnée : il existe deux types : RAM et EEPROM
RAM : c’est une mémoire volatile (données perdues après une coupure de
courant sur le µC). Elle sert à contenir les donnés et les valeurs des variables
déclarées dans le programmes .Elle contient aussi les registres du pic et qui sont
nécessaire au contrôle des périphériques et la bonne exécution de programme.
Elle est organisée de la façon montrée dans le schéma suivante:
Remarque :
La Ram est divisée en quartes parties qu’on appelle les banques et
pour lire ou écrire sur un registre ou variable qui se situe dans une banque
spécifique il faut s’assurer qu’on est positionné dans cette banque .Pour faire il
existe deux bits dans le registre STATUS qui permet de réaliser ça et on va les
voir dans la suite de ce chapitre aussi.
Formation Pic Cellule Robotique et Projet Innovent Chapitre 1 Hjdjqknkdj
Formation Pic
Cellule Robotique et Projet Innovent
Chapitre 1
Hjdjqknkdj
Formation Pic Cellule Robotique et Projet Innovent Chapitre 1 Hjdjqknkdj  EEPROM : c’est une mémoire
Formation Pic
Cellule Robotique et Projet Innovent
Chapitre 1
Hjdjqknkdj
EEPROM : c’est une mémoire non volatile . Elle sert à contenir les donnés
dont on aura besoin après un reset ou coupure de courant sur le pic. Elle est
d’une taille de 256 octets pour le pic 16F877.
Entrées & Sorties :
Les ports sont les outils qui permettent au PIC de communiquer avec le monde
extérieur. Ce sont un ensemble d’entrée/sorties qui possède des propriétés
particulières chacune.
Le Pic 16F877possède 5 ports d’entrée sortie à savoir :
1.
Le Port A : port sur 6bits dont ses propriétés sont résumées dans le tableau :
Remarque : TTL signifie qu’il envoi sur ça sortie 0V pour le 0 logique et 5V pour
le 1 logique. Idem pour l’entrée 5V lue comme 1 et 0V comme 0
ST signifie qu’il fonctionne on trigger de schmitt si il est configuré
en entrée. IE : il a deux seuils de comparaison
Drain signifie que la sortie ne peut pas envoyer 5V pour le 1 logique
mais laisse la branche flottante c'est-à-dire en air.
2. Le Port B : port sur 8 bits . Ses propriétés sont résumées dans le tableau :

Formation Pic Cellule Robotique et Projet Innovent

 

Chapitre 1

 

Remarque : Les autres propriétés seront expliquées plus tard.

3.

 

Le Port C : port sur

8 bits
8
bits

. Ses propriétés sont résumées dans le tableau :

Formation Pic Cellule Robotique et Projet Innovent Chapitre 1 Remarque : Les autres propriétés seront expliquées
 
  • 4. Le Port D

: port sur

8 bits
8 bits

. Ses propriétés sont résumées dans le tableau :

Formation Pic Cellule Robotique et Projet Innovent Chapitre 1 Remarque : Les autres propriétés seront expliquées
   
  • 5. Le Port E : port sur

3 bits
3
bits

. Ses propriétés sont résumées dans le tableau :

Formation Pic Cellule Robotique et Projet Innovent Chapitre 1 Remarque : Les autres propriétés seront expliquées
Formation Pic Cellule Robotique et Projet Innovent Chapitre 1 Hjdjqknkdj  Unité de Calcul : C’est
Formation Pic
Cellule Robotique et Projet Innovent
Chapitre 1
Hjdjqknkdj
Unité de Calcul :
C’est la partie intelligente du pic . Elle peut faire des opérations arithmétiques
hardware (l’addition, soustraction, ajouter 1<incrémentation>, soustraire
1<décrémentation>, division par 2, multiplication par deux), des opérations
arithmétiques software (multiplication et division) et des opérations logiques
(AND, OR, XOR et complément à 1) et d’autres opérations . Ce qu’il faut savoir
de plus c’est que la plupart des opérations effectuées par cette unité sont entre
un registre ou variable et le registre de travail W.
Les Périphériques :
Le Pic 16F877 possède une variété non négligeable de périphériques à savoir :
-
2 timers 8 bits ; Timer0 avec un pré diviseur et le Timer2 avec un pré diviseur
et un post diviseur.
-
1 timer 16 bits avec un pré diviseur
-
14 sources d’interruption interne et externe
-
2 module CCP (Compare Capture PWM)
-
Convertisseur analogique numérique 10 bits et 8 canaux
-
Module USART (Universal Synchronous Asynchronous Receiver
Transmitter)
-
Module SSP (Synchronous Serial Port) avec SPI (mode maitre) et I2C
(maitre/esclave)
-
Module PSP (Parallel Slave Port).
Une partie de ces périphériques qui nous intéressent seront étudié et détaillé
dans chapitres suivants.
Les Registres :
Nous allons voir dans cette section quelques registres du Pic 16F877 :
-
W : C’est le registre de travail. C’est un registre 8bits directement lié à l’unité
arithmétique et logique UAL, en effet c’est l’espace de travail de l’UAL .
-
STATUS : C’est le registre d’état. C’est un registre 8bits où on trouve des infos
sur la dernière opération de l’UAL. Il permet aussi de choisir la banque RAM
(J’espère que vous souvenez ce que veut dire la banque RAM) dans laquelle
on veut travailler. Voir l’explication ci-dessous pour plus de détail :

Formation Pic Cellule Robotique et Projet Innovent

-

b0 : C Carry (report)

PD\= 1 : Watchdog

sera positionné à 1.

RBPU
RBPU

b5-6 : RP0-RP1

b2 : Z Zéro

 

b3 : PD\ Power Down

-

B6

sur le PORTB

B7 :

B7 :

  • 00 : banque 0 (180h - 1FFh)

  • 01 : banque 1 (180h - 1FFh)

  • 10 : banque 2 (180h - 1FFh)

  • 11 : banque 3 (180h - 1FFh)

b0 : C Carry (report) PD\= 1 : Watchdog sera positionné à 1. RBPU b5-6 :
b0 : C Carry (report) PD\= 1 : Watchdog sera positionné à 1. RBPU b5-6 :
: INTEDG
: INTEDG
b0 : C Carry (report) PD\= 1 : Watchdog sera positionné à 1. RBPU b5-6 :
Formation Pic Cellule Robotique et Projet Innovent - b0 : C Carry (report) PD\= 1 :

Chapitre 1

Chapitre 1
Ce bit est en fait le 9ème bit d’une opération. Par exemple, si une addition de

Ce bit est en fait le 9ème bit d’une opération.

Par exemple, si une addition de 2 octets donne une valeur >255 (0xFF), ce

b1 : DC Digit Carry Ce bit est utilisé principalement lorsque l’on travaille avec

des nombres BCD : il indique un report du bit 3 vers le bit 4. Pour info, un nombre BCD est un nombre dont chaque quartet représente un chiffre décimal.

Ce bit est positionné à 1 si le résultat de la dernière opération vaut 0.

Indique quel événement a entraîné le dernier arrêt du

PIC® (instruction sleep ou dépassement du temps du watchdog). PD\= 0 : Sleep

b4 : TO\ Time-Out bit Ce bit indique (si 0), que la mise en service suit un arrêt

provoqué par un dépassement de temps ou une mise en sommeil. Dans ce cas, PD effectue la distinction.

Register Bank Select Ces deux bits permettent de sélectionner la

Register Bank Select Ces deux bits permettent de sélectionner la

banque RAM dans laquelle on veut travailler.

IRP Indirect RP Permet de décider quelle banque on adresse dans le cas de

l’adressage indirect (que nous verrons plus tard).

OPTION : C’est un registre 8bits qui possède divers fonctions :

Ce bit permet de mise en service (RBPU=0) les résistances de rappel Ce bit permet le

Ce bit permet de mise en service (RBPU=0) les résistances de rappel

Ce bit permet le front sur lequel RB0 déclenche l’interruption

INTEDG = 0 : front descendant INTEDG = 1 : front montant

Formation Pic Cellule Robotique et Projet Innovent

-

courante ;

diviseur

chapitre suivant)

instructions CALL et GOTO

B3 : PSA
B3 : PSA
B2-1-0
B2-1-0
PC :
PC :

le Timer0 TOCS = 1 : front descendant TOCS = 0 : front montant

soit il ajout 1
soit il ajout 1
- courante ; diviseur chapitre suivant) instructions CALL et GOTO B3 : PSA B2-1-0 PC :
B5 : TOCS
B5 : TOCS
Formation Pic Cellule Robotique et Projet Innovent - courante ; diviseur chapitre suivant) instructions CALL et

Chapitre 1

soit il ajout deux (pour

(représenté comme deux

soit il ajout deux (pour (représenté comme deux

Ce bit permet de sélectionner l’horloge de Timer0

TOCS = 1 : Transition en RA4 TOCS = 0 : l’horloge interne du PIC

B4 : TOSE Ce bit permet de sélectionner le front de la pine RA4 pour incrémenter

Ce bit permet de déterminer si le pré diviseur sera appliqué au Timer0

ou au Watchdog. PSA = 1 : Pré diviseur pour le watchdog PSA = 0 : Pré diviseur pour le timer0

: PS2 PS1 PS0 : Ces trois bits permet de déterminer la valeur de pré

Compteur pro gramme. C’est un

Compteur programme. C’est un

registre 13 bits

registre PCL=8bits et PCLATH = 5 bits). Il contient l’adresse de l’instruction suivante à exécuter par l’UAL. 13 bits pour adresser une plage de 8 K (2^13 =

8196 = 8K), c’est bien la taille totale de la mémoire flash programme. NB : le compteur programme extrait l’adresse suivante de l’instruction

(pour BSF, BCF, MOVLW…)

BTFSC, BTFSS… si il y a un saut, en verra les détails des instructions dans le

 

soit il charge une adresse sur 11 bits extraite des deux

 

. Si vous remarquer les 11 bits permettent un

adressage de 2K, c’est pour cela la mémoire programme est divisé en 4

pages 8K = 4x2K comme on a indiqué précédemment.