Vous êtes sur la page 1sur 11

Université de Thiès Architecture et Pratique des Systèmes Génie Electrique

Institut Universitaire de Technologie à Microprocesseurs Informatique Industrielle

Le microcontrôleur PIC 16F877

I.1. Brochage du microcontroleur PIC 16F877A

I.2. Ressources du microcontroleur PIC 16F877

I.3. Mémoires du microcontroleur PIC 16F877

Documentation du PIC 16F877A 1/11  Mars 2018 Dr. Ousmane SOW


Université de Thiès Architecture et Pratique des Systèmes Génie Electrique
Institut Universitaire de Technologie à Microprocesseurs Informatique Industrielle

II. Architecture du microcontrôleur PIC 16F877

A partir le l’oscillateur connecté aux bornes OSC1 et OSC2, le


microcontrôleur génère une horloge interne d’une fréquence déterminée.
Soit 𝑓 la fréquence de travail du microprocesseur, pour le PIC 16F877,
on a :
𝑓
𝑓 =
4
Le tableau ci-contre donne les plages de fréquences pour les oscillateurs de
type quartz.

Documentation du PIC 16F877A 2/11  Mars 2018 Dr. Ousmane SOW


Université de Thiès Architecture et Pratique des Systèmes Génie Electrique
Institut Universitaire de Technologie à Microprocesseurs Informatique Industrielle

III. Le jeu d’instruction du microcontrôleur PIC 16F877A


INSTRUCTIONS OPERANT SUR REGISTRE (Direct) Indicateurs Cycles
ADDWF F,d W+F  {W,F ?d} C,DC,Z 1
ANDWF F,d W and F  {W,F ?d} Z 1
CLRF F Clear F Z 1
CLRW Clear W Z 1
CLRWDT ClearWatchdoctimer TO’,PD’ 1
COMF F,d Complémente F  {W,F ?d} Z 1
DECF F,d Décrémente F  {W,F ?d} Z 1
DECFSZ F,d Décrémente F  {W,F ?d} sautesi 0 1(2)
INCF F,d Incrémente F  {W,F ?d} Z 1
INCFSZ F,d Incrémente F  {W,F ?d} sautesi 0 1(2)
IORWF F,d W or F  {W,F ?d} Z 1
MOVF F,d F  {W,F ?d} Z 1
MOVWF F WF 1
RLF F,d Rotation à gauche de F à travers C  {W,F ?d} C 1
RRF F,d Rotation à droite de F à travers C  {W,F ?d} C 1
SUBWF F,d F-W  {W,F ?d} C,DC,Z 1
SWAPF F,d Permute les 2 quartets de F  {W,F ?d} 1
XORWF F,d W xor F  {W,F ?d} Z 1

INSTRUCTIONS OPERANT SUR BIT


BCF F,b Force à 0 le bit b du registre F 1
BSF F,b Force à 1 le bit b du registre F 1
BTFSC F,b Teste le bit b de F, si 0 saute une instruction 1(2)
BTFSS F,b Teste le bit b de F, si 1 saute une instruction 1(2)

INSTRUCTIONS OPERANT SUR DONNEE (Immédiat)


ADDLW K W+K  W C,DC,Z 1
ANDLW K W and K  W Z 1
IORLW K W or K  W Z 1
MOVLW K KW 1
SUBLW K W-K  W C,DC,Z 1
XORLW K W xor K  W Z 1

INSTRUCTIONS GENERALES
CALL L Branchement à un sous programme de label L 2
GOTO L Branchement à la ligne de label L 2
NOP Pas d’opération 1
RETURN Retour d’un sous programme 2
RETFIE Retour d’interruption 2
RETLW K Retour d’un sous programme avec K dans W 2
SLEEP Se met en mode standby TO’, PD’ 1
{W,F ?d} signifie que le résultat va soit dans W si d=0 ou w, soit dans F si d=1 ou f.
7 6 5 4 3 2 1 0
STATUS IRP RP1 RP0 TO PD Z DC C
T1CON - - T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
PIR1 PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF

Documentation du PIC 16F877A 3/11  Mars 2018 Dr. Ousmane SOW


Université de Thiès Architecture et Pratique des Systèmes Génie Electrique
Institut Universitaire de Technologie à Microprocesseurs Informatique Industrielle

