Vous êtes sur la page 1sur 44

MICROCONTROLEURS PIC

PROGRAMMATION EN C

V. Chollet - cours-pic-13b - 09/12/2012 Page 1 sur 44


Chapitre 1 GENERALITES

1 DEFINITION

Un microcontrleur est un microprocesseur RISC (Reduced Instruction Set Computer) :

Le nombre d'instructions est rduit : 35 instructions pour le 16F62X

Il dispose :
- de ports d'entre/sortie pour communiquer avec l'environnement extrieur
- de registres internes
- de mmoire
- d'une horloge interne ou externe.

Fabriqus par la socit Microchip

Autres C : Motorola (68HC11 par exemple)


ARMLtd microcontroleurs ARM (ARM7)
STMicroelectronics (STM32)
Intel (8085)
Atmel (AVR, AT91)
Etc

V. Chollet - cours-pic-13b - 09/12/2012 Page 2 sur 44


2 INTERET

Faible cot
Composant programmable et effaable.
Utilis de faon autonome : plus besoin d'ordinateur une fois le composant programm.

Simplification de llectronique : gain de temps et de cot.

Les principaux domaines d'utilisation sont la robotique, la domotique, l'industrie.

3 LES OUTILS POUR REALISER UNE APPLICATION

Pour dvelopper une application fonctionnant laide dun microcontrleur, il faut disposer de :

Editeur : Compilateur : Programmateur :


Ecriture du programme Fabrique le programme Transfert le programme
en respectant la syntaxe (Soft) du PC au PIC
dun langage (soft+hard)

Le compilateur : Logiciel traduisant un programme crit dans un langage donn (C, basic, assembleur) en
langage machine.

Le programmateur : Transfert le programme compil (langage machine) dans la mmoire du


microcontrleur.
Il est constitu dun circuit branch sur le port srie du PC, sur lequel on implante le PIC, et dun logiciel
permettant dassurer le transfert. Il existe diffrents logiciels, nous utiliserons Icprog.

Les microcontroleurs PIC utilisent la plate-forme logiciel de dveloppement MPLAB IDE.


(gratuite tlchargeable sur www.microchip.com)

V. Chollet - cours-pic-13b - 09/12/2012 Page 3 sur 44


IDE : Integrated Development Environment => Environnement de Dveloppement Intgr.

Environnement comportant : Un diteur de texte, un compilateur, un dbogueur.

Editeur : Compilateur : Simulateur


criture du programme transforme lassembleur dbuggeur :
en assembleur en langage machine Vrification, mise au
point, simulation

MPLAB IDE

4 - LANGAGE DE PROGRAMMATION UTILISE

Dans l'environnement MPLAB, Le programme doit tre crit en assembleur, langage proche de la machine et
donc ncessitant un long apprentissage.

Nous avons donc prfr un langage de programmation volu : basic ou c.


Notre choix se porte sur le langage c tudi par ailleurs en cours d'informatique d'instrumentation.

Le code source crit en langage c doit donc tre compil en assembleur l'aide d'un compilateur c.

On utilisera le compilateur CC5X dans sa version gratuite tlchargeable sur www.bknd.com. Cette version
gratuite permet d'crire environ 1ko de programme.

On peut alors intgrer CC5X dans l'environnement MPLAB. Ainsi CC5X devient un outil de MPLAB dans
lequel l'criture, la simulation et le debugging du programme en c devient alors possible.

V. Chollet - cours-pic-13b - 09/12/2012 Page 4 sur 44


5 PRESENTATION

5.1 BOITIER
Botier Plastique DIL ( Dual in Line) 18 pattes

Le botier intgre un C :

- Un processeur
- Des priphriques

Technologie CMOS

Cadenc par une horloge :

- 4 MHz interne
- 4 20 MHz externe ( Quartz ou Circuit RC)

Alimentation continue : 3,5 5,5 V


5.2 - BROCHAGE

Certaines pattes ont plusieurs fonctions :


On dit que les fonctions sont multiplexes

V. Chollet - cours-pic-13b - 09/12/2012 Page 5 sur 44


5.3 REGISTRE

N. B : La fonction que lon choisit dutiliser pour une patte est dfinie par programmation en donnant une valeur
prcise un registre spcifiquement prvu cet usage.
Patte multi fonction Lire la doc
en anglais !

Registre (8bits) :
Choix de la fonction

