Noxyben
2007
-1-
Vous trouverez aussi sur notre site :
- Modules, Cours, Exercices tlcharger gratuitement.
- Documents Techniques ddies la formation professionnelle : Gnie Electrique,
Gnie Mcanique. Gnie Informatique, Gnie Industriel, Gnie Climatique
Introduction ................................................................................................................................ 3
Intrt de la programmation en langage C ................................................................................. 4
Choix du compilateur ................................................................................................................. 5
Choix dun PIC : le 16F877 ....................................................................................................... 6
Choix du programmateur ........................................................................................................... 7
Structure du PIC 16F877............................................................................................................ 8
Le cur du PIC : le microprocesseur ..................................................................................... 9
La mmoire .......................................................................................................................... 11
La Pile et le Compteur Programme ...................................................................................... 13
Les Ports dEntres/Sorties gnraux : PORTA, PORTB, PORTC, PORTD, PORTE....... 15
Le Port Parallle Esclave (PSP : Parallel Slave Port) .......................................................... 17
Le circuit de gnration dhorloge ....................................................................................... 18
Le TIMER0 .......................................................................................................................... 19
Le TIMER1 .......................................................................................................................... 20
Le TIMER2 .......................................................................................................................... 22
Les modules CCP1 et CCP2................................................................................................. 23
Le convertisseur Analogique Digital 10bits :.................................................................... 25
LUSART ............................................................................................................................. 27
Le SSP, Synchronous Serial Port ......................................................................................... 29
La logique de RESET........................................................................................................... 31
LIn-Circuit Debugger.......................................................................................................... 33
Low-Voltage Programming et ICSP (In-Circuit Serial Programming) ............................... 34
Les Bits de Configuration .................................................................................................... 36
Les Interruptions .................................................................................................................. 36
Le mode SLEEP ................................................................................................................... 37
Brochage du PIC16F877 .......................................................................................................... 38
Conclusion................................................................................................................................ 38
-2-
Introduction
Dans un pass pas trs lointain, llectronique pour les amateurs (clairs) se
rsumait essentiellement aux circuits analogiques et ventuellement en logique
cble (portes logiques, compteurs, registres dcalage). Lusage des
microprocesseurs tait plutt rserv un public averti dingnieurs sachant les
interfacer avec diffrents circuits priphriques (eprom, ram) et programmer en
assembleur.
Au fil du temps on a vu apparatre de nouveaux circuits regroupant dans une seule
puce le microprocesseur et ses circuits priphriques : les microcontrleurs.
On en trouve maintenant partout : automobile, lave-vaisselle, rasoir, brosse dent
lectrique
Loffre en microcontrleurs sest dveloppe dautant : plus de priphriques
intgrs, capacit de calcul accrue, plus de mmoire embarque. Il y a maintenant
de nombreux fabricants de microcontrleurs, possdant chacun plusieurs gammes
allant du circuit gnraliste , vritable couteau suisse lectronique, la puce
spcialise ddie par exemple, la rgulation de vitesse dun moteur de ventilateur.
La voie royale pour tirer le maximum des performances de ces circuits est toujours la
programmation en assembleur. On accde alors au moindre bit enfoui dans
nimporte quel registre du circuit. Cela ncessite nanmoins un investissement en
temps consquent, lassembleur ntant pas un langage trs naturel . De plus,
dun constructeur lautre, voire dun circuit lautre dans la mme gamme, il existe
des diffrences qui obligent rapprendre tout ou partie du langage lorsque lon
change de microcontrleur. Cest un investissement intressant pour un
professionnel qui cherche produire un code optimis sur la puce la moins chre
possible, mais pnible pour un amateur qui ne dispose que de relativement peu de
temps pris sur ses loisirs.
Heureusement, avec la monte en puissance des microcontrleurs, on voit
apparatre actuellement des compilateurs en langage C (voire mme C++) qui
permettent de gagner un temps considrable pour le dveloppement et le dbogage
des programmes.
Pour tous ceux qui se sont retrouv largu sur le bord du chemin cause de ces
de microcontrleurs, cest mon avis une formidable opportunit de
sauter dans le train de llectronique numrique et dapprivoiser ces tranges petites
btes. Et pourquoi pas un ampli tubes pilot par microcontrleur ? Les capacits
tonnantes de ces circuits vous ouvrent un espace de crativit infini. Ce serait
vraiment dommage de se passer de leurs services
Une fois la dcision prise je vais me lancer dans les micros ! se pose la question
du comment. On trouve sur internet toutes les informations ncessaires, la difficult
serait plutt de les trier. Vous pouvez commencer par exemple par lire la
documentation de Microchip sur la gamme de PIC mid-range , cest une
excellente ide, mais a va vous prendre du temps (plus de 800 pages !)
Dans le but de vous simplifier la tche, je vais essayer dans le prsent ouvrage de
synthtiser quelque peu ces informations. Et pour viter la frustration du je saurais
utiliser un microcontrleur PIC, mais avant je dois me taper un bouquin de 1000
pages je vais tcher dutiliser une approche progressive permettant de, trs
rapidement, crer de vritables petits circuits.
-3-
En C ce serait plutt :
-
Ouvrir la fentre
Choix du compilateur
Il y a sur le march plusieurs compilateurs C. Le microcontrleur tudi ici tant un
PIC Microchip, la solution la plus vidente consiste voir ce que propose Microchip :
Si on nous propose bien des compilateurs, ceux-ci sont payants et ne couvrent que
le haut de la gamme des PIC, ce qui est un peu luxueux pour un amateur dsirant
sinitier lutilisation de ces petites btes.
Dautres diteurs proposent galement des compilateurs dont certains sont trs
complets, livrs avec des bibliothques simplifiant lutilisation des priphriques du
PIC. Malheureusement, ici encore cest assez cher, jusqu plusieurs centaines
deuros pour un environnement de dveloppement intgr couvrant lessentiel de la
gamme des PIC.
Heureusement il existe des alternatives moins onreuses. Par exemple, en
cherchant bien sur internet on peut dnicher des compilateurs freeware en ligne de
commande.
Mon choix sest port sur le compilateur BoostC de la socit SourceBoost, pour les
raisons suivantes : Il existe une version gratuite avec quelques limitations mineures
(taille du code gnr) permettant de se faire la main et de crer des applications
personnelles, les versions payantes ( des tarifs trs raisonnables) permettent de
crer des applications commerciales et davoir accs au code source des
bibliothques. BoostC est livr avec un environnement de dveloppement intgr
facilitant le dveloppement dapplications. Le langage est du C ANSI , avec
toutefois quelques extensions destines tirer pleinement parti de toutes les
spcificits des microcontrleurs PIC. Et surtout, BoostC reste assez proche du
matriel : on peut trs facilement accder tous les bits dun registre quelquonque.
On peut faire lessentiel de ce quil est possible de faire en assembleur, avec les
contraintes en moins. Ce qui sous-entend nanmoins de sintresser dassez prs
la structure du PIC et de des diffrents sous-ensembles. A noter que SourceBoost
propose galement un compilateur C++ pour PIC, ainsi quun compilateur Basic.
http://www.sourceboost.com
-5-
-6-
Choix du programmateur
Une fois le programme cr, il faudra le transfrer dans la mmoire programme du
PIC. Pour cela, il existe plusieurs solutions :
Vous pouvez construire votre propre programmateur. De nombreuses variantes
existent, il suffit de faire une recherche sur le net pour sen rendre compte. Ces
programmateurs se raccordent sur un port srie RS232 ou parallle. A vrai dire la
majorit des circuits ont un air de famille. Pas sr nanmoins que tous fonctionnent.
Si vous vous engagez dans cette voie, un des design les plus rigoureux est
certainement celui propos par Microchip dans une de ses Application Note (
voir sur le site de Microchip).
Vous pouvez aussi acheter un programmateur tout fait, en tat de marche. Il en
existe pour port srie, parallle et, USB ! Sachant que les ports srie RS232 et
parallle tendent disparatre au profit de lUSB, cette dernire option, bien que
souvent un peu plus onreuse semble tre un bon choix. Il existe en outre des outils
permettant la fois de programmer le microcontrleur, mais aussi de le dboguer en
temps rel et tout a avec le microcontrleur en place dans son circuit dapplication
(voir les outils proposs par Microchip ce sujet).
Enfin, il y a la solution du programmateur en kit. Aprs mtre lanc dans un premier
temps dans la ralisation dun programmateur home made (dcrit dans un livre
fort onreux) qui na jamais daign fonctionner, je me suis tourn vers cette dernire
solution : Un programmateur en kit Velleman K8076 pour une quarantaine deuros
(c'est--dire moins cher que le prix des composants de celui que jai vainement tent
de raliser moi-mme), quip dun support ZIF (Zro Insertion Force). Il permet en
outre la programmation in-circuit , et est livr avec un logiciel de transfert
compatible avec lessentiel de la gamme des PIC. Des mises jour tant disponibles
sur le site de Velleman pour les circuits les plus rcents. Il faut procder au montage
soi-mme, mais a marche du premier coup ! (du moins si vous tes rigoureux au
moment du montage). Le seul inconvnient : il sagit ici dun programmateur
raccorder sur port RS232, donc impossible raccorder sur un pc portable rcent. Un
jour ou lautre il faudra bien passer par lUSB
http://www.velleman.be
-7-
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Timing
Generation
OSC1 / CLKIN
OSC2 / CLKOUT
Oscillator
Start-up Timer
Power-on
Reset
MUX
ALU
8
Watchdog
Timer
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
-8-
13
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
OSC1 / CLKIN
OSC2 / CLKOUT
Power-on
Reset
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
-9-
On nentrera pas ici dans les dtails du fonctionnement dun microprocesseur ; cest
trs intressant connatre, indispensable mme si on programme en assembleur.
Mais en ce qui nous concerne, on veut programmer en C, et cest donc le
compilateur qui se chargera de traduire notre code source en instructions de basniveau pour le microprocesseur contenu dans le PIC. Cest l le principal avantage
de la programmation en C : on prend du recul par rapport au fonctionnement intime
du systme. On se concentre davantage sur ce que fait le programme que sur
comment fonctionne le programme .
On va tout de mme jeter un petit coup dil sur le schma ci-dessus, histoire de
comprendre quelques particularits du PIC, droutantes au premier abord. On
saperoit que les bus autour de lALU ont un format de 8 bits : le PIC 16F877
travaille sur des donnes de 8 bits, cest donc bien un microcontrleur 8 bits !
(logique).
Pourquoi donc ce cas le Program Bus est-il, lui, large de 14 bits ? Cest simple,
certaines instructions peuvent tre codes sur plus de 8 bits. Si ce bus ntait large
que de 8 bits, il faudrait plus dun cycle dhorloge pour transmettre ces instructions,
alors quavec un bus plus large, a passe en une fois. De plus, la mmoire
programme, indpendante du bus de donnes, est elle-mme adresse avec un bus
large : le Program Counter , qui pointe sur linstruction en cours, une largeur de
13 bits. Et avec 13 bits on peut coder environ 8000 adresses. Autrement dit, on
8000 cases de mmoire programme pouvant contenir chacune 1 instruction
complte. Cette architecture avec bus de donnes et de programme spars
(architecture Harvard ) permet donc doptimiser le fonctionnement du PIC. La
plupart du temps, votre PIC excute une instruction et charge la suivante
simultanment en un seul cycle dhorloge. En comparaison, un microcontrleur 8 bits
construit selon larchitecture concurrente Von Neumann (mmoire programme et
donnes relis au microprocesseur par un unique bus 8 bits) devra faire plusieurs
cycles pour chercher les instructions en mmoire (en plusieurs fois si cest une
instruction longues) et les excuter ensuite. En consquence, frquence dhorloge
gales, un microprocesseur Harvard sera plus rapide quun Von Neumann .
- 10 -
La mmoire
Sur le PIC, il ny a pas une mais trois mmoires :
13
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
OSC1 / CLKIN
OSC2 / CLKOUT
Power-on
Reset
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
La Mmoire Programme, de type FLASH sur le 16F877. Capacit : 8K. Cest dans
celle-ci quest stock le programme du PIC. Aprs compilation de votre code, le
compilateur gnre un fichier .hex , une suite de codes hexadcimaux. Celui-ci
est transfr ensuite dans la mmoire programme du PIC laide du programmateur.
Cette mmoire nest pas relie au bus de donnes (DATA Bus), sa vocation est de
stocker le programme du PIC, mais PAS les variables de votre programme. Le gros
avantage de la mmoire FLASH cest que vous pouvez la rcrire, donc implanter un
nouveau programme dans le PIC. Les PIC existent galement avec dautres versions
de mmoire programme (non-FLASH), certaines ne pouvant tre programme
quune seule fois.
- 11 -
La Mmoire RAM, qui fait partie de la zone dadressage des donnes. Elle
comprend tous les registres spciaux permettant de contrler le cur du PIC ainsi
que ses priphriques. Elle contient galement des cases mmoires usage
gnrique dans lesquelles pourront tre stockes les variables de nos futurs
programmes.
La Mmoire EEPROM. LEEPROM est plutt une mmoire de stockage de donnes
long terme, alors que la RAM est utilise pour les variables du programme. Sur le
PIC 16F877, on a 256 octets dEEPROM disponible. Les mmoires de type
EEPROM sont limites en nombre de cycles deffacement / criture. Ce nombre de
cycle est tout de mme de lordre du million pour le PIC, mais si on lutilisait pour
stocker des variables modifies plusieurs milliers de fois par secondes, cette limite
pourrais tre atteinte plus vite quon ne le crot. Par contre, pour stocker toute les
heures une mesure de temprature, cest tout bon !
- 12 -
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
OSC1 / CLKIN
OSC2 / CLKOUT
Power-on
Reset
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
- 13 -
- 14 -
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
OSC1 / CLKIN
OSC2 / CLKOUT
Power-on
Reset
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
- 15 -
Le PIC 16F877 est gnreusement dot de 5 ports, ce qui est plutt confortable. Un
examen plus attentif du schma ci-dessus nous montre cependant que les lignes
dentres/sorties (les pattes du composant) correspondantes sont galement
utilises par dautres modules du PIC. Ainsi, les pattes du PORTA servent galement
au convertisseur Analogique/Numrique, les pattes du PORTD au Port Parallle
Esclave, etc. Il faudra faire des choix au moment de la conception du schma
lectronique ! On voit galement que les ports B, C et D ont 8 lignes dentre/sortie,
alors que le port A nen a que 6 et le port E que 3. Ils sont tous connects au bus de
donne (DATA BUS), on pourra donc librement les adresser pour y lire ou crire des
donnes, et donc allumer des LED, commander des moteurs pas pas, des
afficheurs LCD, lire les donnes envoyes par un clavier ou un bouton poussoir
On peut configurer les entres/sorties de chaque port en entre ou en sortie, grce
un registre spcial ddi chaque port.
De plus, un des ports (le port B) possde des rsistances de pull-up internes qui
peuvent tres valides ou non par logiciel.
- 16 -
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
OSC1 / CLKIN
OSC2 / CLKOUT
Power-on
Reset
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
Le Port Parallle Esclave est un port 8 bits permettant dinterfacer le PIC avec, par
exemple, un autre microprocesseur. Les donnes transitent via les lignes PSP0
PSP7, qui physiquement utilisent les mmes broches que le PORTD. Le flux de
donnes est contrl par les lignes RD, WR et CS qui correspondent aux broches du
PORTE.
Cest le microprocesseur externe qui est le chef dorchestre : il valide notre PIC par la
ligne CS (Chip Select), et indique au PIC sil lit ou crit grce aux lignes RD (Read) et
WR (Write). Do lappellation de port parallle ESCLAVE. Esclave, puisque cest le
microprocesseur externe qui donne les ordres, notre PIC ne fait quexcuter.
- 17 -
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
OSC1 / CLKIN
OSC2 / CLKOUT
Power-on
Reset
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
Pour faire battre le cur de notre PIC, on a besoin dun circuit de gnration
dhorloge. Avec les PIC Mid Range , plusieurs options possibles : circuit RC
(rsistance + condensateur), ou circuit rsonateur cramique, ou oscillateur
quartz... Le mode de fonctionnement est dtermin au moment de la programmation
du PIC par des bits de configuration qui sont en fait des emplacements de
mmoire non-volatile. Pour gnrer un cycle dinstruction , il faut 4 cycles
dhorloge. Autrement dit, si votre quartz bat 20 MHz, les instructions du programme
sexcutent une cadence de 5 MHz.
- 18 -
Le TIMER0
13
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Timing
Generation
OSC1 / CLKIN
OSC2 / CLKOUT
Oscillator
Start-up Timer
Power-on
Reset
Watchdog
Timer
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
Dans le pass, le Timer0 sappelait RTCC. Cest un compteur 8 bits (0 255) simple,
qui compte des impulsions soit internes, soit dune source externe. On peut par
ailleurs lui appliquer une pr-division programmable entre 1 et 256.
On peut librement lire ou crire dans le registre de comptage associ. On peut donc
le pr charger avec une valeur, partir de laquelle il comptera jusqu atteindre 255.
Une fois le registre de comptage plein, il peut gnrer une interruption.
tant donn quune fois configur il fonctionne quasi-indpendamment du
microprocesseur, on pourra sen servir comme base de temps.
- 19 -
Le TIMER1
13
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Timing
Generation
OSC1 / CLKIN
OSC2 / CLKOUT
Oscillator
Start-up Timer
Power-on
Reset
Watchdog
Timer
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
- 20 -
Le Timer1 fonctionne sur le mme principe que le Timer0, mais avec un registre de
comptage plus gros : 16 bits au lieu de 8, ce qui tend notablement ces capacits de
comptage. De plus, il possde un mode de fonctionnement particulier : on peut
lutiliser en association avec un des modules CCP (modules de capture et de
comparaison, voir plus loin). Voyons rapidement le mode capture : lorsquun
vnement survient sur lentre du module CCP, la valeur du Timer1 est lue. Comme
on connat la frquence de comptage, on peut en quelque sorte chronomtrer la
survenue dun vnement. Exemple : si lentre du module CCP est relie un
capteur qui dlivre une impulsion chaque tour de larbre dun moteur, la valeur
contenue dans le registre du Timer1 au moment de limpulsion est le reflet de la
vitesse de rotation.
Voyons maintenant le mode comparaison : Le Timer1 compte en continu, et une
interruption est gnre chaque fois que la valeur du compteur est gale celle
quon aura pr charge dans le registre de comparaison. On peut sen servir pour,
par exemple, gnrer un signal carr.
- 21 -
Le TIMER2
13
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Timing
Generation
OSC1 / CLKIN
OSC2 / CLKOUT
Oscillator
Start-up Timer
Power-on
Reset
Watchdog
Timer
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
- 22 -
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
OSC1 / CLKIN
OSC2 / CLKOUT
Power-on
Reset
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
- 23 -
On en a parl au moment de voir les Timer1 et Timer2 ; on a deux modules CCP sur
le PIC. CCP pour Capture, Compare, PWM .
En association avec les deux timers, ils vont nous permettre de gnrer des signaux
modulation de largeur dimpulsion (PWM) pour, par exemple, faire varier la vitesse
dun moteur courant continu, rguler le courant (et donc la luminosit) dans une
ampoule
Ils vont galement nous permettre de comparer loccurrence dun signal en entre
avec la valeur du compteur Timer1, ralisant ainsi un chronomtrage de lvnement
en question (par exemple : indication de la frquence de rotation dun moteur).
Ils vont encore nous permettre de gnrer des signaux carrs, et cela de manire
quasi-indpendante du reste du microcontrleur qui pourra continuer vaquer ses
occupations.
- 24 -
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
OSC1 / CLKIN
OSC2 / CLKOUT
Power-on
Reset
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
- 25 -
Le convertisseur A/D convertit le signal analogique prsent sur une de ses 8 entres
en son quivalent numrique, cod sur 10 bits. Les pattes AN2 et AN3 peuvent tre
utilises comme rfrences de tension ou comme entres analogiques standard, les
rfrences de tension tant dans ce dernier cas prises sur les tensions
dalimentations du PIC : VDD et VSS. (VDD pour le + et VSS pour le -).
On peut donc numriser jusqu 8 signaux analogiques. Pas tous en mme temps,
bien sr, tant donn quil ny a quun seul module de conversion pour 8 signaux
dentre multiplexs. Mais si vos signaux nvoluent pas trop vite (frquence basse),
vous pouvez numriser le signal sur la patte AN0, puis celui sur AN1
Les paramtres important dont il faudra tenir compte sont :
La rsolution du convertisseur. Ici 10 bits, donc meilleur quun convertisseur 8
bits, mais moins prcis quun 12 bits
Le temps de conversion.
La rapidit dvolution des signaux prsents sur les entres (leur frquence
pour des signaux priodiques).
Le nombre de signaux numriser.
En effet, pour un signal priodique, la frquence dchantillonnage doit tre au moins
deux fois suprieure la frquence du signal ; mais a tout le monde le sait dj,
non ?
- 26 -
LUSART
13
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
OSC1 / CLKIN
OSC2 / CLKOUT
Power-on
Reset
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
- 27 -
- 28 -
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
OSC1 / CLKIN
OSC2 / CLKOUT
Power-on
Reset
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
- 29 -
- 30 -
La logique de RESET
13
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
OSC1 / CLKIN
OSC2 / CLKOUT
Power-on
Reset
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
- 31 -
- 32 -
LIn-Circuit Debugger
13
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
OSC1 / CLKIN
OSC2 / CLKOUT
Power-on
Reset
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
- 33 -
DATA Bus
Program Counter
PORTA
FLASH
Program
Memory
Program
Bus
RAM
File
Registers
8 Level Stack
( 13-bit )
14
Direct Addr
AN0
AN1
AN2 / VrefAN3 / Vref+
T0CKl
AN4 / SS
RB0 /
RB1
RB2
RB3 /
RB4
RB5
RB6 /
RB7 /
INT
RC0 /
RC1 /
RC2 /
RC3 /
RC4 /
RC5 /
RC6 /
RC7 /
T1OSO / T1CKL
T1OSI / CCP2
CCP1
SCK / SCL
SDI / SDA
SD0
TX / CK
RX / DT
RD0 /
RD1 /
RD2 /
RD3 /
RD4 /
RD5 /
RD6 /
RD7 /
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
PORTB
Addr MUX
Instruction reg
RA0 /
RA1 /
RA2 /
RA3 /
RA4 /
RA5 /
Indirect
Addr
FSR reg
STATUS reg
PGM
PGC
PGD
8
PORTC
3
Power-up
Timer
Instruction
Decode &
Control
Oscillator
Start-up Timer
Timing
Generation
Watchdog
Timer
OSC1 / CLKIN
OSC2 / CLKOUT
Power-on
Reset
MUX
ALU
8
W reg
PORTD
Brown-out
Reset
In-Circuit
Debugger
Low-Voltage
Programming
PORTE
MCLR
VDD, Vss
RE0 / AN5 / RD
RE1 / AN6 / WR
RE2 / AN7 / CS
Timer0
Timer1
Timer2
10-bit A/D
Data EEPROM
CCP1,2
Synchronous
Serial Port
USART
- 34 -
- 35 -
Les Interruptions
Un certain nombre dvnements sont susceptible de gnrer des interruptions : fin
de conversion de signal analogique, criture en mmoire EEPROM termine,
dbordement de Timer, USART, SSP, changement dtat dune entre de port.
Si votre programme comprend une routine de gestion de cette interruption, le
droulement normal sinterrompt et la routine de gestion de linterruption est
excute.
Le gros avantage de ce mcanisme, cest que le microcontrleur peut vaquer ses
occupations sans tre oblig de scruter en permanence si telle ou telle action a eu
lieu. Par exemple, si un clavier est raccord au PIC, pas besoin de surveiller en
permanence si une touche a t active. Si cest le cas, le changement dtat sur le
port gnrera une interruption. Le PIC sera ainsi mis au courant quun changement a
eu lieu et excutera les actions adquates.
Cest un peu comme lalarme sonore de votre micro-onde : celui-ci vous signale par
un BiiiP que le temps de cuisson est coul, pas besoin de rester les yeux rivs sur
la vitre avec un chronomtre en main.
- 36 -
Le mode SLEEP
Le mode Sleep est un mode de fonctionnement particulier du PIC dans lequel celui-ci
rduit sa consommation lectrique au minimum. Il est presque entirement
dsactiv, son oscillateur est teint. Le PIC est en mode veille !
Pour sortir de cette torpeur, il faut un des vnements suivant :
- Reset du circuit, ou
- Rveil par le Watch-Dog Timer (ci celui-ci est activ, il continue de
fonctionner en mode SLEEP)
- Interruption gnre par un module priphrique (Timer, convertisseur
A/D, changement dtat de port, SSP.)
Ce mode peut tre particulirement intressant pour une application fonctionnant sur
pile ou batterie et qui ne requiert le fonctionnement du microprocesseur qu la
survenue dvnements particuliers. On prolonge ainsi considrablement
lautonomie.
- 37 -
Brochage du PIC16F877
40
39
38
37
36
35
34
8
9
10
11
12
13
PIC 16F877
MCLR/Vpp
RA0/AN0
RA1/AN1
RA2/AN2/VRefRA3/AN3/VRef+
RA4/T0CKI
RA5/AN4/SS
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
VDD
VSS
OSC1/CLKIN
OSC2/CLKOUT
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RD0/PSP0
RD1/PSP1
33
32
31
30
29
28
14
27
15
26
16
25
17
24
18
23
19
22
20
21
RB7/PGD
RB6/PGC
RB5
RB4
RB3/PGM
RB2
RB1
RB0/INT
VDD
VSS
RD7/PSP7
RD6/PSP6
RD5/PSP5
RD4/PSP4
RC7/RX/DT
RC6/TX/CK
RC5/SDO
RC4/SDI/SDA
RD3/PSP3
RD2/PSP2
Conclusion
Ainsi sachve notre survol du PIC 16F877. Vous savez maintenant ce qui se cache
dans la bote, et avec quels outils nous allons le programmer. Notre prochain objectif
sera de le faire fonctionner. On pourra passer ensuite ltude un peu plus dtaille
des diffrents priphriques.
- 38 -