IV. Partition de la mémoire RAM du microcontrôleur PIC 16F877A


La mémoire RAM est organisée en 4 disques. Pour accéder à un registre il faut d’abord sélectionner
son disque avec les 2 bits RP0 et RP1 du registre STATUS.
STATUS
RP1 RP0 Partition
0 0 Disque 0
0 1 Disque 1
1 0 Disque 2
1 1 Disque 3

Documentation du PIC 16F877A 4/11  Mars 2018 Dr. Ousmane SOW


Université de Thiès Architecture et Pratique des Systèmes Génie Electrique
Institut Universitaire de Technologie à Microprocesseurs Informatique Industrielle

V. Organisation du fichier assembleur du logiciel de programmation MPLAB

V.1.En-tête du fichier assembleur


Un programme commence par les deux lignes suivantes :
LIST p=16f877A
#INCLUDE <p16f877A.inc>

V.2.Déclaration d’une variable


Exemple, donner le nom COMPT à la mémoire d’adresse 20hs’écrit : COMPT EQU 20h

V.3.Choix de l’adresse de chargement d’un programme


Exemple, charger les instructions qui suivent à partir de l’adresse 08h s’écrit :ORG 08h

V.4.Les sous programmes usuels

;----------------Sous programme de rotation à droite sur 8 bits d’un registre F-------------Disque 0------
ROT_D_8bits
RRF F,f
BCF F,7
BTFSC STATUS,C
BSF F,7
RETURN

;---------------Sous programme de rotation à gauche sur 8 bits d’un registre F------------Disque 0------
ROT_G_8bits
RLF F,f
BCF F,0
BTFSC STATUS,C
BSF F,0
RETURN

Documentation du PIC 16F877A 5/11  Mars 2018 Dr. Ousmane SOW


Université de Thiès Architecture et Pratique des Systèmes Génie Electrique
Institut Universitaire de Technologie à Microprocesseurs Informatique Industrielle

;-----------Sous programme « TEMPO » de temporisation avec le TIMER1----------------Disque 0-----

Le sous programme de temporisation ci-dessous a une dure de :


t = ( 216 – N )*Pred*Tcycle
TEMPO
MOVLW h'XY'
MOVWF T1CON
MOVLW H'UV'
MOVWF TMR1H
MOVLW H'ZT'
MOVWF TMR1L
BCF PIR1,TMR1IF
L200
BTFSS PIR1,TMR1IF
GOTO L200
RETURN

Tcycle est la durée d’un cycle du microprocesseur. Pour le PIC on a :


Tcycle = 4*Tosc
avecTosc étant la période de l’oscillateur connecté au PIC.
N est un entier qui sera converti en hexadécimale sur 4 chiffres pour obtenir les chiffres U, V, Z et
T des registres TMR1H et TMR1L.
Pred peut prendre la valeur 1, 2, 4 ou 8 selon les valeurs des bits 4 et 5 du registre T1CON de
configuration du Timer1.

Documentation du PIC 16F877A 6/11  Mars 2018 Dr. Ousmane SOW


Université de Thiès Architecture et Pratique des Systèmes Génie Electrique
Institut Universitaire de Technologie à Microprocesseurs Informatique Industrielle

VI. Les instructions du langage C avec le logiciel mikroC

VI .1. Règles générale d’écriture en microC :


 les instructions propres au langage microC doivent être écrites en minuscule,
 les instructions particulières aux microcontrôleurs doivent être écrites en majuscule,
 les retours à la ligne et les espaces servent uniquement à aérer le code,
 toutes instructions ou actions se terminent par un point virgule « ; »,

VI.2. Déclaration de variables


Type de variable Taille (bits) Plage
unsigned short int 8 de 0 à 255
unsigned int 16 de 0 à 65535
unsigned long int 32 de 0 à 4294967295
Exemple:unsigned short int var ;

VI.3. Création d’étiquette


On peut renommer une entité pour rendre son nom plus familier par : #define LED PORTB.RB0

VI.4.Opérateurs et expressions en mikroC