Un registre est un emplacement de mmoire interne au P

Exemple : Le Registre TRISA permet de dfinir si les diffrentes pattes du port A fonctionnent en entre ou en
sortie.

5.4 - MEMOIRE

Lensemble de la mmoire est compose de :

Mmoire programme (type FLASH) : 2048 mots

Mmoire FLASH : Mmoire de type EEPROM => Electrically Erasable Programmable Read Only Memory

V. Chollet - cours-pic-13b - 09/12/2012 Page 6 sur 44


Cest une EEPROM rapide
Effaable par secteurs entiers
Utilise aussi pour les BIOS des cartes mres, le
stockage des adresses mac (media access control),
les cartes SD, USB, Compact flash

EPROM effaable par uv

EEPROM : Effaable lectriquement in situ

Mmoire RAM de donnes : 224 octets

Mmoire EEPROM de donnes : 128 octets

5.5 - PERIFERIQUES

- 3 modules timers

- 2 comparateurs

- 1 priphrique Capture/Compare/PWM

- 1 USART (Universal Synchronous & Asynchronous Receiver Transmetter)

- 1 Tension de rfrence interne

V. Chollet - cours-pic-13b - 09/12/2012 Page 7 sur 44


5.6 STRUCTURE INTERNE (Pour Information)

V. Chollet - cours-pic-13b - 09/12/2012 Page 8 sur 44


Chapitre 2 PORTS DENTREES/SORTIES : Utilisation en Entre.

1 DESCRIPTION

Ce microcontrleur dispose de deux ports bidirectionnels dE/S : PORTA et PORTB de 8 bits

Ces ports peuvent servir dE/S standard ou dE/S de priphriques.

En effet, certaines pattes de ces ports sont multiplexes avec dautres fonctions de priphriques internes
(comparateur et rfrence de tension par exemple).

Chaque borne du port a plusieurs fonctions possibles.

Les registres de configuration associs permettent de dfinir les fonctions souhaites.

Quand le priphrique est activ, la borne ne peut plus tre utilise en E/S.

2 PORT A

2.1 FONCTION MULTIPLEXES

Le tableau ci-dessous dcrit les diffrentes fonctions multiplexes sur le port A.

V. Chollet - cours-pic-13b - 09/12/2012 Page 9 sur 44


Certaines de ces fonctions seront examines dans les paragraphes suivants.

V. Chollet - cours-pic-13b - 09/12/2012 Page 10 sur 44


2.2 - UTILISATION EN ENTREES SORTIES NUMERIQUES

a) Registre CMCON

Les pattes du port A tant multiplexes avec les entres du comparateur, il convient de dfinir leur rle grce au
registre CMCON (Comparator Control Register) registre de contrle du comparateur.

On doit avoir : CMCON = 0b00000111 = 0x07 = 7 pour forcer toutes les entres en entres numriques.

b) Registre TRISA

Ce registre permet de dfinir si la patte considre fonctionne en entre ou en sortie.

Un 1 dans un bit du registre TRISA met la sortie correspondante en haute impdance,


elle peut ainsi servir dentre.

Un 0 dans un bit de ce registre transfert le contenu de la sortie de la bascule D sur la


sortie correspondante.

Comparateur selon ltat de CMCON


TRISAn = 1 => RAn en entre pour RA0 RA3
Numrique

TRISAn = 0 => RAn en sortie Remarque : TRISA6 et TRISA7 sont forcs par la configuration de loscillateur.
Dans ce cas la donne lue est 0 et ces deux bits sont alors ignors.

Remarque : Toute opration dcriture sur une des sorties est prcde dune
lecture de la patte correspondante.

V. Chollet - cours-pic-13b - 09/12/2012 Page 11 sur 44


3 PORT B

3.1 FONCTION MULTIPLEXES

Le tableau ci-
contre dcrit les
diffrentes
fonctions
multiplexes sur le
port B.

Certaines de ces
fonctions seront
examines dans
les paragraphes
suivants.

V. Chollet - cours-pic-13b - 09/12/2012 Page 12 sur 44


3.2 - UTILISATION EN ENTREES SORTIES NUMERIQUES

a) Multiplexage sur le port B

Le port B est multiplex avec :

- interruption externe
- USART
- CCP module
- TMR1 clock in/out

b) Registre TRISB

Ce registre permet de dfinir si la patte considre fonctionne en entre ou en sortie.

