Vous êtes sur la page 1sur 18

Page 1

Microcontrleurs PIC
(Cas du 16f628)
(Version 1.00 de fvrier 2002)
Par

Jacques WEISS
SUPELEC Campus de Rennes
1
2

Introduction ..................................................................................................................................................... 3
Architecture ..................................................................................................................................................... 3
2.1
Unit centrale........................................................................................................................................... 4
2.1.1
Instructions ...................................................................................................................................... 5
2.1.1.1 Format des instructions................................................................................................................ 5
2.1.1.2 Squencement des instructions .................................................................................................... 5
2.1.1.3 Jeu dinstructions ......................................................................................................................... 5
2.2
Mmoire .................................................................................................................................................. 6
2.2.1
Mmoire programme ....................................................................................................................... 6
2.2.2
Mmoire donnes (Registres) .......................................................................................................... 7
2.2.2.1 STATUS ...................................................................................................................................... 8
2.2.2.2 OPTION ...................................................................................................................................... 9
2.2.2.3 INTCON ...................................................................................................................................... 9
2.2.2.4 PIE1 et PIR1 ................................................................................................................................ 9
2.2.2.5 PCON .......................................................................................................................................... 9
2.2.3
Compteur Ordinal (PC, PCL et PCLATH) .................................................................................... 10
2.2.3.1 Adressage indirect (INDF et FSR)............................................................................................. 10
2.3
Ports dE/S............................................................................................................................................. 11
2.3.1
Port A............................................................................................................................................. 11
2.3.2
Port B............................................................................................................................................. 11
2.4
Priphriques ......................................................................................................................................... 12
2.4.1
Timer 0 .......................................................................................................................................... 12
2.4.2
Comparateurs analogiques............................................................................................................. 12
2.4.3
Tension de rfrence...................................................................................................................... 13
2.4.4
EEPROM Donnes ........................................................................................................................ 14
2.5
Fonctions Spciales ............................................................................................................................... 15
2.5.1
Mot de configuration ..................................................................................................................... 15
2.5.2
Configuration de lhorloge............................................................................................................. 16
2.5.3
Interruptions................................................................................................................................... 16
2.5.4
Programmation ICSP ..................................................................................................................... 17
3
Bibliographie ................................................................................................................................................. 18

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 2

Table des illustrations :


Fig. 1.0 : Brochage du PIC16f628........................................................................................................................... 3
Fig. 2.1 : Architecture PIC (16f628)........................................................................................................................ 4
Fig. 2.2 : Cur dun processeur PIC ....................................................................................................................... 4
Fig. 2.3 : Format des instructions ............................................................................................................................ 5
Fig. 2.4 : Squencement du processeur ................................................................................................................... 5
Fig. 2.5 : Jeu dinstructions ..................................................................................................................................... 6
Fig. 2.6 : Mmoire programme................................................................................................................................ 7
Fig. 2.7 : Mmoire donnes (Registres)................................................................................................................... 8
Fig. 2.8 : Compteur ordinal (PC)........................................................................................................................... 10
Fig. 2.9 : Adressage Direct/Indirect....................................................................................................................... 10
Fig. 2.10 : Timer 0................................................................................................................................................. 12
Fig. 2.11 : Modes de configuration des comparateurs ........................................................................................... 13
Fig. 2.12 : Module de Tension de rfrence .......................................................................................................... 13
Fig. 2.13 : configuration doscillateur HS, XT et LP ............................................................................................ 16
Fig. 2.14 : Logique de gestion des interruptions.................................................................................................... 16

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 3

Introduction

Ce document se veut tre une aide la comprhension de larchitecture de microcontrleurs PIC de


MicroChip ; il ne prsente que quelques aspects dun modle de composant (PIC16f628) ; il ne dispense
ABSOLUMENT PAS daller consulter la documentation technique du fabricant, mme si elle fait 160 pages
crites en anglais !
Ce composant intgre un microcontrleur 8 bits, cest dire un processeur et des priphriques, dans un
botier Dual in Line de 18 broches. Il est ralis en technologie CMOS et peut cadenc par une horloge
allant de 0 20 MHz ; il doit tre aliment par une tension allant de 3 5,5 Volts.
Les broches du composant possdent plusieurs affectations entre les ports dE/S, les priphriques et les
fonctions systme.

18

17

3
4
5
6
7

PIC16f628

RA2/AN2/Vref
RA3/AN3/CMP1
RA4/T0CK1/CMP2
RA5/MCLRn/THV
VSS
RB0/INT
RB1/RX/DT
RB2/TX/CK
RB3/CCP1

16
15
14
13
12

11

10

R A 1/A N 1
R A 0/A N 0
RA7/OSC1/CLKIN
RA6/OSC2/CLKOUT
VDD
RB7/T1OSI
RB6/T1OSO/T1CKI
RB5
RB4/PGM

VSS : masse
VDD : alimentation (de 3 5,5 Volts)

Fig. 1.0 : Brochage du PIC16f628


