Microcontroleur PIC16F84
Microcontroleur PIC16F84
Microcontroleur PIC16F84
microcontrleur PIC16F84
BADR DIDOUH
FSTF
PLAN
I. FAMILLE PIC DE MICROCHIP
II. ORGANISTION DU 16F84
Description Gnrale
Structure interne et externe
Organisation de la mmoire
III. LE JEU DINSTRUCTIONS
IV. LES MODES DADRESSAGE
V. LES INTERRUPTIONS SUR LES PICS
Mcanisme dinterruption sur les PICs
Les sources dinterruptions sur la 16F84
VI. FORME GENERALE DUN PROGRAMME
Configuration du PIC
Structure dun programme avec interruption
VII. EXEMPLES DAPPLICATIONS
frquence dhorloge
maximale (4 Mhz)
Identification du PIC
Description Gnrale
Le PIC16F84 est un microcontrleur 8 bits qui offre un
trs bon rapport qualit/prix.
Ses principales caractristiques:
seulement 35 mots dinstructions
vitesse jusqu' 10Mhz
4 sources d'interruption
1000 cycles effacement/criture possible de la mmoire
programme flash
1K mots mmoire programme Flash
68 octets de donnes RAM
64 octets de donnes EEPROM
13 Entre/Sortie
1 Timer/Compteur
4 Sources doscillateur slectionnable
Mode sleep (pour une faible consommation)
Programmation par ISP (In Serial Programming)
Structure externe
Le PIC16F84 est log dans un botier 18 broches DIL ou SOIC
( version CMS).
PIN 1: 3me bit du PORTA
PIN 2: 4me bit du PORTA
PIN 4: RESET
PIN 5: GND
PIN 6: 1er bit du PORTB
PIN 7: 2me bit du PORTB
PIN 8: 3me bit du PORTB
PIN 9: 4me bit du PORTB
PIN15: OSCILLATEUR 2
PIN 14: VCC
PIN 13: 8me bit du PORTB
PIN 12: 7me bit du PORTB
PIN 11: 6me bit du PORTB
PIN 10: 5me bit du PORTB
Structure interne
Organisation de la mmoire
La mmoire du PIC16F84 est divise en deux parties distinctes:
*la mmoire programme;
*la mmoire de donne.
Le premier contient les instructions du programme ainsi que les vecteurs
RESET et INTERRUPTION.
Dans la mmoire de donne se trouve tout les registres ncessaires pour
la configuration et l'utilisation des priphriques internes ainsi que
68 octets de RAM utilisateurs.
10
la mmoire programme
La mmoire programme est constitue de 1K mots de 14 bits.
RESET le PIC16F84 commence l'adresse 0000H (Vecteur RESET).
Interruption le microcontrleur va l'adresse 0004H (Vecteur
d'INTERRUPTION).
On trouve donc en mmoire programme
un mot de 14 bits:
Exemple: movlw 10
110000 00001010
11
la mmoire RAM
La mmoire RAM est organise en 2 banques pour
la 16F84.La RAM est subdivise de plus en deux parties.
Dans chacune des banques nous avons des cases
mmoires spciales appeles Registres spciaux
et 68 octets de cases mmoires libre pour
notre utilisation .
- En page 0, des registres fondamentaux
- En page 1, des registres associs
- Les adresses 00 et 07 ne contiennent aucune
mmoire .
01 TMRO: contenu du timer 8 bits, il peut tre
Incrment par lhorloge (fosc/4) ou RA4.
02 PCL: 8 bits du poids faible du PC, les 5 bits
Du poids fort sont dans PCLATH .
12
Time out:dbordement
du timer DWT
Power Down:
caractrise lactivit du
chien du garde
13
Masques:
GIE : (Global Interrupt Enable) : masque global dinter.
EEIE : (EEProm Interrupt Enable)
T0IE : (Timer 0 Interrupt Enable)
INTE: ( Interrupt Enable) Entre dinter sur broche RB0/INT
RBIE: (RB Interrupt Enable) Entres dinter sur broches RB4-RB7.
Drapeaux:
T0IF : (Timer 0 Interrupt Flag) dbordement du timer
INTF: ( Interrupt Flag) interruption provoque par la broche RB0/INT
RBIF: ( RB Interrupt Flag) interruption provoque par les broches RB4-RB7.
RBPU/: (RB Pull Up) Rsistances de tirage Vdd des entres du port B.
INTEDG: (Interrupt Edge) Front actif sur RB0 ( 1 pour front montant).
RTS: (Real Timer Source) Signal alimentant timer0 : 0 pour horloge interne, 1 pour RA4/T0CLK
RTE (Real Timer Edge) front actif du signal timer ( 0 pour front montant).
PSA (Prescaler assignment) 0 pour Timer 0 et 1 pour chien de garde WDT.
PS2..0 (Prescaler 210 ) Valeur du Diviseur de frquence pour les timers.
14
85 TRISA: Direction des donnes pour le port A : 0 pour sortir et 1 pour entrer
86 TRISB: Direction des donnes pour le port B : 0 pour sortir et 1 pour entrer
88 EECON1: Contrle le comportement de lEEPROM de donnes.
15
;dfinition de ladresse
movlw Donnee
movwf EEDATA
;dfinition de la donne
movlw Ox55
movwf EECON2
movlw OxAA
movwf EECON2
bsf EECON1,WR
;)
;) scurit
;)
;)
; criture
16
Descriptions
ADDWF f,d
Additionne W et f
ANDWF f,d
AND de W avec f
CLRF f
Efface f
CLRW
Efface W
COMF f,d
DECF f,d
DECFSZ f,d
INCF f,d
Effectue le Complment de f
Dcrmente f
Dcrmente f, passe si 0
Incrmente f
Incrmente f, passe si 0
INCFSZ f,d
OR Inclusif de W avec f
IORWF f,d
Dplace f
MOVF f,d
Dplace W dans f
MOVWF f
NOP
RLF f,d
RRF f,d
SUBWF f,d
17
Descriptions
BCF f,b
Met 0 le bit b de f
BSF f,b
Met 1 le bit b de f
BTFSC f,b
BTFSS f,b
Descriptions
ANDLW k
CALL k
CLRWDT k
GOTO k
Branchement inconditionnel
IORLW k
MOVLW k
OPTION k
RETLW k
SLEEP
TRIS f
XORLW k
18
19
Exemple:
movlw
movwf
movlw
movwf
movf
0x50
mavariable
mavariable
FSR
INDF,w
20
22
equ
Note
equ
org
H'00'
; Obligatoire
23
Configuration du PIC
__config B'11111111110001'
~ Bit0 et bit1: fixe le type d'oscillateur:
11 => horloge avec un circuit RC
01 => horloge quartz (4Mhz en gnral)
~ Bit2: Le chien de garde est activ lorsqu'il est "1"
equ
org H'00'
goto dbut
org H'04'
; adresse dinterruption
{ programme dinterruption }
retfie
;retour lendroit ou le programme sest interrompu
dbut
end
25
26
garde.
list p=16f84,f=inhx8m
__config
B'11111111110111'
#include "p16f84.inc"
bsf
movlw
B'00001101'
movwf
OPTION_REG
movlw
B'11111110'
movwf
TRISB
bcf
Boucle
STATUS,RP0
STATUS,RP0
sleep
comf
PORTB,1
goto
Boucle
end
27
equ
H'0C
temp2
equ
H'0D'
bsf
STATUS,RP0
movlw B'11111110'
movwf TRISB
decfsz temp2,1
goto
Boucle
comf
PORTB,1
goto
Debut
end
Debut
bcf
STATUS,RP0
clrf
temp1
movlw D'244'
movwf temp2
Boucle
nop
decfsz temp1,1
28
movwf temps
__config B'11111111110001'
retfie
#include "p16f84a.inc"
temps
Debut
movlw B'10000111'
equ H'0C'
movwf OPTION_REG
org H'00'
bcf TRISB,0
goto Debut
bcf STATUS,RP0
org H'04'
movlw D'008'
movlw D'012'
movwf temps
movwf TMR0
movlw B'10100000'
bcf INTCON,T0IF
decfsz temps,1
retfie
comf PORTB,1
bsf STATUS,RP0
movwf INTCON
Boucle
goto Boucle
end
29
30
list
p=16f84,f=inhx8m
__config
B'11111111110001'
include "p16f84.inc"
Enregistre
btfss PORTB,6
goto Enregistre
comf PORTB,0
bsf STATUS,RP0
movwf EEDATA
movlw B'11100000'
movwf PORTA
movwf TRISA
call Ecriture
bcf OPTION_REG,7
incf EEADR,1
bcf STATUS,RP0
return
clrf PORTA
Lit
clrf EEADR
btfss PORTB,7
Boucle
goto Lit
btfss PORTB,6
call Lecture
call Enregistre
movf EEDATA,0
btfss PORTB,7
movwf PORTA
call Lit
incf EEADR,1
31
;criture EEPROM
Ecriture
; Lecture EEPROM
Lecture
bsf STATUS,RP0
bsf STATUS,RP0
clrf EECON1
bsf EECON1,RD
bsf EECON1,WREN
bcf STATUS,RP0
movlw H'55'
return
movwf EECON2
movlw H'AA'
movwf EECON2
bsf EECON1,WR
EcritureFin
org H'2100'
bcf STATUS,RP0
de
B'00000001',B'00000010',B'00000100',B'0
0001000' de
B'00010000',B'00010000',B'00001000',B'0
0000100' de
B'00000010',B'00000001',B'00000000'
Return
end
btfsc EECON1,WR
goto EcritureFin
32
FIN
33