Un 1 dans un bit du registre TRISB met la sortie correspondante en haute


impdance, elle peut ainsi servir dentre.

Un 0 dans un bit de ce registre transfert le contenu de la sortie de la bascule D sur


la sortie correspondante.

TRISBn = 1 => RBn en entre

Remarque : Toute opration dcriture sur une des sorties


TRISBn = 0 => RBn en sortie est prcde dune lecture de la patte correspondante.

V. Chollet - cours-pic-13b - 09/12/2012 Page 13 sur 44


Chapitre 3 UTILISATION DU TIMER 0

Le composant dispose de 3 timers : timer0 (TMR0), timer1 (TMR1) et timer2 (TMR2)

1 CARACTERISTIQUES DU TIMER 0

Le module Timer0 a les caractristiques suivantes :

- Timer ou compteur 8 bits


- Utilisable en lecture ou criture
- Pr diviseur 8 bits programmable
- Slection de lhorloge interne ou externe
- Interruption sur dpassement
- Slection du front montant ou descendant pour lhorloge externe

V. Chollet - cours-pic-13b - 09/12/2012 Page 14 sur 44


2 - SELECTION DU MODE TIMER OU COMPTEUR

Cette slection sopre grce au 5me bit TOCS du registre OPTION

TOCS = 1 Compteur
Timer 0 sincrmente chaque front montant ou
descendant du signal connect la patte RA4/TOCKI

OPTION5 = TOCS TOSE = 0


OPTION4 = TOSE
TOSE = 1

TOCS = 0 Timer
Timer 0 sincrmente chaque cycle sil ny a pas de
prdiviseur.
En cas dopration dcriture dans le timer,
lincrmentation est inhibe pour les 2 cycles suivants.
Avec une horloge 4 MHz,
lincrmentation se fait toutes les 1 s
(4 cycles par priode dhorloge)

V. Chollet - cours-pic-13b - 09/12/2012 Page 15 sur 44


3 REGISTRE OPTION

Choix du taux de division

V. Chollet - cours-pic-13b - 09/12/2012 Page 16 sur 44


4 - PREDIVISEUR

Le pr-diviseur est partag entre Timer0 et le chien de Garde (Watchdog Timer) ; Ce choix sopre par ltat
du bit 3 PSA du registre OPTION.

PSA = 1 Pr diviseur sur le Watchdog timer

OPTION3 = PSA

PSA = 0 Pr diviseur sur le Timer0

Le taux de division est alors rglable par les


bits PS0, PS1 et PS2 du registre OPTION
(Voir ci dessus 3.3)

5 EXEMPLE : Temporisation

Pour utiliser le TIMER0 avec pr-division par 256, il faudra une ligne de code dans le programme :

OPTION=0b00000111 ; TMR0 = 0 ;
Ou OPTION=0x07 ; do {
Ou OPTION=7 ; }
while (TMR0 < 240);

V. Chollet - cours-pic-13b - 09/12/2012 Page 17 sur 44


6 INTERRUPTION DU TIMER0

Une interruption est gnre par le timer0 si le timer ou le compteur passe de xFF x00 (en hexadcimal).

Ce dpassement met 1 le bit TOIF, bit 2 du registre INTCON.


On peut activer ou pas cette interruption par le bit TOIE, bit 5 du registre INTCON.

TOIE = 1 Interruption timer0 active

INTCON5 = TOIE

TOIE = 0 Interruption timer0 inactive

Le taux de division est alors rglable par les


bits PS0, PS1 et PS2 du registre OPTION
(Voir ci dessus 3.3)

V. Chollet - cours-pic-13b - 09/12/2012 Page 18 sur 44


V. Chollet - cours-pic-13b - 09/12/2012 Page 19 sur 44
Chapitre 4 - UTILISATION DU COMPARATEUR

1 RAPPEL
V+
+
S = 1 si V+ > V-
S = 0 si V+ < V-
V- -

2 LES COMPARATEURS

Le microcontrleur comporte 2 comparateurs donc 4 entres et 2 sorties.


Ces entres sorties de comparateur sont multiplexes avec les entres sorties numriques du port A comme
dj signal.
AN0 + C1OUT
Sources de AN1 -
tension de
rsistance interne AN2 + C2OUT
de 10 k maxi -
AN3 Les connexions
dpendent de
CM2 CM1 CM0
CM2 CM1 CM0