Note : la notation des signaux actifs ltat bas utilise la lettre minuscule n en fin de symbole ; exemple : le signal
ENTREE BARRE sera crit : ENTREEn.

Il est ainsi possible, dans certaines configurations, de profiter de 16 broches dE/S (en fait 16 sorties et 15
entres) sur le composant.
En priphrie de lunit centrale, on peut recenser les ressources suivantes sur le composant :
Mmoire Flash Programme : 2048 instructions
Mmoire RAM Donnes : 224 Octets
Mmoire EEPROM Donnes : 128 Octets
Ports dE/S : 2 ports 8 bits
Priphriques :
3 Timers (8 et 16 bits)
1 module Capture/Compare/PWM
2 comparateurs analogiques
1 rfrence de tension
1 USART (mission/rception srie synchrone et asynchrone)

Architecture

Le microcontrleur est compos dune unit centrale et de priphriques ; le fonctionnement est gr par un
squenceur qui, en fonction des modes opratoires, fournit les signaux de contrle chaque module.
Le fonctionnement de lunit centrale est de type RISC (Reduced Instruction Set Computer), le jeu
dinstructions est rduit 35.
Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 4
Bus Donnes

13

Program Counter

Flash
Program
Memory

File
Registers

(8 levels)
(13 bits)

14

Instr. Register
Direct Addr.

Indirect
8 Addr.

FSR
8

Instr.
Decode
& ctrl
Timing
Generation
OSC1/CLKIN
OSC2/CLKOUT

Power-Up
Timer
Oscillator
Start-UP Timer
Power-On
Reset
WatchDog
Timer
Brown-Out
Detect
Low Voltage
Programming

MCLRn

ALU

STATUS

PORT A

RA0/AN0
RA1/AN1
RA2/AN2/Vref
RA3/AN3/CMP1
RA4/T0CK1/CMP2
RA5/MCLRn/THV
RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN

PORT B

Bus Instructions

Data EEPROM

RAM

STACK

RB0/INT
RB1/RX/DT
RB2/TX/CK
RB3/CCP1
RB4/PGM
RB5
RB6/T1OSO/T1CKI
RB7/T1OSI

Vers priphriques :
Comparateurs, Timers, Vref, USART, CCP

Vdd, Vss

Fig. 2.1 : Architecture PIC (16f628)

2.1 Unit centrale


Le cur du processeur est compos de 3 entits :
LALU (oprations arithmtiques et logiques sur 8 bits) et son registre dtat (STATUS)
Le registre de travail : W (Working Register)
Le registres dusage gnral (File Registers)
Registre Instructions

Valeur immdiate (ou Littrale)

Registres
(RAM)
8

ALU
W

STATUS

Fig. 2.2 : Cur dun processeur PIC


Les oprations possibles sont alors les suivantes (avec un exemple) :

W W (op) valeur immdiate


ADDLW 0xFF
Dest. W (op) Registre
ADDWF REGISTRE, dest.
Registre W
MOVWF REGISTRE
Dest. Registre
MOVF
REGISTRE,dest.
Dest. Registre 1
INCF
REGISTRE,dest.
Dest. Registre 1 plus test
INCFSZ
REGISTRE,dest.
Manipulation et test individuel de bits sur les registres

O :
(op) reprsente une opration arithmtique ou logique
Dest. Reprsente la destination des donnes (W ou le REGISTRE concern)

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 5

2.1.1

Instructions

2.1.1.1 Format des instructions


Les instructions sont codes sur 14 bits ; leur format, figure suivante, dpend des variables employes
(octet, bit ou valeur immdiate).
Oprations sur des Octets
13

OPCODE
d
d
f

