Vous êtes sur la page 1sur 11

Formation professionnelle Aide mémoire Microprocesseur

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 


Formation professionnelle Aide mémoire Microprocesseur

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 


Formation professionnelle Aide mémoire Microprocesseur

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 


Formation professionnelle Aide mémoire Microprocesseur

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 


Formation professionnelle Aide mémoire Microprocesseur

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
;-----------Sous programme « TEMPO » de temporisation avec le TIMER1----------------Disque 0-----

Documentation du PIC 16F877A 5/11 


Formation professionnelle Aide mémoire Microprocesseur

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.

VI. Les instructions du langage C avec le logiciel mikroC


Documentation du PIC 16F877A 6/11 
Formation professionnelle Aide mémoire Microprocesseur

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 


Formation professionnelle Aide mémoire Microprocesseur

VI.4.2.Expressions :

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


les actions sont exécutése tant que la condition est 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ées si la condition est vraie, sinon les actions 2 est exécutées.

Documentation du PIC 16F877A 8/11 


Formation professionnelle Aide mémoire Microprocesseur

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


les actions sont 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 sans 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 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 


Formation professionnelle Aide mémoire Microprocesseur

VI.5. Déclaration d’une fonction


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

Type du résultatNom de la fonction(parameter1, parameter1,...){ instruction1 ; instruction2 ; … }

VI.6.Instructions 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

Fonction associée à « Lcd_Cmd » Action


Documentation du PIC 16F877A 10/11 
Formation professionnelle Aide mémoire Microprocesseur

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 

Vous aimerez peut-être aussi