Les bits CM2 CM1 et CM0 du registre CMCON (Cf 4.3) dfinissent les fonctions de comparaison
slectionnes.

Le registre TRISA contrle la direction des donnes (E/S) pour chaque entre/sortie du port A mme en
mode comparateur. Il convient donc dinitialiser correctement TRISA.

V. Chollet - cours-pic-13b - 09/12/2012 Page 20 sur 44


3 DIFFERENTS MODES DE COMPARAISON

Le tableau ci-dessous rcapitule les diffrentes configurations possibles.

Exemple :

Si lon souhaite utiliser un seul comparateur, les bits CM2 CM1 et CM0 du registre CMCON sont
respectivement 101.

Le comparateur est alors constitu des deux entres RA1/AN1 (patte 18) et RA2/AN2 (patte 1). Le
rsultat de la comparaison est disponible sur les bits 6 et 7 du registre CMCON.

Ces deux bornes appartiennent au port A qui doit tre configur correctement laide de TRISA :
RA1/AN1 et RA2/AN2 en entres

On a alors TRISA = 0bxxxxx11x.

V. Chollet - cours-pic-13b - 09/12/2012 Page 21 sur 44


V. Chollet - cours-pic-13b - 09/12/2012 Page 22 sur 44
4 SORTIES DU COMPARATEUR

Les rsultats des deux comparaisons sont disponibles sur les bits 6 et 7 du registre CMCON. (Ces deux bits
sont en lecture seule).

Ils peuvent aussi tre transmis sur les sorties RA3/AN3/CMP1 (patte 2) et RA4/TOCKI/CMP2 (patte3).
Pour cela il faut tre dans la configuration o CM2 :CM0=110.

Ces deux bornes appartenant au port A, il faut les configurer en sortie laide de TRISA : TRISA = 0bxxx00xxx

5 COMPLEMENTS SUR LE REGISTRE CMCON

V. Chollet - cours-pic-13b - 09/12/2012 Page 23 sur 44


Inversion des sorties
du comparateur

Bit de contrle du multiplexage


des entres des comparateurs

V. Chollet - cours-pic-13b - 09/12/2012 Page 24 sur 44


6 EXEMPLE

Le programme suivant permet de faire fonctionner le pic en comparateur, comme un simple ampli op en
boucle ouverte.
void main(void)
{
CMCON=0b00000110 ; /*choix du mode de
comparaison Cf tableau 4.3 */
TRISA=0b00000110 ; /*RA1 et RA2 entres, RA4 en
sortie */
}

Aprs voir compil le programme source et programm le composant, on peut cbler le montage suivant pour
tester le fonctionnement :
La rsistance Rt est une rsistance dite de
Exemple tirage (pull up).
Elle est ncessaire car la sortie RA4 en
+5V 1k 1k +5V mode comparateur est drain ouvert :
Vdd

Rt
Rt=470
AN2 AN1 D Si G = 1 => VDS = 0 et VRt = Vdd
G
Si G = 0 => VDS = Vdd et VRt = 0
S

+5V RA4
2,2 k

Si AN2 > AN1 => RA4 = 1 => Led teinte

Si AN2 < AN1 => RA4 = 0 => Led allume

V. Chollet - cours-pic-13b - 09/12/2012 Page 25 sur 44


7 UTILISATION DE TENSIONS DE REFERENCE

7.1 REALISATION DE LA TENSION DE REFERENCE

Le module est constitu dun rseau de rsistances en chelle permettant de fabriquer une tension de
rfrence VRef.

V. Chollet - cours-pic-13b - 09/12/2012 Page 26 sur 44


7.2 VALEUR DE LA TENSION DE REFERENCE

On dispose de deux gammes dont le choix sopre par VRR le bit 5 du registre VRCON.
La valeur exacte dans la gamme est commande par VR les bits 3 0 du registre VRCON.

VRR = 1 Vref = VR<3 :0>*VDD/24 < Vref <

VRCON5 = VRR

VRR = 0 Vref = VR<3 :0>*VDD/32 + VDD/4 < Vref <

VR<3 :0> est la valeur dcimale du mot


binaire contitu par les bits VR3 VR2 VR1 VR0
du registre VRCON.
Calculer les valeurs extrmes de chaque gamme

7.3 TRANSMISSION DE LA TENSION DE REFERENCE SUR LA SORTIE

