Académique Documents
Professionnel Documents
Culture Documents
Cours PIC16F877A PDF
Cours PIC16F877A PDF
SOMMAIRE
1) INTRODUCTION........................................................................................................................................... 4
2) ORGANISATIONS INTERNES..................................................................................................................... 6
2.1) LES CS 16F873 ET 16F876. ................................................................................................................. 6
2.2) LES CS 16F874 ET 16F877. ................................................................................................................. 7
3) DESCRIPTION DES DIFFERENTES BROCHES ........................................................................................ 8
3.1) LES CS 16F873 ET 16F876. ................................................................................................................. 8
3.2) LES CS 16F874 ET 16F877. ................................................................................................................. 9
4) BROCHAGES PHYSIQUES DES DIFFERENTES VERSIONS DE CS. ................................................. 10
1) INTRODUCTION.
Ces microcontrleurs mritent bien une introduction. En effet, ils ont t conus sur une architecture
dite HARVARD (RISC) et non sur un modle VON NEUMANN (COMPLEX).
Larchitecture HARVARD utilise par les microcontrleurs PICS est base sur deux bus de
donnes. Un bus est utilis pour les donnes et un autre pour les instructions.
Avantages et inconvnients.
Architecture VON NEUMANN Architecture HARVARD (RISC)
(MOTOROLA, INTEL, ZILOG, ..) (MICROCHIP PICs)
- Jeu dinstructions riches. - Jeu dinstructions pauvre, mais
- Accs la mmoire facile. facile mmoriser.
- Le codage des instructions est
Avantages facile, chaque instruction est
code sur un mot et dure un cycle
machine.
- Le code est plus compact.
- Le temps pour excuter une - Le jeu dinstruction est trs
instruction est variable. pauvre, par exemple pour
- Le codage des instructions se effectuer une comparaison
Inconvnients
fait sur plusieurs octets. il faut faire une soustraction.
- Les accs aux registres internes
et la mmoire sont trs dlicats.
Remarque : La taille mmoire spcifie pour un PICs sexprime en Kilo Mots (14 bits pour la famille
16F87X) et non en kilo octets. Comme chaque instruction est code par un mot de 14 bits, compares aux
microcontrleurs classiques (1,2 ou 3 octets par instruction), les PICs ont un code plus compact et ils
utilisent moins de mmoire.
Ces microcontrleurs appartiennent la famille des PICs. Le 16 signifie quils font partie de la
famille des 16F de MICROCHIP et le PIC16F876 est une version 28 broches alors que le 16F877 est une
version 40 broches.
Key Features
PICmicro Mid-Range Reference PIC16F873 PIC16F874 PIC16F876 PIC16F877
Manual (DS33023)
Operating Frequency DC - 20 MHz DC - 20 MHz DC - 20 MHz DC - 20 MHz
RESETS (and Delays) POR, BOR POR, BOR POR, BOR POR, BOR
(PWRT, OST) (PWRT, OST) (PWRT, OST) (PWRT, OST)
FLASH Program Memory
4K 4K 8K 8K
(14-bit words)
Data Memory (bytes) 192 192 368 368
EEPROM Data Memory 128 128 256 256
Interrupts 13 14 13 14
I/O Ports Ports A,B,C Ports A,B,C,D,E Ports A,B,C Ports A,B,C,D,E
Timers 3 3 3 3
Capture/Compare/PWM Modules 2 2 2 2
Serial Communications MSSP, USART MSSP, USART MSSP, USART MSSP, USART
Parallel Communications PSP PSP
10-bit Analog-to-Digital Module 5 input channels 8 input channels 5 input channels 8 input channels
Instruction Set 35 instructions 35 instructions 35 instructions 35 instructions
Caractristiques communes :
Programmable sur site ICSP (In Circuit Serial Programming).
Dbuggable sur site ICD.
Frquence de fonctionnement leve, jusqu 20 Mhz.
Une mmoire vive de 192 368 octets.
Une mmoire EEPROM pour sauver des paramtres de 128 256 octets.
Une mmoire morte de type FLASH de 4 Kmots 8 Kmots (1mot = 14 bits).
Chien de garde WDT.
Surveillance d'horloge OST.
Surveillance de tension dalimentation BOR.
De 21 32 Entres et sorties suivant le type de micro contrleur.
Chaque sortie peut sortir un courant maximum de 25mA.
3 Temporisateurs : TIMER0 (8 bits avec pr diviseur), TIMER1 (16 bits avec pr diviseur avec
possibilit dutiliser une horloge externe rseau RC ou QUARTZ) et TIMER2 (8 bits avec pr
diviseur et post diviseur)
2 entres de captures et de comparaison avec PWM (Modulation de largeur dimpulsions).
Convertisseur analogique numrique 10 bits avec de 5 8 entres multiplexes maximum.
Une interface de communication srie asynchrone et synchrone. (USART/SCI).
Une interface de communication srie synchrone. (SSP/SPI et I2C).
Plusieurs modes de fonctionnements faible consommation.
Une seule tension d'alimentation 2 ou 5V.
Conservation des informations en mmoire vive jusqu' 1.5V.
Faible consommation :
<2mA 5V pour Fquartz=4Mhz.
20A 3V pour Fquartz 32Khz.
<1A pour en mode sommeil.
2) ORGANISATIONS INTERNES
2.1) Les Cs 16F873 et 16F876.
Program Data
Device Data Memory
FLASH EEPROM
PIC16F873 4K 192 Bytes 128 Bytes
PIC16F876 8K 368 Bytes 256 Bytes
Synchronous
Data EEPROM CCP1,2 USART
Serial Port
Progr am Data
Device Data Memo ry
FLASH EEPROM
PIC16F874 4K 192 Bytes 128 Bytes
PIC16F877 8K 368 Bytes 256 Bytes
PORTE
RE1/AN6/WR
RE2/AN7/CS
Timer0 Timer1 Timer2 10-bit A/D
Synchronous
Data EEPROM CCP1,2 USART
Serial Port
Remarque : Les 16F873 et 16F874 prsentent peu dintrt par rapport aux
16F876 et 16F877, en effet ils possdent moins de mmoires programmes et
ils sont peu prs au mme prix.
RA3/AN3/VREF+
RA2/AN2/VREF-
MCLR/VPP
RB7/PGD
RB6/PGC
RA1/AN1
RA0/AN0
PLCC
RB5
RB4
NC
NC
6
5
4
3
2
1
44
43
42
41
40
RA4/T0CKI 7 39 RB3/PGM
RA5/AN4/SS 8 38 RB2
RE0/RD/AN5 9 37 RB1
PDIP, SOIC RE1/WR/AN6 10 36 RB0/INT
RE2/CS/AN7 11 PIC16F877 35 VDD
VDD 12 34 VSS
MCLR/VPP 1 28 RB7/PGD VSS 13
PIC16F874 33 RD7/PSP7
27 OSC1/CLKIN 14 32 RD6/PSP6
RA0/AN0 2 RB6/PGC
OSC2/CLKOUT 15 31 RD5/PSP5
RA1/AN1 3 26 RB5 C0/T1OSO/T1CK1 30 RD4/PSP4
16
PIC16F876/873
18
19
20
21
22
23
24
25
26
27
28
RA3/AN3/VREF+ 5 24 RB3/PGM
RA4/T0CKI 6 23 RB2
RA5/AN4/SS 7 22 RB1
VSS 8 21 RB0/INT
RC2/CCP1
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RC1/T1OSI/CCP2
RC3/SCK/SCL
RC5/SDO
RC4/SDI/SDA
NC
RC6/TX/CK
OSC1/CLKIN 9 20 VDD
OSC2/CLKOUT 10 19 VSS
RC0/T1OSO/T1CKI 11 18 RC7/RX/DT
RC1/T1OSI/CCP2 12 17 RC6/TX/CK
RC2/CCP1 13 16 RC5/SDO
RC3/SCK/SCL 14 15 RC4/SDI/SDA
RC1/T1OSI/CCP2
RC3/SCK/SCL
RC4/SDI/SDA
RC6/TX/CK
RC2/CCP1
RD3/PSP3
RD2/PSP2
RD1/PSP1
RD0/PSP0
RC5/SDO
NC
QFP
MCLR/VPP 1 40 RB7/PGD
RA0/AN0 2 39 RB6/PGC
RA1/AN1 3 38 RB5
44
43
42
41
40
39
38
37
36
35
34
RA2/AN2/VREF- 4 37 RB4
RA3/AN3/VREF+ 5 36 RB3/PGM RC7/RX/DT 1 33 NC
RD4/PSP4 2 32 RC0/T1OSO/T1CKI
RA4/T0CKI 6 35 RB2
RD5/PSP5 3 31 OSC2/CLKOUT
RA5/AN4/SS 7 34 RB1 30 OSC1/CLKIN
RD6/PSP6 4
PIC16F877/874
RC0/T1OSO/T1CKI 15 26 RC7/RX/DT
RC1/T1OSI/CCP2 16 25 RC6/TX/CK
RC2/CCP1 17 24 RC5/SDO
RC3/SCK/SCL 18 23 RC4/SDI/SDA
RA3/AN3/VREF+
RD0/PSP0 RD3/PSP3
RB4
RB5
RA0/AN0
RA1/AN1
RB6/PGC
RB7/PGD
NC
NC
MCLR/VPP
19 22
A2/AN2/VREF-
RD1/PSP1 20 21 RD2/PSP2
5) LES BROCHES DU C.
5.1) MCLR.
Cette broche sert initialiser le C .
Le C dispose de plusieurs sources de RESET :
POR.
EXTERNAL RESET.
WDT.
BOR.
POR: (POWER ON RESET) Mise sous tension.
Un front montant sur MCLR dclenche l'initialisation du C. Le temps ncessaire est au
minimum de 72mS et au maximum de 72mS+1024*Tosc. Le C dispose en interne dun
circuit de dtection de niveau, quand la tension VDD est comprise entre 1.2V et 1.7V, il
dmarre une procdure dinitialisation.
Cette broche peut tre simplement relie VDD si on na pas besoin de RESET externe.
Par contre si on souhaite implanter un bouton de remise zro, on pourra cbler un simple
rseau RC sur la broche MCLR.
EXTERNAL RESET (Mise ltat bas de MCLR). Remise zro extrieure. Il faut
appliquer un niveau bas sur l'entre RESET pendant au moins 2S pour que l'Initialisation
soit prise en compte.
MCLR
SLEEP
WDT WDT
Module Time-out
Reset
VDD Rise
Detect
Power-on Reset
VDD
Brown-out
Reset S
BODEN
OST/PWRT
OST
Chip_Reset
10-bit Ripple Counter R Q
OSC1
(1) PWRT
On-chip
RC OSC 10-bit Ripple Counter
Enable PWRT
Enable OST
C1(1) OSC1
TABLE 12-1: CERAMIC RESONATORS
To Ranges Teste d:
Internal
XTAL Logic Mode Freq . OSC1 OSC2
RF(3)
OSC2 XT 455 kHz 68 - 100 pF 68 - 100 pF
SLEEP
Rs (2) 2.0 MHz 15 - 68 pF 15 - 68 pF
C2(1) PIC16F87X 4.0 MHz 15 - 68 pF 15 - 68 pF
HS 8.0 MHz 10 - 68 pF 10 - 68 pF
16.0 MHz 10 - 22 pF 10 - 22 pF
Note 1: See Table 12-1 and Table 12-2 for recom-
mended values of C1 and C2.
TABLE 12-2: CAPACITOR SELECTION FOR
2: A series resistor (Rs ) may be required for AT CRYSTAL OS CILLATOR
strip cut crystals.
3: RF varies with the crystal chosen. Cry stal Cap. Range Cap. Range
Osc Type
Freq . C1 C2
LP 32 kHz 33 pF 33 pF
200 kHz 15 pF 15 pF
XT 200 kHz 47-68 pF 47-68 pF
1 MHz 15 pF 15 pF
4 MHz 15 pF 15 pF
HS 4 MHz 15 pF 15 pF
8 MHz 15-33 pF 15-33 pF
20 MHz 15-33 pF 15-33 pF
Remarque : Les instructions standards durent 1 cycle machine (sauf les instructions de sauts 2
cycles). Le C utilise 4 coups dhorloge pour raliser un cycle machine.
Si la frquence du QUARTZ est de 20MHz( T=50nS) , une instruction sera excute toutes les
200nS, Dans ce cas l, le C a une puissance de calcul de 5MIPS (5 Millions dinstructions par
secondes ! ! !).
La frquence MAX est de 20MHz pour les C dont les rfrences se terminent par -20.
Par exemples : 16F876-20 (20MHz max) et 16F876-04 (4MHz max).
La frquence MIN est le continu.
Remarque : La consommation du circuit sera d'autant plus faible que la frquence sera petite, cela
peut tre intressant pour des applications de faible consommation (alimentation autonome).
Pour des applications faible consommation, on peut utiliser les sries LF (Low Frequency and Low
Power).
6) L'UNIT CENTRALE.
PC<12:0>
CALL, RETURN 13
RETFIE, RETLW
Stack Level 1
Stack Level 2
Stack Level 8
17FFh
1800h
Page 3
1FFFh
Le plan mmoire est linaire les adresses vont de 0000h 1FFFh (8k mots de 14 bits), par page de
2K mots . On peut remarquer, le vecteur de reset est fig en 0000h.
Les PICs nont quun seul vecteur dinterruption en 0004h. Lors dune interruption, le sous
programme associ devra dterminer quel priphrique a demand une interruption.
La pile utilise par les sous programmes nest pas implante en mmoire de donne comme avec
les microcontrleurs classiques, mais dans la mmoire programme. Elles sont utilises lors dappels de
sous programmes, on ne peut pas imbriquer plus de 8 sous programmes (Ce qui est dj beaucoup ! !).
6.1.2) Plan Mmoire pour les donnes et registres internes (SFR : Special
Function Register).
Le plan mmoire des donnes et des registres internes est dcoup en 4 zones ou bank de 128
octets, pour accder une zone il faut positionner les bits RP0 (bit 5) et RP1 (bit 6) du registre STATUS.
Indirect addr.(*) 00h Indirect addr.(*) 80h Indirect addr.(*) 100h Indirect addr.(*) 180h
TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h
PCL 02h PCL 82h PCL 102h PCL 182h
STATUS 03h STATUS 83h STATUS 103h STATUS 183h
FSR 04h FSR 84h FSR 104h FSR 184h
PORTA 05h TRISA 85h 105h 185h
PORTB 06h TRISB 86h PORTB 106h TRISB 186h
PORTC 07h TRISC 87h 107h 187h
PORTD(1) 08h TRISD(1) 88h 108h 188h
PORTE(1) 09h TRISE(1) 89h 109h 189h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah
INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh
PIR1 0Ch PIE1 8Ch EEDATA 10Ch EECON1 18Ch
PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2 18Dh
TMR1L 0Eh PCON 8Eh EEDATH 10Eh Reserved(2) 18Eh
TMR1H 0Fh 8Fh EEADRH 10Fh Reserved(2) 18Fh
T1CON 10h 90h 110h 190h
TMR2 11h SSPCON2 91h 111h 191h
T2CON 12h PR2 92h 112h 192h
SSPBUF 13h SSPADD 93h 113h 193h
SSPCON 14h SSPSTAT 94h 114h 194h
CCPR1L 15h 95h 115h 195h
CCPR1H 16h 96h 116h 196h
CCP1CON 17h 97h General 117h General 197h
Purpose Purpose
RCSTA 18h TXSTA 98h Register 118h Register 198h
TXREG 19h SPBRG 99h 16 Bytes 119h 16 Bytes 199h
RCREG 1Ah 9Ah 11Ah 19Ah
CCPR2L 1Bh 9Bh 11Bh 19Bh
CCPR2H 1Ch 9Ch 11Ch 19Ch
CCP2CON 1Dh 9Dh 11Dh 19Dh
ADRESH 1Eh ADRESL 9Eh 11Eh 19Eh
ADCON0 1Fh ADCON1 9Fh 11Fh 19Fh
20h A0h 120h 1A0h
Les registres appels General Purpose Register ne sont ni plus ni moins que des cases mmoires pour
stocker les donnes.
Pourquoi les concepteurs des PICs ont t obligs de scinder en 4 banques mmoires ?
Ladresse des donnes est code sur 7 bits, donc les adresses vont de 00h 7Fh. Les 2 bits RP0 et RP1
sont 2 bits dadresses supplmentaires et extrieurs, ce qui porte 29 adresses possibles ou 512 registres.
En conclusion, la gestion de la mmoire avec les PICs nest pas trs facile, la programmation
demande de la rigueur.
La programmation des PICs avec des langages de hauts niveaux tels que BASIC, PASCAL et
langage C permet de saffranchir de la gestion des pages mmoires.
- Dun accumulateur 8 bits W : WORKING (travail), cest lui qui effectue toutes les oprations arithmtiques
et logiques.
bit 7 IRP: Register Bank Select bit (used for indirect addressing)
1 = Bank 2, 3 (100h - 1FFh)
0 = Bank 0, 1 (00h - FFh)
bit 6-5 RP1:RP0: Register Bank Select bits (used for direct addressing)
11 = Bank 3 (180h - 1FFh)
10 = Bank 2 (100h - 17Fh)
01 = Bank 1 (80h - FFh)
00 = Bank 0 (00h - 7Fh)
Each bank is 128 bytes
bit 4 TO: Time-out bit
1 = After power-up, CLRWDTinstruction, or SLEEP instruction
0 = A WDT time-out occurred
bit 3 PD: Power-down bit
1 = After power-up or by the CLRWDT instruction
0 = By execution of the SLEEP instruction
bit 2 Z: Zero bit
1 = The result of an arithmetic or logic operation is zero
0 = The result of an arithmetic or logic operation is not zero
bit 1 DC: Digit carry/borrow bit (ADDWF , ADDLW,SUBLW,SUBWF instructions)
(for borrow, the polarity is reversed)
1 = A carry-out from the 4th low order bit of the result occurred
0 = No carry-out from the 4th low order bit of the result
bit 0 C: Carry/borrow bit (ADDWF , ADDLW,SUBLW,SUBWFinstructions)
1 = A carry-out from the Most Significant bit of the result occurred
0 = No carry-out from the Most Significant bit of the result occurred
Note : For borrow, the polarity is reversed. A subtraction is executed by adding the twos
complement of the second operand. For rotate (RRF, RLF ) instructions, this bit is
loaded with either the high, or low order bit of the source register.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
- n = Value at POR 1 = Bit is set 0 = Bit is cleared x = Bit is unknown
7) JEU D'INSTRUCTIONS.
Remarque: toutes les instructions ne durent quun seul cycle machine, sauf les instructions de sauts tels
que GOTO, CALL.
8.1.2) Syntaxe.
MNEMONIQUE
8.1.3) Exemples.
CLRW ; Mise zro de W
NOP ; aucune opration (temporisation)
SLEEP ; Mise en sommeil du C
8.2.2) Syntaxe.
MNEMONIQUE constante
8.2.3) Exemples.
MOVLW 255 ; charge 0xFF dans W
ADDLW 0x20 ; additionne 32 avec W et met le rsultat dans W
8.3.2) Syntaxe.
MNEMONIQUE f,d
d=0 Registre W comme destination (WORKING)
d=1 Registre f comme destination (un des registers SFR)
8.3.3) Exemple.
PORTB EQU 0x06
VARIABLE EQU 0x20 ; page 0
8.4.2) Syntaxe.
MNEMONIQUE Adresse
2) Les sauts dans une page mmoire diffrente, dans ce cas il faut positionner correctement les
bits 4 et 3 du registre PCLATCH, pour accder la bonne page mmoire.
BSF PCLATCH,3 ; 1 et 1 Slection de la BANK 3 de 1800h 1FFFh
BSF PCLATCH,4
CALL CONV
En effet pourquoi PCLATCH et pas PCH ? PCH nest pas accessible directement il faut
passer par PCLATCH pour que les bits 4 et 3 de celui-ci soient recopis dans PCH.
PCH PCL
12 11 10 8 7 0
PC GOTO,CALL
PCLATH<4:3> 11
2 Opcode <10:0>
PCLATH
Remarque : Pour le retour de sous programme, il nest pas ncessaire de ce proccuper de ces bits
car la valeur du PC est mmorise sur 13 bits dans la pile.
8.5.3) Exemple.
PORTB <- TAB_VAL[4]
Rcuprer le 4me lment dune table TAB_VAL ;
8.6.1.2) Syntaxe.
BSF f,b pour mettre 1
ou BCF f,b pour mettre 0
8.6.1.3) Exemples.
8.6.2.2) Syntaxe.
BTFSS f,b
ou BTFSC f,b
8.6.2.3) Exemple.
9.1) Gnralits.
Le C dispose de 3 PORTS (A,B et C) pour le 16F876 et 5 PORTS (A,B,C,D et E) pour le 16F877.
Tous les ports dentres sorties Input/ Output sont bidirectionnels.
Le PORT B (8 bits) I/O pure et/ou programmation in situ ICSP/ICD (Broche RB3/PGM,
RB6/PGC et RB7/PGD) et lentre dinterruption externe RB0/INT.
Remarque : Si le PIC est utilis en mode ICSP/ICD il faut laisser libre les broches
RB3/PGM, RB6/PGC ainsi que RB7/PGD) et les configurer en entre.
Le PORT C (8 bits) I/O pure et/ou TIMER 1 et/ou SPI / I2C et/ou USART.
Le PORT D (8 bits) I/O pure et/ou port parallle 8 bits associ au PORT E.
Le PORT E (3 bits) I/O pure et/ou pilotage du PORT E RE0/RD, RE1/WR et RE2/CS.
Toutes les lignes de PORTs peuvent fournir un courant de 25mA par ligne de PORT. Une limite de
40mA par PORT doit tre respecte pour des questions de dissipation.
PORTD PORTE
RD0/PSP0
RD1/PSP1 RE0/AN5/RD
RD2/PSP2 RE1/AN6/WR
RD3/PSP3
RD4/PSP4 RE2/AN7/CS
RD5/PSP5
RD6/PSP6
RD7/PSP7
SENS NC NC S E S S S E
PORTA NC NC RA5 RA4 RA3 RA2 RA1 RA0
SENS E E S S E S S E
PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RBO
Programme en assembleur.
Remarque toutes les lignes de sorties des PORTs sont mises zro.
.
.
9.3) Le PORT A.
Le PORT A (5 bits) I/O pure et/ou convertisseur analogique et/ou TIMER 0.
Attention PA4 (Entre du TIMER 0 T0CKI), elle est de type DRAIN OUVERT.
RD Q D
TRIS TTL
Input ENEN
Buffer
Q D RD Port
To A/D Converter
PORTA FUNCTIONS
9.3) Le PORT B.
Le PORT B dispose de (8 bits) I/O pure et/ou programmation in situ ICSP/ICD (Broche
RB3/PGM, RB6/PGC et RB7/PGD) et une entre dinterruption externe RB0/INT.
Il dispose de deux fonctions spciales :
- La premire cest la possibilit de configurer toutes ses lignes avec une rsistance de
PULL-UP en configurant le bit RBPU 0 du registre OPTION.
- La deuxime, cest la possibilit de gnrer une interruption sur un changement dtat des
broches RB4 RB7. Cest trs pratique pour la gestion des claviers matrics.
Schmitt Trigger Q D
RD Port
Buffer From other RD Port
RB7:RB4 pins EN
Note 1: I/O pins have diode protection to VDD and VSS. Q3
2: To enable weak pull-ups, set the appropriate TRIS RB7:RB6
bit(s) and clear the RBPU bit (OPTION_REG<7>). In Serial Programming Mode
PORTB FUNCTIONS
RB0/INT bit0 TTL/ST(1) Input/output pin or external interrupt input. Internal software
programmable weak pull-up.
RB1 bit1 TTL Input/output pin. Internal software programmable weak pull-up.
RB2 bit2 TTL Input/output pin. Internal software programmable weak pull-up.
RB3/PGM(3) bit3 TTL Input/output pin or programming pin in LVP mode. Internal software
programmable weak pull-up.
RB4 bit4 TTL Input/output pin (with interrupt-on-change). Internal software programmable
weak pull-up.
RB5 bit5 TTL Input/output pin (with interrupt-on-change). Internal software programmable
weak pull-up.
RB6/PGC bit6 TTL/ST(2) Input/output pin (with interrupt-on-change) or In-Circuit Debugger pin.
Internal software programmable weak pull-up. Serial programming clock.
RB7/PGD bit7 TTL/ST(2) Input/output pin (with interrupt-on-change) or In-Circuit Debugger pin.
Internal software programmable weak pull-up. Serial programming data.
Legend: TTL = TTL input, ST = Schmitt Trigger input
Note 1: This buffer is a Schmitt Trigger input when configured as the external interrupt.
2: This buffer is a Schmitt Trigger input when used in Serial Programming mode.
3: Low Voltage ICSP Programming (LVP) is enabled by default, which disables the RB3 I/O function. LVP
must be disabled to enable RB3 as an I/O pin and allow maximum compatibility to the other 28-pin and
40-pin mid-range devices.
SUMMARY OF REGISTERS ASSOCIATED WITH PORTB
9.4) Le PORT C.
Le PORT C (8 bits) I/O pure quil partage avec le TIMER 1, la liaison SPI / I2C et lUSART.
1
Note 1: I/O pins have diode protection to VDD and VSS.
CKE
2: Port/Peripheral select signal selects between port
data and peripheral output. SSPSTAT<6>
3: Peripheral OE (output enable) is only activated if
peripheral select is active. Note 1 : I/O pins have diode protection to VDD and VSS.
2: Port/Peripheral select signal selects between port data
and peripheral output.
3: Peripheral OE (output enable) is only activated if
peripheral select is active.
PORTC FUNCTIONS
07h PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx uuuu uuuu
87h TRISC PORTC Data Direction Register 1111 1111 1111 1111
Legend: x = unknown, u = unchanged
Le PORT D (8 bits) I/O et PORT E (3 bits) utilisent la mme type structure interne.
Data Data Latch I/O pin (1) Name Bit# Buffe r Type Functi on
Bus D Q
RD0/PSP0 bit0 ST/TTL(1) Input/output port pin or parallel slave port bit0.
WR
Port RD1/PSP1 bit1 ST/TTL(1) Input/output port pin or parallel slave port bit1.
CK
RD2/PSP2 bit2 ST/TTL(1) Input/output port pin or parallel slave port bit2.
TRIS Latch RD3/PSP3 bit3 ST/TTL(1) Input/output port pin or parallel slave port bit3.
D Q
RD4/PSP4 bit4 ST/TTL(1) Input/output port pin or parallel slave port bit4.
WR
TRIS
CK Schmitt RD5/PSP5 bit5 ST/TTL(1) Input/output port pin or parallel slave port bit5.
Trigger
Input RD6/PSP6 bit6 ST/TTL(1) Input/output port pin or parallel slave port bit6.
Buffer RD7/PSP7 bit7 ST/TTL(1) Input/output port pin or parallel slave port bit7.
RD Legend: ST = Schmitt Trigger input, TTL = TTL input
TRIS
Note 1: Input buffers are Schmitt Triggers when in I/O mode and TTL buffers when in Parallel Slave Port mode.
Q D
ENEN
SUMMARY OF REGISTERS ASSOCIATED WITH PORTD
RD Port Value on: Value on
Addre ss Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR, all o ther
Note 1: I/O pins have protection diodes to VDD and VSS. BOR RESETS
08h PORTD RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 xxxx xxxx uuuu uuuu
88h TRISD PORTD Data Direction Register 1111 1111 1111 1111
89h TRISE IBF OBF IBOV PSPMODE PORTE Data Direction Bits 0000 -111 0000 -111
PORTE BLOCK DIAGRAM Legend: x = unknown, u = unchanged, - = unimplemented, read as '0'. Shaded cells are not used by PORTD.
(IN I/O PORT MODE) PORTE FUNCTIONS
(1)
Name Bit# Buffe r Type Func tion
Data Data Latch I/O pin
Bus D Q
I/O port pin or read control input in Parallel Slave Port mode or analog input:
WR
RD
Port RE0/RD/AN5 bit0 ST/TTL(1) 1 = Idle
CK
0 = Read operation. Contents of PORTD register are output to PORTD
TRIS Latch I/O pins (if chip selected)
D Q I/O port pin or write control input in Parallel Slave Port mode or analog input:
WR WR
TRIS (1)
CK Schmitt RE1/WR/AN6 bit1 ST/TTL 1 = Idle
Trigger
Input
0 = Write operation. Value of PORTD I/O pins is latched into PORTD
Buffer register (if chip selected)
RD I/O port pin or chip select control input in Parallel Slave Port mode or analog input:
TRIS
CS
RE2/CS/AN7 bit2 ST/TTL(1)
1 = Device is not selected
Q D 0 = Device is selected
Legend: ST = Schmitt Trigger input, TTL = TTL input
ENEN Note 1: Input buffers are Schmitt Triggers when in I/O mode and TTL buffers when in Parallel Slave Port mode.
RD Port
111
RE2/AN7(1)
110
RE1/AN6(1)
101
RE0/AN5(1)
100
RA5/AN4
VAIN
(Input Voltage) 011
RA3/AN3/VREF+
010
A/D RA2/AN2/VREF-
Converter
001
RA1/AN1
VDD 000
RA0/AN0
VREF+
(Reference
Voltage)
PCFG3:PCFG0
VREF-
(Reference
Voltage)
VSS
PCFG3:PCFG0
Remarque : Les entres analogiques RE1/AN5, RE2/AN6 et RE3/AN2 sont disponibles avec les PICs
16F877 et 16F874.
De plus la broche RA4 nest pas concerne pas le convertisseur.
Une conversion commence toujours par la mise 1 du bit GO/DONE du registre ADCON0. Lorsque
la conversion est termine se bit repasse 0.
Donc pour pouvoir lire le rsultat dans les registres ADRESL et ADRESH il suffit dattendre que le
bit GO/DONE passe 0.
TCY to TAD TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD9 TAD10 TAD11
b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
Conversion starts
Set GO bit
ADRES is loaded
GO bit is cleared
ADIF bit is set
Holding capacitor is connected to analog input
PCFG3: AN 7(1) AN6 (1) AN5 (1) AN4 AN3 AN 2 AN1 AN0 CHAN/
VREF+ VREF-
PCFG0 RE2 RE1 RE0 RA5 RA3 RA 2 RA1 RA0 Refs (2)
0000 A A A A A A A A VDD VSS 8/0
0001 A A A A VREF+ A A A RA3 VSS 7/1
0010 D D D A A A A A VDD VSS 5/0
0011 D D D A VREF+ A A A RA3 VSS 4/1
0100 D D D D A D A A VDD VSS 3/0
0101 D D D D VREF+ D A A RA3 VSS 2/1
011x D D D D D D D D VDD VSS 0/0
1000 A A A A VREF+ VREF- A A RA3 RA2 6/2
1001 D D A A A A A A VDD VSS 6/0
1010 D D A A VREF+ A A A RA3 VSS 5/1
1011 D D A A VREF+ VREF- A A RA3 RA2 4/2
1100 D D D A VREF+ VREF- A A RA3 RA2 3/2
1101 D D D D VREF+ VREF- A A RA3 RA2 2/2
1110 D D D D D D D A VDD VSS 1/0
1111 D D D D VREF+ VREF- D A RA3 RA2 1/2
A = Analog input D = Digital I/O
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
- n = Value at POR 1 = Bit is set 0 = Bit is cleared x = Bit is unknown
De plus le bit ADFM permet de choisir entre deux types de justification pour le rsultat.
- Si ADFM=1 alors le rsultat sera justifi droite dans les registre ADRESH et ADRESL, c'est-
-dire ARESL contient les bits 7 0 du rsultat de la conversion et ADRESH contient 6 zros
suivi des bit 9 et 8 du rsultat de la conversion.
- Si ADFM=0 alors le rsultat sera justifi gauche, c'est--dire ARESH contient les bits 9 2 du
rsultat de la conversion et ADRESH contient les bit 1 et 0 du rsultat de la conversion suivi de
6 zros.
A/D RESULT JUSTIFICATION
10-bit Result
ADFM = 1 ADFM = 0
7 2107 0 7 0765 0
0000 00 0000 00
Remarque : Lors de la mise en fonctionnement du CAN par le bit ADON, Le bit GO/DONE ne doit pas tre
modifi en mme temps, c'est--dire dans la mme instruction. .
Legend:
R = R eadable bit W = Writable bit U = Unimplemented bit, read as 0
- n = Value at POR 1 = Bit is set 0 = Bit is cleared x = Bit is unknown
Le choix de lhorloge est dtermin par les bit ADCS1 et ADCS0, sachant que le temps TAD doit tre au
minimum de 1,6S.
Programme en assembleur.
Remarque : Toutes les lignes de sorties des PORTs sont mises zro.
Tous ces timers peuvent dclencher une interruption interne, si ils ont t autoriss.
11.1) Le timer 0.
11.1.1) Prsentation :
Cest le plus ancien des timers implants dans les PICs, son ancienne appellation tait RTC, pour
Real Time Clock (horloge temps relle). On peut se servir de celui-ci pour gnrer des vnements
priodiques, comme le rafrachissement dafficheurs multiplexs ou lincrmentation de variables (secondes,
minutes . ).
Celui-ci est incrment soit par lhorloge interne (Fosc/4) ou par une horloge applique sur la
broche
TOCKI/ RA4 .
8
M 1
0
RA4/T0CKI U M
X SYNC
pin U 2 TMR0 Reg
1 0
X Cycles
T0SE
T0CS
PSA Set Flag Bit T0IF
on Overflow
PRESCALER
0
M 8-bit Prescaler
U
Watchdog 1 X 8
Timer
8 - to - 1MUX PS2:PS0
PSA
0 1
WDT Enable bit
MUX PSA
WDT
Time-out
Comme on peut le constater sur ce schma le timer 0 partage avec le chien de garde Watchdog le pr
diviseur. Celui-ci est affect lun ou lautre, suivant la valeur du bit PSA (0 : Timer0 et 1 : chien de
garde).
Data bus
FOSC/4 0
PSout 8
1
Sync with
1 Internal TMR0
clocks
T0CKI pin Programmable 0 PSout
Prescaler
T0SE (2 cycle delay)
3
Set interrupt
PS2, PS1, PS0 PSA ag bit T0IF
T0CS on overow
11.1.2) Fonctionnement :
Le bit T0CS permet de choisir lhorloge, interne (Fosc/4) ou externe T0CKI/RA4. Dans ce dernier cas
lincrmentation du timer 0 peut se faire soit sur front montant ou descendant suivant la valeur du bit T0SE.
Le bit PSA de choisir si horloge permet de pr diviser lhorloge dun rapport allant de 2 256. La valeur de
pr division est fixe par les bits PS2, PS1 et PS0.
Quand le contenu du timer 0 passe de FF 00 le bit T0IF passe 1 pour signaler un dbordement, si le bit
T0IE est 1 alors une interruption timer 0 est dclenche.
Le contenu du timer 0 peut tre modifi tout instant, une condition prs, la nouvelle valeur inscrite dans
le registre TMR0 sera prise en compte aprs 3 cycles machines.
Remarque importante : Lorsque le bit T0IF passe 1 lors du passage de la valeur FFh 00h du registre
TMR0, il doit tre remis 0 de faon logicielle par une instruction du type : bcf INTCON,T0IF
bit 7 RBPU
bit 6 INTEDG
bit 5 T0CS: TMR0 Clock Source Select bit
1 = Transition on T0CKI pin
0 = Internal instruction cycle clock (CLKOUT)
bit 4 T0SE: TMR0 Source Edge Select bit
1 = Increment on high-to-low transition on T0CKI pin
0 = Increment on low-to-high transition on T0CKI pin
bit 3 PSA: Prescaler Assignment bit
1 = Prescaler is assigned to the WDT
0 = Prescaler is assigned to the Timer0 module
bit 2-0 PS2:PS0: Prescaler Rate Select bits
Bit Value TMR0 Rate WDT Rate
00 0 1 : 2 1 : 1
00 1 1 : 4 1 : 2
01 0 1 : 8 1 : 4
01 1 1 : 16 1 : 8
10 0 1 : 32 1 : 16
10 1 1 : 64 1 : 32
11 0 1 : 128 1 : 64
11 1 1 : 256 1 : 128
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
- n = Value at POR 1 = Bit is set 0 = Bit is cleared x = Bit is unknown
11.2) Le timer 1.
11.2.1) Prsentation :
Il fonctionne sur le mme principe que le timer 0, mais il est plus moderne dans sa conception. Cest un
compteur 16 bits.
Note 1: When the T1OSCEN bit is cleared, the inverter is turned off. This eliminates power drain.
11.2.2) Fonctionnement :
Le bit TMR1CS permet de choisir lhorloge soit interne (Fosc/4), externe T1CKI ou un oscillateur quartz
connect sur les broches T1OSO et T1OSI.
Les bits T1CKPS1 et T1CKPS0 permettent de choisir la valeur de la pr division appliquer lhorloge
choisie, de 1 8.
Le bit T1SYNC permet de choisir si lhorloge de sortie du pr diviseur doit tre synchrone avec lhorloge du
microcontrleur. Dans le cas o lon choisit lhorloge interne Fosc/4, il nest pas ncessaire de la
synchroniser.
Le bit TMR1ON active ou dsactive le timer 1. Si ce bit est 1 alors le timer 1 est en fonctionnement et les
registres TMR1H :TMR1L sont incrments chaque coup dhorloge.
Quand le contenu du timer 1 passe de FFFF 0000 le bit TMR1IF passe 1 pour signaler un dbordement,
de plus si le bit TMR1IE est 1 alors une interruption timer 1 est dclenche.
Remarque importante : Lorsque le bit TMR1IF passe 1 lors du passage de la valeur FFFF 0000 des
registres TMR1H :TMR1L, il doit tre remis 0 de faon logicielle par une instruction du type :
bcf PIR1,TMR1IF
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
- n = Value at POR 1 = Bit is set 0 = Bit is cleared x = Bit is unknown
11.3) Le timer 2.
11.3.1) Prsentation :
Cest un timer 8 bits, son horloge ne peut tre que lhorloge interne divise par 4 (Fosc/4)
RESET Prescaler
TMR2 Reg FOSC/4
1:1, 1:4, 1:16
Postscaler 2
Comparator
1:1 to 1:16 EQ
T2CKPS1:
4 PR2 Reg T2CKPS0
T2OUTPS3:
T2OUTPS0
11.3.2) Fonctionnement :
Il est incrment par lhorloge interne (Fosc/4) pr divise ou non. Les bits T2CKPS1 et T2KPS0
permettent de choisir la valeur de la pr division (1,4 ou 16).
Le contenu du registre incrment TMR2 et il est compar au registre PR2, si ces deux registres sont gaux
alors une impulsion dhorloge est gnre et le contenu de TMR2 est remis 00h. Celle-ci peut servir
dhorloge pour piloter les liaisons I2C et SPI du module SSP ou encore tre divise par un post diviseur
appel : POSTSCALER.
Son rapport de division peut tre de 1 16. Les bits T2OUTPS0, T2OUTPS1, T2OUTPS2, et T2OUTPS3,
permettent de choisir la valeur de la post division 1, 2, 3, 4, 5 . 16.
Quand la sortie du post diviseur passe 1 le bit TMR2IF est positionn, celui-ci peut dclencher une
interruption si celle-ci a t autorise (Bit TMR2IE 1 du registre PIE1).
Remarque importante : Lorsque le bit TMR2IF passe 1 lorsquune impulsion est gnre en sortie du
POSTSCALER, il doit tre remis 0 de faon logicielle par une instruction du type : bcf PIR1,TMR2IF
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
- n = Value at POR 1 = Bit is set 0 = Bit is cleared x = Bit is unknown
Ces modules sont associs aux broches RC2/CCP1 et RC1/T1OSI/CCP2. Suivant le mode choisit, les
timers 1 ou 2 vont tre utiliss. Les modes Capture et Comparaison utilise le timer 1, tandis que le mode
PWM utilise le timer 2.
and Capture
edge detect Enable
TMR1H TMR1L
CCPxCON<3:0>
Q
s
12.1) Prsentation :
Remarque : La liaison USART du PIC peut fonctionner soit en mode synchrone ou asynchrone,
seul le mode asynchrone sera tudi.
La liaison srie SCI est une interface srie asynchrone de type START / STOP. Elle permet
d'effectuer des communications avec d'autres systmes ou objets techniques sur de longues distances
(quelques mtres quelques kilomtres).
12.2) La transmission :
12.2.1) Prsentation :
12.2.2) Fonctionnement :
Write to TXREG
Word 1
BRG Output
(Shift Clock)
RC6/TX/CK (pin)
START Bit Bit 0 Bit 1 Bit 7/8 STOP Bit
Word 1
TXIF bit
(Transmit Buffer
Reg. Empty Flag)
Cette fonction utilise un registre dcalage pour transmettre les 8 ou 9 bits de linformation du
registre TXREG.
Pour que cette fonction soit oprationnelle, il faut que la broche RC6 du PORTC soit configure en
sortie, positionner 1 le bit SPEN du registre RCSTA et le bit TXEN du registre TXSTA.
Dans le cas o lon utilise une transmission sur 9 bits (Bit de parit par exemple), il faut autoriser la
transmission sur 9 bits via le bit TX9 du registre TXSTA, la valeur du neuvime bit doit tre mise dans le bit
TX9D du registre TXSTA.
Avant de transmettre une information, il faut sassurer que le registre de transmission soit libre
travers le bit TXIF (1 libre et 0 occupe). Le bit TMRT du registre TXSTA indique si la transmission est
compltement termine (1 termine et 0 occupe).
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
- n = Value at POR 1 = Bit is set 0 = Bit is cleared x = Bit is unknown
12.3) La rception :
12.3.1) Prsentation :
RC7/RX/DT
Pin Buffer Data
and Control Recovery RX9
Interrupt RCIF
Data Bus
RCIE
12.3.2) Fonctionnement :
ASYNCHRONOUS RECEPTION
RCIF
(Interrupt Flag)
OERR bit
CREN
Note: This timing diagram shows three words appearing on the RX input. The RCREG (receive buffer) is read after the third word,
causing the OERR (overrun) bit to be set.
Cette fonction utilise un registre RSR dcalage pour les 8 ou 9 bits de linformation recevoir, une
fois la rception termine la valeur est stocke dans le registre RCREG.
Pour que cette fonction soit oprationnelle, il faut que la broche RC7 du PORTC soit configure en
entre et positionne 1 le bit SPEN du registre RCSTA.
Dans le cas ou lon utilise une rception sur 9 bits, il faut autoriser la rception sur 9 bits via le bit
RX9 du registre RCSTA, la valeur du neuvime bit est rcupre dans le bit RX9D du registre RCSTA.
Avant de lire une information dans le registre RCREG, il faut sassurer que linformation est bien
reue en testant le bit RCIF (1 Donne reue), ce bit est remis 0 lors de la lecture du registre RCREG.
Les bits FERR et OERR peuvent indiquer respectivement une erreur de format et une erreur over
run .
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
- n = Value at POR 1 = Bit is set 0 = Bit is cleared x = Bit is unknown
Tableaux de vitesses :
BAUD R ATES FOR AS YNCHRONOUS MODE (BRGH = 0)
INTERRUPT LOGIC
EEIF
EEIE
PSPIF
PSPIE
ADIF Wake-up (If in SLEEP mode)
T0IF
ADIE T0IE
RCIF INTF
RCIE INTE
Interrupt to CPU
TXIF RBIF
TXIE RBIE
SSPIF
SSPIE
PEIE
CCP1IF
CCP1IE GIE
TMR2IF
TMR2IE
TMR1IF
TMR1IE
CCP2IF
CCP2IE
BCLIF
BCLIE
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
OSC1
CLKOUT 3
4
INT pin
1
1
INTF ag 5 Interrupt Latency 2
(INTCON<1>)
GIE bit
(INTCON<7>)
INSTRUCTION FLOW
PC PC PC+1 PC+1 0004h 0005h
Instruction
fetched Inst (PC) Inst (PC+1) Inst (0004h) Inst (0005h)
- Le registre INTCON permet dautoriser les interruptions globales (GIE), les interruptions des priphriques
(PEIE), Linterruption TIMER0 (T0IE), linterruption extrieure (INT/RB0), linterruption de changement dtat
du PORTB (RBIE) et les indicateurs associs des interruptions (TIMER0, INT/RB0 et du changement dtat
du PORTB : RBIF).
INTCON REGISTER (ADDRESS 0Bh, 8Bh, 10Bh, 1 8Bh)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-x
GIE PEIE T0IE INTE RBIE T0IF INTF RBIF
bit 7 bit 0