f (FILE #)

= 0 :
W est la destination
= 1 :
f est la destination
: adresse du registre f (7 bits)

Oprations sur des bits (registres)


13

10

OPCODE
b
f

b (BIT #)

f (FILE #)

: position du bit (de 0 7)


: adresse du registre f (7 bits)

Oprations immdiates (W) et de contrle


Cas gnral
13

OPCODE
k

k (literal)

: valeur immdiate de la donne (8 bits)

Cas des instructions CALL et GOTO


13

11 10

OPCODE
k

k (literal)

: valeur immdiate de l'adresse (11 bits)

Fig. 2.3 : Format des instructions

2.1.1.2 Squencement des instructions


Le processeur est pilot par un gnrateur de signaux qui divise lhorloge systme par 4 ; ainsi le cycle
machine est 4 fois plus long que la priode dhorloge.
Le processeur fonctionne en mode pipe-line (x2), ce qui lui permet dexcuter potentiellement une
instruction par cycle ; cette cadence est brise lors de sauts de programme, il faut dans ce cas l vider le pipeline (flush) avant dexcuter le sous-programme.
1. MOVLW 0x55

(W <- 0x55)

2. MOVWF PORTB (PORTB <- W)


3. CALL

SP1

4. MOVF

PORTA, W

Fetch 1

Exec. 1
Fetch 2

Exec. 2
Fetch 3

Exec. 3
Fetch 4

Flush
Fetch SP1 Exec. SP1

Fig. 2.4 : Squencement du processeur

2.1.1.3 Jeu dinstructions


La figure suivante prsente lensemble des 35 instructions dun processeur PIC ; ce jeu est commun la
plupart de microcontrleurs du fabricant. Pour avoir le dtail de chaque instruction, il faut se reporter la
documentation du constructeur.

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 6
Mnmonique,
oprande

Description

Code Opratoire (14 bits) Drapeaux


MSb
LSb (STATUS)

Oprations sur des Octets


ADDWF
ANDWF
CLRF
CLRW
COMF
DECF
DECFSZ
INCF
INCFSZ
IORWF
MOVF
MOVWF
NOP
RLF
RRF
SUBWF
SWAPF
XORWF

f, d
f, d
f, d
f, d
f, d
f, d
f, d
f, d
f, d
f, d
f
f, d
f, d
f, d
f, d
f, d

Add W and f
AND W with f
Clear f
Clear W
Complement f
Decrement f
Decrement f Skip if 0
Increment f
increment f Skip if 0
Inclusive OR W with f
Move f
Move W to f
No Operation
Rotate Left f through Carry
Rotate Right f throuch Carry
Substract W from f
Swap nybbles with f
Exclusive OR W with f

00

0111

dfff

ffff

00

0101

dfff

ffff

00

0001

1fff

ffff

00

0001

0xxx

xxxx

00

1001

dfff

ffff

00

0011

dfff

ffff

00

1011

dfff

ffff

00

1010

dfff

ffff

00

1111

dfff

ffff

00

0100

dfff

ffff

00

1000

dfff

ffff

00

0000

1fff

ffff

00

0000

0xx0

0000

00

1101

dfff

ffff

00

1100

dfff

ffff

00

0010

dfff

ffff

00

1110

dfff

ffff

00

0110

dfff

ffff

01

00bb

bfff

ffff

01

01bb

bfff

ffff

01

10bb

bfff

ffff

01

11bb

bfff

ffff

C, DC, Z
Z
Z
Z
Z
Z
Z
Z
Z

C
C
C, DC, Z
Z

Oprations sur des bits (registres)


BCF
BSF
BTFSC
BTFSS

f, b
f, b
f, b
f, b

Bit Clear f
Bit Set f
Bit Test f, Skip if Clear
Bit Test f, Skip if Set

Oprations immdiates (W) et de contrle


ADDLW
ANDLW
CALL
CLRWDT
GOTO
IORLW
MOVLW
RETFIE
RETLW
RETURN
SLEEP
SUBLW
XORLW

k
k
k
k
k
k
k
k
k

Add Literal and W


AND Literal and W
Call subroutine
Clear Watchdog Timer
Go To address
Inclusive OR literal with W
Move Literal to W
Return from interrupt
Return with literal in W
Return from Subroutine
Go into standby mode
Substract W from literal
Exclusive OR literal with W

11

111x

kkkk

kkkk

11

1001

kkkk

kkkk

10

0kkk

kkkk

kkkk

00

0000

0110

0100

10

1kkk

kkkk

kkkk

11

1000

kkkk

kkkk

11

00xx

kkkk

kkkk

00

0000

0000

1001

11

01xx

kkkk

kkkk

00

0000

0000

1000

00

0000

0110

0011

11

110x

kkkk

kkkk

11

1010

kkkk

kkkk

C, DC, Z
Z
T0n, PDn
Z

T0n, PDn
C, DC, Z
Z

Notations
f
d
k
b

Registre (File Register )


Destination de l'opration (W("0") ou f ("1"))
Valeur immdiate (Literal value )
Position du bit dans l'octet

Fig. 2.5 : Jeu dinstructions

2.2 Mmoire
Ce microcontrleur est bas sur une architecture de processeur de type Harvard, cest dire quil y a
sparation des bus dinstructions et de donnes ainsi que de lespace dadressage.

2.2.1

Mmoire programme

Les instructions du programme sont stockes sur 14 bits dans une zone mmoire dont ladresse stend de
000h 7FFh (2048 lignes de programme pour le 16f628).
Il y a 2 adresses rserves pour les vecteurs dinitialisation (Reset et interruptions) ; le processeur possde
une pile de 8 niveaux pour grer les adresses de retour de sous programmes ; il ny a aucun contrle sur ltat de
la pile par le processeur.
Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 7
CALL, Branch

P ile
(8 niveaux)

M moir e F lash Pr ogr amme


(2048 lignes de 14 bits)

Return

PC[12:0]

Vecteur de RESET

000h

Vecteur dinterruption

004h

@ instruction

005h

Mmoire
programme

7F F h

Fig. 2.6 : Mmoire programme

2.2.2

Mmoire donnes (Registres)

La mmoire donnes correspond aux registres (File Registers) vus par lunit centrale ; ces registres sont de
2 types :

Registres Systme : ils permettent la configuration et la surveillance de ltat du processeur et de


ses priphriques ; ces registres sont accessibles en lecture ou en criture suivant leur fonction ; il y a
34 registres de ce type pour le 16f628.

Registres dusage gnral : ils permettent le stockage de variables; ils sont accessibles en lecture et en
criture par le programme ; il y a 224 registres de ce type pour le 16f628.

Le jeu dinstructions du processeur ne permet ladressage des registres que sur 7 bits (128 registre),
lespace mmoire est alors dcompos en 4 bancs de 128 registres ; la cartographie de la mmoire donnes est
donne par la figure suivante ; les zones grises ne sont pas implmentes.

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 8
Banc 0

Banc 1
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
20

Indirect. Addr.

TMR0
PCL
STATUS
FSR
PORTA
PORTB

PCLATH
INTCON
PIR1
TMR1L
TMR1H
T1CON
TMR2
T2CON

CCPR1L
CCPR1H
CCP1CON
RCSTA
TXREG
RCREG

CMCON

h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h

Banc 2

Indirect. Addr.

OPTION
PCL
STATUS
FSR
TRISA
TRISB

PCLATH
INTCON
PIE1
PCON

PR2

TXSTA
SPBRG
EEDATA
EEADR
EECON1
EECON2
VRCON

80
81
82
83
84
85
86
87
88
89
8A
8B
8C
8D
8E
8F
90
91
92
93
94
95
96
97
98
99
9A
9B
9C
9D
9E
9F
A0

h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h

Indirect. Addr.

TMR0
PCL
STATUS
FSR
PORTB

PCLATH
INTCON

48
Registres
d'usage
gnral
EF h
F0 h

70 h

h
h
h
h
h
h
h
h
h
h
h
h

Indirect. Addr.

OPTION
PCL
STATUS
FSR
TRISB

PCLATH
INTCON

180
181
182
183
184
185
186
187
188
189
18A
18B

h
h
h
h
h
h
h
h
h
h
h
h

14F h

1F0 h

Accs
70h - 7Fh
7F h

100
101
102
103
104
105
106
107
108
109
10A
10B

120 h

80
Registres
d'usage
gnral

96
Registres
d'usage
gnral

Banc 3

Accs
70h - 7Fh
FF h

1F0 h
Accs
70h - 7Fh

1FF h

1FF h

Fig. 2.7 : Mmoire donnes (Registres)


Nous allons maintenant nous intresser quelques registres systme ; la description qui suit se veut
sommaire ; les tableaux suivants utilisent la syntaxe suivante :
R/W-x pour Read/Write valeur (x) la mise sous tension.

2.2.2.1 STATUS
Ce registre permet de choisir le banc auquel on veut accder et de lire les drapeaux (Flags) de lALU et du
timer.
STATUS

R/W-0

R/W-0

R/W-0

R-1

R-1

R/W-x

R/W-x

R/W-x

03h ou 83h

IRP

RP1

RP0

TOn

PDn

DC

bit 7

bit 0

IRP : slection des bancs 0, 1 ou 2, 3 en adressage indirect


RP0, RP1 : choix du banc (de 0 3) en adressage direct
Z, DC, C : drapeaux de lALU

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 9

2.2.2.2 OPTION
Ce registre permet de configurer cetains paramtres du Port B et le Timer 0.
OPTION

R/W-1

R/W-1

R/W-1

R/W-1

R/W-1

R/W-1

R/W-1

R/W-1

81h

RBPUn

INTDEDG

T0CS

T0SE

PSA

PS2

PS1

PS0

bit 7

bit 0

RBPUn : Validation de rsistances de Pull-Up sur le Port B


INTEDG : slection du front actif de linterruption partir de RB0/INT
Les autres bits permettent de configurer la source du Timer 0.

2.2.2.3 INTCON
Ce registre contient les bits de validation et les drapeaux des sources principales dinterruptions.
INTCON

R/W-0

R/W-0

R/W-0

R/W-0

R/W-0

R/W-0

R/W-0

R/W-x

0Bh ou 8Bh

GIE

PEIE

T0IE

INTE

RBIE

T0IF

INTF

RBIF

bit 7

bit 0

Validation/masquage des interruptions :


GIE : (Glogal Interrupt Enable) : toutes les interruptions
PEIE : (Peripheral Int. Enable) : interruptions des priphriques
T0IE : (timer 0 Int. Enable) : interruption de RB0/INT
INTE : (External Int. Enable) : interruption de RB0/INT
RBIE : (Port B Change Int. Enable) : interruption de RB7-RB4

Drapeaux dinterruptions :
T0IF : Timer 0
INTF : RB0/INT
RBIF : changement de RB7-RB4

2.2.2.4 PIE1 et PIR1


Ces registres permettent de grer la validation des interruptions (PIE1) et de scruter les drapeaux (PIR1)
des organes priphriques.
PIE1

R/W-0

R/W-0

R/W-0

R/W-0

8Ch

EEIE

CMIE

RCIE

TXIE

R/W-0

R/W-0

R/W-0

CCPIE

TMR2IE

TMR1IE

bit 7

PIR1

bit 0

R/W-0

R/W-0

R/W-0

R/W-0

0Ch

EEIF

CMIF

RCIF

TXIF

R/W-0

R/W-0

R/W-0

CCPIF

TMR2IF

TMR1IF

bit 7

bit 0

EEIx : EEPROM Donnes


CMIx : Comparateurs analogiques
RCIx : Rception USART
TXIx : Emission USART
CCPIx : Capture/Compare/PWM
TMRxIy : Timers 1 et 2

2.2.2.5 PCON
Ce registre sert grer les conditions de rveil du processeur (Resets, Sleep, Brown-Out)
@

PCON

R/W-1

8Eh

OSCF

bit 7

R/W-q

R/W-q

PORn

BODn
bit 0

OSCF : choix de la frquence de loscillateur interne (modes INTRC/ER)

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 10

2.2.3

Compteur Ordinal (PC, PCL et PCLATH)

Le compteur ordinal a une longueur de 13 bits (on en utilise 11 pour les 2048 lignes de code du 16f628)
alors que le processeur ne gre les donnes que sur 8 bits et les adresses que sur 11 bits. Ainsi, le compteur est
considr en 2 morceaux, la partie basse (8 bits LSB) est prsente dans le registre PCL, alors que la partie haute
nest accessible quindirectement (PCLATH)
P CH
12

P CL
8

PC

Instructions concernant PCL

8 bits
de et vers l ALU

P CLA TH
7

0
P CH

12

P CL
8

PC

Instructions GOTO, CALL

P CLA TH
7

11 bits
du registre instructions

Fig. 2.8 : Compteur ordinal (PC)


Il est important de noter quen cas dinstruction de saut calcul en cours dexcution du programme (offset
dans une table, par exemple), on ne peut modifier que les 8 bits de poids faible (PCL) du compteur ; cest pour
cela quune table ne pourra pas excder 256 cases, en supposant quelle dmarre en dbut de page.

2.2.3.1 Adressage indirect (INDF et FSR)


Ladressage indirect est possible en passant par un registre virtuel (INDF) dont ladresse est positionne par
le registre FSR (File Select Register) et le bit IRP du registre STATUS.
La figure suivante prsente les 2 contextes dadressage, direct et indirect.

ADRESSAGE DIRECT
S T AT US
R P0 R P1

ADRESSAGE INDIRECT

Re g istre In stru ctio n


6

S T AT US
0

IR P

@MSB

Re g istre F S R
7

@MSB

@LSB

(banc)

(banc)

2
0 0

0 1

1 0

00h

@LSB

1 1
180h

RAM
(Registres)
7Fh

1FFh

Fig. 2.9 : Adressage Direct/Indirect

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 11

Exemple dadressage indirect, on envoie 4 octets partir de ladresse DEPART sur le Port B :
MOVLW
MOVWF
MOVLW
MOVWF
Boucle
MOVF
MOVWF
INCF
DECFSZ
GOTO

DEPART
FSR
d'4'
COMPTEUR

; dbut du bloc (adresse DEPART)


; enregistrement dans le pointeur (FSR)

INDF,w
PORTB
FSR,f
COMPTEUR, f
Boucle

;
;
;
:

Lecture de la valeur (adresse FSR)


envoi sur le port B
incrmentation du pointeur
dcomptage

2.3 Ports dE/S


Le composant dispose de 2 ports dE/S : A et B ; ceux-ci peuvent servir dE/S numriques standards ou
dE/S de priphriques internes.
Ces ports sont bi-directionnels, leur configuration se fait par des registres spcifiques (TRISx) ; par
exemple : TRISA configure le Port A : chaque bit plac 1 place le bit du port en entre. En cas dutilisation de
priphriques internes, ceux-ci sont prioritaires pour laffectation des broche dE/S.
Description sommaire des ports :
Note : sauf spcification particulire, les broches sont configurables en E/S numriques bi-directionnelles ;
la liste ci-dessous ne prsente alors que les configurations spcifiques chaque broche.

2.3.1

Port A
A7 (RA7/OSC1/CLKIN) : broche dentre pour le signal lhorloge
A6 (RA6/OSC2/CLKOUT) : broche de sortie pour le signal dhorloge
A5 (RA5/MCLRn/THV) : broche de Reset et de programmation haute tension
A4 (RA4/T0CKI)
: E/S Drain Ouvert, entre dhorloge pour le Timer 0
A3 (RA3/AN3)
: E/S pour les comparateurs analogiques
A2 (RA2/AN2/Vref)
: entre pour les comparateurs analogiques et sortie de la tension de rfrence interne)
A1 (RA1/AN1)
: entre pour les comparateurs analogiques
A0 (RA0/AN0)
: entre pour les comparateurs analogiques

Les registres associs au port A sont : PORTA, TRISA, CMCON et VRCON

2.3.2

Port B
B7 (RB7/T1OSI)
B6 (RB6/T1OSO/T1CKI)
B5 (RB5) :
B4 (RB4/PGM)
B3 (RB3/CCP1)
B2 (RB2/TX/CK)
B1 (RB1/RX/DT) :
B0 (RB0/INT) :

: entre dhorloge pour le Timer 1


: E/S du Timer 1 et ligne dhorloge de la programmation du composant.
: contrle du mode de programmation basse-tension
: E/S du module Capture/Compare/PWM
: sortie ou horloge de lUSART
: entre de lUSART
: entre dinterruption externe

Les registres associs au port B sont : PORTB, TRISB, OPTION et VRCON


Exemple dinitialisation de ports dE/S
CLRF
CLRF
BSF
BSF
CLRF
MOVLW
MOVWF
BCF

PORTA
PORTB
STATUS, RP0
OPTION_REG,7
TRISA
0x02
TRISB
STATUS, RP0

; passage au banc 1
; Pas de Pull-Up sur PORT B,
; PORTA en sortie
; PORT B en SORTIE sauf RB1 (RxD)
; retour au banc 1

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 12

2.4 Priphriques
2.4.1

Timer 0

Le module Timer 0 est un compteur 8 bits (TMR0), accessible en lecture et en criture, dont la retenue
alimente un drapeau dinterruption ; lhorloge de ce compteur peut tre interne ou externe par lintermdiaire
dun prdiviseur (3 bits).

Bus de donnes

Fosc/4

0
8

RA4/T0CKI

1
1

Sync.
(2 cycles)

DIVISEUR

3
T0SE

T0CS

PS[2:0]

TMR0

Positionne le drapeau (T0IF)


en cas de dbordement
PSA

Fig. 2.10 : Timer 0


Les registres associs au Timer 0 sont : TMR0, INTCON, OPTION,TRISA(4)

2.4.2

Comparateurs analogiques

Le module est compos de 2 comparateurs analogiques, aliments par le port A et la tension de rfrence
interne.
CMCON

R-0

R-0

R/W-0

R/W-0

R/W-0

R/W-0

R/W-0

R/W-0

1Fh

C2OUT

C1OUT

C2INV

C1INV

CIS

CM2

CM1

CM0

bit 7

bit 0

CxOUT : sorties des comparateurs (peuvent tre places sur le Port A)


CxINV : polarit des sorties
CIS
: multiplexage des entres : RA0/RA3 et RA1/RA2
CM[2 :0] : choix du mode :
000 : comparateurs inactifs (entres en mode analogique)
001 : 2 comparateurs avec une entre commune (1 comp. Avec entres multiplexes)
010 : 4 entres (Port A) multiplexes vers 2 comparateurs (avec Vref)
011 : 2 comparateurs avec une entre commune
100 : 2 comparateurs indpendants (entres sur le port A)
101 : 1 comparateur
110 : 2 comparateurs avec une entre commune et sortie sur le port A
111 : comparateurs inactifs (entres en mode numrique)

Les registres associs au module comparateurs sont : CMCON, VRCON, INTCON, PIR1, PIE1 et TRISA.

Fig. 2.11 : registres associs au module comparateuts

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 13

Fig. 2.12 : Modes de configuration des comparateurs

2.4.3

Tension de rfrence

Le module de rfrence est constitu dun rseau de 16 rsistances permettant dalimenter les comparateurs
avec une tension de rfrence.
VRCON

R/W-0

R/W-0

R/W-0

9Fh

VREN

VROE

VRR

R/W-0

R/W-0

R/W-0

R/W-0

VR3

VR2

VR1

VR0

bit 7

bit 0

VREN (VREF Enable) : Validation du module


VROE (VREF Output Enable) : sortie sur RA2
VRR (VREF Range Selection) : choix de la plage
VR[3 :0] : choix de la valeur (dans la plage) :
Si VRR = 1 : VREF = (VR[3 :0]/24)*Vdd
Si VRR = 0 : VREF =Vdd/4 (VR[3 :0]/32)*Vdd

Fig. 2.13 : Module de Tension de rfrence

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 14

2.4.4

EEPROM Donnes

Le composant dispose dune zone mmoire non-volatile (EEPROM) de 128 Octets ; cette mmoire nest
accessible que par adressage indirect via un registre propre au module.
Il faut savoir quune mmoire EEPROM offre un fonctionnement dissymtrique :
Lecture : le fonctionnement est comparable celui dune RAM
Ecriture : lopration demande un certain temps avant dtre ralise (mise en route dune circuiterie
dlvation de tension et effacement de la cellule) dpendant des conditions (alimentation, temprature,
technologie) ; les composants prsentent un vieillissement chaque criture qui se traduit par un ralentissement
de lcriture.
Effacement : il permet de placer toutes les cellules mmoire 1.
Pour limiter lusure de lEEPROM, il peut tre intressant danalyser le contenu de la cellule mmoire pour
savoir sil ny a que des 0 inscrire (pas besoin deffacer la cellule dans ce cas l).
Il y a 4 registres pour rgir le module :
EECON1 et EECON2 : registres de configuration
EEADR : registre (7 bits) pointant sur ladresse concerne
EEDATA : registre dindirection
Le registre EECON1 ne contient que 4 bits pour le contrle des oprations
@

EECON1

9Bh

bit 7

R/W

R/W

R/W

R/W-x

R/W-0

R/S-0

R/S-x

WRERR

WREN

WR

RD
bit 0

WRERR (EEPROM Error Flag) : drapeau indiquant une erreur dcriture


WREN : autorisation dcriture en mmoire
WR (ne peut qutre forc 1) : Ordre dcriture, rinitialis automatiquement en fin dopration (dure de
plusieurs cycles machines suivant conditions)
RD (ne peut qutre forc 1) : Ordre de lecture, rinitialis automatiquement en fin dopration (dure 1 cycle
machine)

La manipulation de la mmoire EEPROM ne doit se faire que suivant un protocole impos, voici des
exemples :
La lecture est relativement facile mettre en uvre, elle se fait par adressage indirect et lancement dun
ordre de lecture ; lopration se faisant en 1 cycle, il ny a pas se soucier de la disponibilit de la mmoire.
;************************************************************************
Lecture de la case EEPROM pointe par EEADR ; retour dans EEDATA
Bsf
STATUS,RP0
; Passage au banc mmoire 1
bsf
EECON1,RD
; Ordre de lecture EEPROM
bcf
STATUS,RP0
; Retour au banc mmoire 0

Lcriture est plus complexe manipuler du fait de lobligation dcrire dans le registre virtuel EECON2 la
squence 55h puis AAh ; lopration durant plusieurs cycles, il faut attendre la fin de lcriture (par boucle
(polling) ou par interruption).

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 15
;************************************************************************

Ecriture la case EEPROM pointe par EEADR (contenu dans EEDATA)


bcf
INTCON,GIE
; inhibition des interruptions
bsf
STATUS,RP0
; Passage au banc mmoire 1
bsf
EECON1,WREN
; Ordre d'criture EEPROM
movlw H'55'
; Squence impose
movwf EECON2
; par le matriel
movlw H'AA'
; de gestion de
movwf EECON2
; la mmoire
bsf
EECON1,WR
; Ordre d'criture EEPROM
;************************************************************************

Boucle dattente de lcriture effective (peut aussi tre gr sous forme dinterruption)
WAIT_EE
btfsc EECON1,WR
goto
WAIT_EE
;************************************************************************
bcf
EECON1,EEIF
bcf
EECON1,WREN
; Protection d'criture EEPROM
bcf
STATUS,RP0
; Retour au banc mmoire 0
bsf
INTCON,GIE
; validation des interruptions

2.5 Fonctions Spciales


Le composant dispose de plusieurs configurations possibles qui vont dfinir le mode opratoire du
microcontrleur :

le brochage : utilisation pour des fonctions systme ou pour lutilisateur,


lhorloge : interne, externe, lente ou rapide,
la temporisation la mise en route (Power-Up Timer),
la surveillance du bon droulement du programme (Watchdog Timer),
la surveillance de lalimentation (Brown-Out Detect),
la programmation ICSP,
la protection du code.

Le choix de ces configurations se fait au moment du chargement du programme dans la mmoire Flash :

2.5.1

Mot de configuration

Aussi dnomm Device Fuses , ce mot est stock dans un registre spcial de 14 bits plac ladresse
2007h ; ce registre nest pas accessible par le programme.
CONFIG

2007h

CP1

CP0

CP1

CP0

CPD

LVP

BODEN

MCLRE

FOSC2

PWRTEn

WDTE

FOSC1

bit 13

FOSC0
bit 0

CP0 et CP1
: protection partielle ou totale du code programme
CPD
: protection de la mmoire EEPROM
LVP
: validation de la programmation basse tension
BODEN (Brown-Out Detect Enable) : supervision de lalimentation
MCLRE
: attribution de la broche RA5 en E/S ou pour le reset
PWRTEn (Power-Up Timer Enable) : temporisation la mise sous tension
WDTE (Watchdog Enable) : chien de garde
FOSC[2 :0]
: configuration de lhorloge (8 modes)

Voici un exemple de dclaration de configuration ; les mots cls sont fournis par le fichier p16f628.inc de
MPLAB :
list
p=16f628
#include <p16f628.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _EXTCLK_OSC &
&_MCLRE_ON
;
Code Protection Off
WatchDog dsactiv
;
Brown-Out Detect inhib
;
Power-Up Timer dsactiv
;
External Clock (sans CLKOUT sur RA6)
;
Low Voltage Programming inhib
;
Reset sur RA5/MCLRn
;

_LVP_OFF

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 16

2.5.2

Configuration de lhorloge

Le composant dispose de 8 modes de configuration de lhorloge :

ER (External Resistor) : lhorloge est ralise par un oscillateur de type RC, la capacit est interne au
composant et la rsistance, externe, permet de fixer la frquence dsire ; ce mode existe en 2 variantes
suivant que lon utilise la broche RA6 en E/S ou en sortie dhorloge (CLKOUT)

INTRC (Internal RC) : mme principe que prcdemment mais avec une rsistance interne.

EC : on doit fournir un signal dhorloge au composant (broche RA7)

HS, XT, LP : modes classiques pour un microcontrleur correspondant placer un quartz un


inverseur interne au composant (figure suivante) ; le choix du mode dpend de la frquence de
lhorloge.

Fig. 2.14 : configuration doscillateur HS, XT et LP

2.5.3

Interruptions

Le processeur dispose de 10 sources dinterruption :


Externe : partir de la broche RB0/INT
Dbordement du Timer 0
Changement de ltat des broches RB[7 :4]
Module comparateurs analogiques
USART
Module CCP (Capture/Compare/PWM)
Dbordement du Timer 1
Reconnaissance doccurrence (Match) du Timer 2
Ces interruptions sont masquables individuellement ou par groupe ou encore en totalit ; la gestion est
ralise dans les registres de contrle tels que INTCON, PIE1, PIR1, CMCON .
Chaque source dinterruption est contrle par un Enable et gnre un drapeau (Flag) ; il faut noter que le
drapeau est indpendant de la validation de linterruption concerne. La figure suivante prsente la logique de
gestion des interruptions.
Rveil
(si en mode SLEEP )

TMR1IF
E
TMR2IF
E
CCPI F
E
CMI F
E
TXI F
E
RCI F
E
EEI F
E

T0I F
E
INT F
E
RBIF
E

Interruption
vers le CPU

GIE
PEIE

Fig. 2.15 : Logique de gestion des interruptions


Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 17

Voici un exemple de sous-programme dinterruption dans le quel on sauvegarde le contexte (W et


STATUS), on dtermine la source de linterruption, on la traite et on restaure le contexte avant de retourner au
programme principal :
ORG
MOVWF
SWAPF
MOVWF
BCF
BCF

0x04
W_TEMP
STATUS,W
STATUS_TEMP
STATUS,RP0
INTCON,GIE

; vecteur de dpart des interruptions


; instructions "Pseudo PUSH"
; STATUS_TEMP <- STATUS (swapped)
; banc 0
; inhibition de toutes les interruptions

Recherche de lorigine de linterruption


BTFSC
CALL
BTFSC
CALL
BTFSC
CALL

INTCON,T0IF
SPInt_Timer
PIR1,CMIF
SPInt_Compare
INTCON,RBIF
SPInt_RB

; Dbordement du timer (TMR0)


; comparateur
; Changement sur le Port B[7:4]

Fin de la gestion des interruptions, restauration du contexte et sortie.


BCF
SWAPF
MOVWF
MOVF
RETFIE

STATUS,RP0
; on se place sur le banc 0
STATUS_TEMP,W
; instructions "Pseudo POP"
STATUS
; STATUS <- STATUS_TEMP(swapped)
W_TEMP, W
; W <- W_TEMP
; retour au programme et revalidation de INTCON, GIE

Il ne faut pas oublier que les drapeaux sont toujours actionns, indpendamment de la validation de
linterruption concerne.

2.5.4

Programmation ICSP

La programmation consiste charger le code du programme dans la mmoire Flash et des donnes dans la
mmoire EEPROM Donnes . La technologie de ces mmoires requiert une forte tension (environ 12 Volts)
pour polariser les cellules ; le 16f628 dispose dune circuiterie interne (montage pompage de charge) capable
de gnrer cette tension, on parlera alors de programmation basse tension (LVP : Low Voltage
Programming) ; il est aussi possible de fournir cette haute tension au composant, on se place alors dans le mode
de programmation haute tension (THV) ; le choix du mode est fait par le mot de configuration.
La programmation se fait par liaison srie synchrone ; il faut alors 3 fils pour raliser lopration :
1.
2.
3.

Ligne pour forcer le composant en mode de programmation (RA5 en mode THV ou RB4 pour le mode LVP)
Ligne dhorloge (RB6)
Ligne de donnes (RB7).

Ce principe, dnomm, ICSP (In-Circuit Serial Programming), permet de programmer le composant InSitu cest dire sur la carte de lapplication, par lintermdiaire dun simple connecteur ; il faut toutefois
prendre certaines prcautions en ce qui concerne les branchements au composant :

RA5/MCLRn : cette broche est porte +12 Volts lors de la programmation,


RB6 et RB7 : les composants priphriques ne doivent pas perturber le programmateur,
RB4 doit se trouver ltat bas si lon veut programmer en mode THV.

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Page 18

Bibliographie
Documents techniques MICROCHIP
DS40300B : PIC16f62x Data Sheet
DS30277b : In-Circuit Serial Programming
DS39025e : EEPROM Memory Programming Specification
Livres :
Microcontrleur PIC C. Tavernier, Editions Dunod
Apprendre la programmation des PIC P. Mayeux, Editions Dunod
Sites WEB (en franais) :
http://www.supelec-rennes.fr/ren/fi/elec : pages Suplec
http://www.aurelienr.com/electronique.htm : ralisations base de PIC
http://perso.wanadoo.fr/yves.heilig/ : lectronique et robotique (autour de PIC)

Microcontrleurs PIC (16f628) ; J. WEISS, Suplec Campus de Rennes ; fvrier 2002

Vous aimerez peut-être aussi