La tension de rfrence doit tre active par le bit 7 mis 1 dans le registre VRCON.

La tension de rfrence labore est envoye sur la sortie RA2/AN2/VREF du port A si VROE le bit 6 du registre
VRCON est 1. Sinon, la tension de rfrence est dconnecte.
void main(void)
Ainsi on doit avoir VRCON = 0b1110 0110 => Vref = 6*VDD/24 =1,25 V
{
envoy sur la sortie RA2.
VRCON=0b11100110 ;
TRISA=0b00000100 ;
En mme temps, la sortie RA2 du port A doit tre configure en entre
}
par lintermdiaire du registre TRISA : TRISA = 0bxxxxx1xx

V. Chollet - cours-pic-13b - 09/12/2012 Page 27 sur 44


7.4 REGISTRE VRCON

7.5 UTILISATION EN CNA

La sortie Vref programme par lintermdiaire dun mot binaire VR<3 :0> constitue un Convertisseur Numrique
Analogique. Cependant, cette sortie ne peut tre charge sans lutilisation dun tage suiveur.

V. Chollet - cours-pic-13b - 09/12/2012 Page 28 sur 44


Chapitre 5 - LE TIMER 1

1 DESCRIPTION DU TIMER 1

Le module Timer 1 est un timer/compteur 16 bits constitu de deux registres 8 bits TMR1H et TMR1L pouvant
tre en lecture ou criture.

Le Timer 1 sincrmente donc de 0x0000 0xFFFF puis repasse 0x0000. Le dpassement est signal par le
bit TMR1IF du registre PIR1.

2 REGISTRE T1CON

Le bit 0 de ce registre permet dactiver ou dsactiver le timer1.

TMR1ON = 1 Timer 1 actif

T1CON0 = TMR1ON

TMR1ON = 0 Timer 1 dsactiv

Les bits 4 et 5 permettent de choisir le taux de division de la frquence dhorloge interne ou externe.

V. Chollet - cours-pic-13b - 09/12/2012 Page 29 sur 44


Enable

V. Chollet - cours-pic-13b - 09/12/2012 Page 30 sur 44


3 SELECTION DU MODE TIMER OU COMPTEUR
Cette slection seffectue grce au bit TMRCS
du registre T1CON.

TMR1CS = 0 Timer
Timer 1 sincrmente chaque cycle,
T1CON1 = TMR1CS donc Fosc/4.

TMR1CS = 1 Compteur
Timer 0 sincrmente chaque front
montant de lhorloge externe

T1OSCEN = 0 Horloge externe applique RB6


T1CON3 = T1OSCEN
T1OSCEN = 1 Horloge externe applique RB7

T1SYNC = 0 Compteur synchrone


T1CON2 = T1SYNC Horloge externe synchronise avec lhorloge interne.
En mode sleep (sommeil), le compteur ne sincrmente plus.

T1SYNC = 1 Compteur asynchrone


Horloge externe non synchronise.
En mode sleep, le compteur continue de sincrmenter.
Il peut gnrer une interruption sur le dpassement pouvant tre utilise
pour rveiller le processeur.

Dans ce mode, le timer 1 ne peut pas tre utilis comme base de temps
pour le module CCP (Cf 7)

V. Chollet - cours-pic-13b - 09/12/2012 Page 31 sur 44


La lecture et lcriture du timer se font en 2 oprations du fait de la
Lire TMR1H
sparation du timer 1 en deux registres TMR1H et TMR1L. Un
dpassement peut intervenir entre temps.
Lire TMR1L
 Pour lcriture, il est prfrable darrter le timer auparavant.
 Pour la lecture, il faut raliser la procdure suivante : Relire TMR1H

non oui
TMR1H a
chang ?
Lire TMR1H
Lire TMR1L

Continuer
4 BLOC DIAGRAMME DU TIMER 1

V. Chollet - cours-pic-13b - 09/12/2012 Page 32 sur 44


Chapitre 6 MODULE CCP

Ce module contient un registre 16 bit constitu en ralit de deux registres 8 bits : CCPR1H et CCPR1L.

Les oprations de ce module sont contrles par le registre CCP1CON.

Ce module peut fonctionner de trois faons :

- mode capture, en relation avec le timer 1


- mode compare, en relation avec le timer 1
- mode PWM, en relation avec le timer 2.

