Académique Documents
Professionnel Documents
Culture Documents
• pic 16F877
• langage assembleur
• les interruptions
3. domaine d'application:
• informatique (modem, souris ...)
• l'électroménager (lave-vaisselle, micro-onde)
• automobile (GPS,AIRBAG....)
• contrôle des processus industriels (régulation, pilotage)
Généralité sur le microcontroleur
4.1Les mémoires
4.2 le microprocesseur :
le µp fonctionne selon les étapes suivantes:
chercher l'instruction suivante en mémoire
la décoder pour déterminer l'action qu'il doit effectuer
l'exécuter
revenir à l'étape 1
Généralité sur le Microcontrôleur
4.2 le microprocesseur :
la structure interne d'un microprocesseur
UAL: cette unité est utilisée pour les opérations arithmétiques et logiques.
CCR: registre d'état, il permet de garder des informations sur l'état du µp
Accumulateur: utilisé pour recevoir les données entrantes et sortantes de L'UAL
PC: il effectue l'adressage et pointe sur la prochaine adresse mémoire à exécuter
Généralité sur le Microcontrôleur
on distingue 3 type:
•bus d'adresses: permet au µp de sélectionner la case mémoire où le
périphérique auquel il veut accéder pour lire ou écrire une information
mémoire
de programme
µp Bus de données
et de données
Généralité sur le Microcontrôleur
décodage d'adresses:
Il permet au µp de sélectionner un seul composant( RAM,ROM,....), ce décodage se
fait à l'aide des fonctions logiques sous forme de circuit électroniques.
Généralité sur le Microcontrôleur
Plan mémoire
exemple
Exercice:
Soit un microprocesseur a un bus d’adresse de 20 bits et un bus de données de 8bits
mémoire mémoire
µp
de programme de données
PIC 16F877
I. Introduction
les PICs sont des µcs à jeu d'instruction réduit, ils utilisent une architecture Harvard.
NN(L) MM xxxx-yy
avec:
• NN: désigne la famille à laquelle appartient le circuit (12,14,16,18)
par exemple: 16(L) MM xxxx-yy => 16 indique un ¨PIC Mid-Range
• L: indique que le PIC peut fonctionner avec une tension minimum 2V, l'absence de
la lettre L indique que le PIC fonctionne uniquement dans la plage de tension qui
s'etend de 4volts à 5V
• MM: indique le type de mémoire de programme on trouve
C: EPROM
CR: ROM
F: Flash
• xxxx: la réference du circuit dans la famille
• yy: représente la fréquence d'horloge maximale que le PIC peut recevoir
II.Architecture interne du PIC
16F877
Les registres:
considérer deux plans mémoire l'un pour les instructions et l'autre pour les
le plan mémoire est linéaire les adresses vont de 0000H à1FFFH (8Kmots de 14bits)
96 position sont réservées au SFR qui sont les registres de configuration du PIC
1) adressage direct :
on veut accéder .
exemple:
movwf 70h ; permet de copie l'accumulateur w dans
; la case mémoire d'adresse 70h
NB: RP0 et RP1 doivent être positionnés correctement avant toute instruction
qui accède à la RAM par l'adressage direct
RP1 RP0
0 0 Bank0
0 1 Bank1
1 0 Bank2
1 1 Bank3
dans l'adressage indirect on passe toujours par un registre virtuel (INDF) dont l'adresse
NB: le bit IRP doit être positionné correctement avant toute instruction qui accèder à la
IRP
0 Bank 0/1
1 Bank 2/3
13 8 7 6 0
op opcode d F
13 10 9 7 6 0
opcode bb F
13 87 0
opcode k
avec k: constante
d) les instructions de saut et appel de procédure: sont des instructions qui permettent
de sauter à une autre position dans le programme et de continue l'exécution du
programme à partir de cette position
13 10 0
opcode L
Exercice 2:
Donner le programme qui copie l'alphabet dans la RAM à partir de la position 190h.
f) les instructions de rotation et de permutation:
• Rotation : les rotation à droite ou à gauche se font à travers le carry C
syntaxe:
RRF reg,d ;rotation à droite de [reg]
RLF reg ,d ; rotation à gauche de [reg]
exemple 1:
bsf STATUS,c
movlw B'10010111'
movwf 0X6F
RLF 0X6F,f ; rotation à gauche de [6F]
c b7 b6 b5 b4 b3 b2 b1 b0
6F 1 1 0 0 1 0 1 1 1
RLF 1 0 0 1 0 1 1 1 1
NB: l'opération de rotation vers la gauche effectue l'opération suivante: le bit de carry est
mémorisé. Ensuite chaque bit de l'octet est déplacé vers la gauche. l'ancien bit sort de
l'octet par la gauche, et devient le nouveau carry le nouveau bit 0 devient l'ancien
carry
exemple 2:
bsf STATUS,c
movlw B'00010110'
movwf 20h
RRF 20h,0
c b7 b6 b5 b4 b3 b2 b1 b0
20 1 0 0 0 1 0 1 1 0
RLF 0 1 0 0 0 1 0 1 1
• Permutation : opération inverse le demi-octet de poids faible avec celui de poids fort.
Syntaxe:
swapf f,d
exemple:
movlw 0xc5 ;charger 0xc5 dans w
movwf 0x5F ; placer [w] dans l'adresse 5F
swapf 0x5F,f ; [5F]= 5c
Ecrire le programme qui :
• Remplit les 80 premières positions de la RAM utilisateur par les nombres allant de 1 à 80
• permet de multiplier par 2 le contenu des cases mémoire (RAM) comprises entre 160h et 16F (indication :
un décalage logique à gauche équivalent à une multiplication par 2).
g) l'instruction Call: permet d'appeler une fonction. une fonction est un sous
programme écrit à la suite du programme principal.
programme principal
instruction1
instruction2
instruction3
CALL tempo
instruction5
instruction6
Fonction
tempo
instruction
instruction
instruction
instruction
return ou retlw k
NB :
• return: retour de sous programme
• retlw k: retour de sous programme avec k dans w
Pointer un tableau en mémoire programme:
• les registres utilisés : w et PCL (poids faible du compteur programme)
• les étapes qui permet de pointer un tableau :
étape 1: placer le numéro de la ligne du tableau dans le programme principale (Movf ind,w)
étape 2: appel du sous programme call tableau
étape 3: on ajoute au compteur programme le contenu de w addwf PCL,f, ce qui permet de sauter à la ligne qui nous intéressons.
étape 4: ecrire le tableau sous forme de retlw
exemple:
movf index,w
call tableau
tableau
retlw 'A' ; premier élèment =0
retlw 'z' ;
:
retlw 225
Exercice :
ecrire un programme qui permet de pointer un tableau 7segment dans la mémoire programme et copier son contenu à partir de
l'adresse 20h
• les instructions des opérations logiques:(modifié le bit z)
et logique :
andwf reg,d
andlw val
complèment :
comf reg,d
ou logique :
iorwf reg,d
iorlw val
ou exclusif :
xorwf reg,d
xorlw val
exemple :
movlw FFh
movwf 70h
comf 70h, f
andwf 70h,f
iorwf 70h,f
xorwf 70h,w
• les autres instructions
clrf f : [f] = 00h
clrw : [w]= 00h
nop : no opération
Remarque:
Toutes les instructions sont excutées en un cycle d'instruction (càd le temps
nécessaires à l'éxècution d'une instruction) , à part les instructions de saut ( par
exemple: call, goto) qui sont exécutées en 2 cycles d'instructions.
f osc
l ' hor log e d ' instruction
4
avec f osc la fréquence d'horloge
Exemple : soit la fréquence d'horloge est de 4MHz
• calculer l'horloge d'instruction
• calculer la durée d'exècution d'une instruction standard
VI.les ports d'entrée/sortie du PIC 16F877
Le µc dispose de 5 ports d'e/s parallèles (A,B,C,D,E) tous les ports sont pilotées par deux registres:
• PORTx: recopiant les états logiques de chaque broche de port (par exemple PORTA)
• TRISX : détermine si le PORTx ou certaines lignes de port sont en entrée ou en sorties (par exemple:
TRISB)
PIC R
Led
RA4
• Fonctionnement:
E/S numériques
toutes les entrées du portB peuvent d‘être pourvues de résistances de tirage validées par le bit RBPU =0 du registre
OPTION_Reg
• Fonctionnement:
E/S numériques
E/S numériques
Le fonctionnement de ce port dépend de la valeur qui est placée dans le bit 4 de TRISE
si TRISE,4= 1 =>PORTD en mode PSP, c’est-à-dire le microcontrôleur peut être interfacé avec un
autre microprocesseur. Dans ce cas le PORTD représente le bus de données et le PORTE les
La boucle intérieur (N1) se fait toujours 256 fois la boucle extérieur se fait N2 fois
tempo2
movlw N1 ;1cycle
movwf compt1 ;1cycle
movlw N2 ;1cycle
movwf compt2 ;1cycle
t2 decfsz compt1,f
goto t2 ; N2((1+2)(N1-1)+2)
decfsz compt2,f
goto t2 ;(1+2)(N2-1)+2
return ; 2cycles
Exercice
Soit la fréquence de l'oscillation est de 20MHz,écrire un programme qui permet de
réaliser le jeu de lumière suivant, avec les leds connectées sur le port B, avec une
temporisation voisine de 0,5s entre deux séquences successives :
V. les mémoires permanents:
la mémoire EEPROM de données:
le pic 16F877 dispose de 256 octets de mémoire EEPROM de donnée.
son implantation physique commence à la position d'adresse absolue 2100h
1) Les registres utilisées:
EEADR : registre d'adresse
EEDATA: registre de donnée
EECON1: 1ere registre de contrôle
EECON2: 2eme registre de contrôle
EECON1:
EEPGD 6 -- -- -- WRERR WREN WR RD
NB: pour déclarer des donnés qui seront stockée dans l'EEPROM de donnée au
moment de l'implantation du programme sur le PIC
org 0X2100
DE '' BONJOUR'' , 22, 'z'
Exercice:
programme qui utilise la directive DE pour initialiser les premières positions de
l'EEPROM de données avec la chaine '' BONJOUR'' , le programme doit ensuite
lire ces caractères ( 1 par 1) dans l'EEPROM et les copier dans la RAM à partir de la
position 0x150
3) procédure d'écriture dans l'EEPROM
• mettre le bit EEPG à 0
• positionner le bit WREN pour valider l'écriture dans l'EEPROM
• placer l'adresse dans EEADR
• placer la donnée à écrire dans EEDATA
• interdire les interruptions càd mettre le bit GIE de registre INTCON
• écrire 55h dans EECON2
• écrire AAh dans EECON2
• positionner le bit WR
• autoriser les interruptions
• attendre la fin d'écriture en surveillant le bit WR ou le drapeau EEIF
• recommencer au point 3 si on a d'autre donnée à écrire
• remettre à zéro le bit WREN