VI.4.1.Opérateurs
Operateur Action Notation
= affectation x=y
== test d’égalité x==y
!= test de non égalité x !=y
++ incrémentation x++ ou ++x
-- décrémentation x-- ou --x
>> Décalage à droite x >>n
<< Décalage à gauche x <<n
+ addition x+y
- soustraction x-y
* multiplication x*y
/ division x/y
> test supérieur strict x>y
< test inferieur strict x<y
>= test supérieur ou égal x>=y
<= test inferieur ou égal x<=y
&& ET x&&y
|| OU x||y
! NON !x
& ET bit à bit x&y
| OU bit à bit x|y
~ NON bit à bit ~x
^ OU exclusif bit à bit x^y

Documentation du PIC 16F877A 7/11  Mars 2018 Dr. Ousmane SOW


Université de Thiès Architecture et Pratique des Systèmes Génie Electrique
Institut Universitaire de Technologie à Microprocesseurs Informatique Industrielle

VI.4.2.Expressions :

- while (condition) {action


action1 ; action2 ; … }
les actions sont exécutésee tant que la condition est vraie
vraie.

- while (condition);
attente tant que la condition est vraie.
- while (1) {…}
le contenu des accolades est exécuté en boucle(boucle sans fin).

- do { action1 ; action2 ; … } while (condition) ;


répétition les actions tant que la condition est vraie

- if (condition) action1; else action2;


les actions 1 sont exécutée
exécutées si la condition est vraie, sinon les actionss 2 est exécutées.

Documentation du PIC 16F877A 8/11  Mars 2018 Dr. Ousmane SOW


Université de Thiès Architecture et Pratique des Systèmes Génie Electrique
Institut Universitaire de Technologie à Microprocesseurs Informatique Industrielle

- if (condition) {action1 ; action2 ; … }


les actions sont exécutée
exécutées si la condition est vraie.

- for (valeur initiale ; valeur limite; nouvelle valeur) {actions }

for (;;) {…} le contenu des accolades est exécuté en boucle(boucle


boucle sans fin).
fin

- switch ( x ) { case y1:: action 1; break; case y2: action 2;; break; … default: action; }
Si x = yi alors les actions i sont exécutées et le switch
witch se termine, sinon c’est les actions par défaut
qui sont exécutées en fin de commutation.

Documentation du PIC 16F877A 9/11  Mars 2018 Dr. Ousmane SOW


Université de Thiès Architecture et Pratique des Systèmes Génie Electrique
Institut Universitaire de Technologie à Microprocesseurs Informatique Industrielle

VI.5. Déclaration d’une fonction


La syntaxe générale d’une définition de fonction est montrée ci
ci-dessous :

Type du résultatNom de la fonction


fonction(parameter1, parameter1,...){ instruction1 ; instruction2 ; … }

VI.6.Instructions
tructions pour l’afficheur LCD

Fonction Action Exemple


Lcd_Init Initialiser l’afficheur LCD Lcd_Init ( );
Lcd_Out Afficher un texte à une position donnée Lcd_Out (1, 2, "DAKAR");
"
Lcd_Out_Cp Afficher un texte à la position actuelle Lcd_Out_Cp ("PIKINE");
("
Lcd_Chr Afficher un caractère à une position donnée Lcd_Chr (2, 4, ‘F’);

Lcd_Chr_Cp Afficher un caractère à la position actuelle Lcd_Chr_Cp (’K’);
(’
Lcd_Cmd Pilotage de l’affichage Voir tableau ci-dessous
ci

Documentation du PIC 16F877A 10/11  Mars 2018 Dr. Ousmane SOW


Université de Thiès Architecture et Pratique des Systèmes Génie Electrique
Institut Universitaire de Technologie à Microprocesseurs Informatique Industrielle

Fonction associée à « Lcd_Cmd » Action


Lcd_Cmd (_Lcd_Clear); Effacer l’écran
_LCD_RETURN_HOME Retourner vers la position du curseur
_LCD_FIRST_ROW Déplacer le curseur vers la première ligne
_LCD_SECOND_ROW Déplacer le curseur vers la deuxième ligne
_LCD_BLINK_CURSOR_ON Clignotement du curseur
_LCD_MOVE_CURSOR_LEFT Déplacer le curseur à gauche
_LCD_MOVE_CURSOR_RIGHT Déplacer le curseur à droite
_LCD_SHIFT_LEFT Décaler l’affichage à gauche
_LCD_SHIFT_RIGHT Décaler l’affichage à droite

Documentation du PIC 16F877A 11/11  Mars 2018 Dr. Ousmane SOW