V. Chollet - cours-pic-13b - 09/12/2012 Page 33 sur 44


1 REGISTRE CCP1CON

V. Chollet - cours-pic-13b - 09/12/2012 Page 34 sur 44


2 MODE CAPTURE

Ce mode permet de transfrer la valeur (16 bits) du timer 1 dans les deux registres 8 bits CCPR1H et
CCPR1L, lorsquun vnement se produit sur le port RB3 dentre.

Le timer 1 doit alors tre en mode timer ou compteur synchrone.

RB3 doit bien sr tre configur en entre TRISB3 = 1.

Lvnement dclenchant le transfert est slectionn par les bits 0 3 du registre CCP1CON. (Cf 7.1) :

- Sur chaque front descendant du signal connect sur RB3


- Sur chaque front montant du signal connect sur RB3
- Tous les 4 fronts montants du signal connect sur RB3
- Tous les 16 fronts montants du signal connect sur RB3

Les bits 0 3 du registre CCP1CON permettent donc de rgler un pr-diviseur agissant sur le signal appliqu
RB3.

La ralisation de la capture est signale par la mise 1 du drapeau correspondant : bit 2 CCP1IF du registre
PIR1. Ce bit doit alors tre remis 0 dans le programme.

V. Chollet - cours-pic-13b - 09/12/2012 Page 35 sur 44


Le contrle de linterruption est ralis par le bit 2 CCP1IE du registre PIE1.

CCP1IE = 0 Interruption dsactive

PIE12 = CCP1IE

CCP1IE = 1 Interruption active

CCP1IF = 1 Signale linterruption active


PIR12 = CCP1IF
CCP1IF = 0 Pas dinterruption

Attention : le changement du mode de capture entrane une fausse interruption.


Avant toute modification du mode, il faut dsactiver linterruption et remettre zro le drapeau CCP1IF.

3 REGISTRES PIR1 ET PIE1

Le registre PIR1 est un registre regroupant les drapeaux dinterruption cest dire des bits signalant quun
vnement dclenchant une interruption sest produit.

Le registre PIE1 est le registre qui active ou pas les interruptions.

V. Chollet - cours-pic-13b - 09/12/2012 Page 36 sur 44


V. Chollet - cours-pic-13b - 09/12/2012 Page 37 sur 44
4 MODE COMPARE

Dans ce mode, le registre 16 bits CCPR1 (CCPR1H et CCPR1L) est constamment compar au timer 1.

Quand ils sont gaux, cela est signal sur la sortie RB3 :

- Soit par un tat haut


- Soit par un tat bas
- Soit par un maintient de la valeur prsente.

Laction sur la patte RB3 est choisie par les bits 0 3 du registre CCP1CON. (Cf 7.1).

RB3 doit bien sr tre configur en sortie TRISB3 = 0.

Le timer 1 doit alors tre en mode timer ou compteur synchrone.

Comme dans le mode capture, la ralisation de lgalit est signale par la mise 1 du drapeau
correspondant : bit 2 CCP1IF du registre PIR1. Ce bit doit alors tre remis 0 dans le programme.

Le contrle de cette interruption est ralis par le bit 2 CCP1IE du registre PIE1.

Si CCP1CON <3 :0> = 1010 alors la ralisation de lgalit entrane une interruption logiciel sans affecter RB3.

Si CCP1CON <3 :0> = 1011 alors la ralisation de lgalit remet zro le timer 1. On a ainsi un timer 1 dont
la priode est programmable par le registre CCP1.

V. Chollet - cours-pic-13b - 09/12/2012 Page 38 sur 44


5 UTILISATION DU TIMER 2

Le timer 2 est un timer 8 bits avec pr et post-diviseurs programmables par lintermdiaire du registre T2CON.

Il peut tre utilis en lecture et criture et est remis zro par le reset du microcontrleur.
Il est activ ou dsactiv par le bit 2 du registre T2CON.

Il sert de base de temps pour le mode PWM du module CCP : timer 2 sincrmente de 0x00 jusqu ce quil atteigne
la valeur du registre PR2 puis repasse 0x00 lors du cycle suivant. (fonctionnant en lecture et criture).

Le bit 1 TMR2IF du registre PIR1 signale lgalit timer 2 = PR2 en passant 1. Ce drapeau doit alors tre remis
zro dans le programme.

V. Chollet - cours-pic-13b - 09/12/2012 Page 39 sur 44


V. Chollet - cours-pic-13b - 09/12/2012 Page 40 sur 44
6 MODE PWM DU MODULE CCP

Rappel : PWM signifie Pulse Width Modulation. En Franais MLI, modulation de largeur dimpulsion. Il sagit
donc de raliser un signal dont la largeur de limpulsion et donc le rapport cyclique est programmable.

Ce mode permet de dlivrer sur la patte RB3 utilise en sortie un signal PWM grce lutilisation du timer 2.

RB3 doit donc tre configur en sortie TRISB3 = 0.


Le timer 2 doit tre activ (registre T2CON).

Dans ce mode, le registre 8 bits CCPR1L auquel sajoutent les bits 4 et 5 du registre CCP1CON constitue un
mot de 10 bits correspondant la largeur de limpulsion :
Largeur de limpulsion = CCPR1L :CCP1CON<5 :4> . Tosc . (valeur du pr-diviseur du timer 2)

La priode du signal PWM dpend dune valeur devant tre crite dans le registre PR2.
Elle est donne par la relation : Priode PWM = (PR2 + 1) . 4 Tosc . (valeur du pr-diviseur du Timer 2 )

La priode PWM doit tre suprieure la dure de limpulsion.

Quand TMR2 = PR2 cela entrane au cycle suivant :

- La remise zro du timer 2


- La mise 1 de la sortie RB3
- Le rapport cyclique est transmis de CCPR1L CCPR1H.

Le bit 1 TMR2IF du registre PIR1 signale lgalit timer 2 = PR2 en passant 1. Ce drapeau doit alors tre
remis zro dans le programme.

V. Chollet - cours-pic-13b - 09/12/2012 Page 41 sur 44


EXERCICES

Exercice 1 : Entres-sorties sur port A et B

1/ Ecrire un programme qui lit un bouton poussoir connect RA0 et allume une led connecte sur RA1 si le
bouton poussoir est relch et teint la led si le BP est enfonc.

2/ Ecrire un programme qui dlivre sur les sorties RB3, RB2, RB1 et RB0 du port B du pic, les valeurs
complmentes des bits RA3, RA2, RA1, RA0 du port A utilis en entre.

Exercice 2 : Timer 0

Ecrire un programme qui fait clignoter la frquence d1 Hz, une led connecte sur la sortie RA0 du port A.

Exercice 3 : Chenillard 4 leds

Les 4 leds seront connectes au port A.


Ecrire le programme qui permet dallumer successivement chaque led pendant 0,5 s (lallumage de la led suivante
teint la prcdente).

V. Chollet - cours-pic-13b - 09/12/2012 Page 42 sur 44


Exercice 4.1

Ecrire un programme qui compare les tensions appliques sur RA1 et RA2 et affiche le rsultat sur RA0

Exercice 4.2

Ecrire un programme qui compare AN0 et AN1 AN2 et affiche le rsultat sur RB0 et RB1

Exercice 4.3 : Comparateur

Ecrire un programme dlivrant sur la sortie RA4, le rsultat de la comparaison de la tension Vin applique sur RA0
et de la tension de rfrence interne rgle 1,25 V

Exercice 4.4 : Boucle dattente

Ecrire un programme qui attend lappui sur un bouton poussoir connect sur RB4 pour allumer la led RB0.

Exercice 4.5

Ecrire un programme qui gnre une tension RA2 qui augmente de 0,208 V chaque appui sur un bouton poussoir
connect sur RB4 jusqu atteindre 2,5 V

V. Chollet - cours-pic-13b - 09/12/2012 Page 43 sur 44


Exercice 5 : Comparateur programmable

Reprendre le programme prcdent et le modifier pour que la rfrence interne soit fonction des bits RB3 RB2 RB1
et RB0 du port B utilis en entre numrique.

Exercice 6 : CAN 4 bits

Ecrire un programme permettant dutiliser un pic pour raliser un CAN 4 bits ayant les caractristiques suivantes :
Ve applique sur RA1 comprise entre 0 et 3,125 V quantum de 0,2 V.

Le mot binaire rsultat de la conversion sera affich sur 4 leds connectes sur les sorties RB3 RB2 RB1 RB0 du port
B. Les leds sont allumes par un 0 sur la sortie correspondante.

V. Chollet - cours-pic-13b - 09/12/2012 Page 44 sur 44