Professional Documents
Culture Documents
Mmoire programme
4k
1k
Que valent m et n ?
Mmoire donnes
SFR Special Function Registers Banc de registres
68 octets 16F84 2x96=192 octets 16F873 sur 4 banques dont deux identiques.
Banque 0
SFR Special Function Registers Banc de registres
Banque 1
Banc de registres
File RAM
68 octets 16F84 Identique
RAM
b7 b6 b 5 b4 b3 b 2 b1 b0 b7 b6 b5 b4 b3 b2 b1 b0
Registre de travail W
b7 b6 b 5 b4 b3 b2 b1 b0
Compteur programme
b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
File
Pointeur de pile
RAM
b7 b6 b 5 b4 b3 b 2 b1 b0
Status IRP RP1 RP0
b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
8 niveaux
/TO /PD Z
DC C
L'instruction MOVLW
Mnmonique Oprande MOVLW K 11 00xx kkkk kkkk
Mmoire programme
Registre de travail
1
1 0 0 0 0 1 0 0 1 1 1 1 0
16F84
b7 b6 b 5 b4 b3 b 2 b1 b0
Dsassembler Les deux autres instructions MOV N'importe o dans File MOVF f,d 00 1000 dfff ffff
d=1
Registre de travail
b7 b6 b 5 b4 b3 b 2 b1 b0
Positionne Z de STATUS
MOVWF f
RAM
b7 b6 b 5 b4 b3 b 2 b1 b0
Data bus
Instruction register
5 direct Addr
TMR0
MOVLW K
Power-up Timer Oscillator startup Timer Power-on Reset Watchdog Timer
PORTA
MUX
I/0 Ports
RA3 ..RA0
ALU
RB7 ..RB1
MOVWF f
RB0/INT
PORTB
ACC W
OSC2/CLKOUT OSC1/CLKIN
MCLR
OSC2/CLKOUT OSC1/CLKIN
Architecture du 16F84A
PIC16F
b5 b4 b3 b2 b1 b0
TRISA
b7 b6 b5 b4 b3 b2 b1 b0
PORTA
Deux ports : - PORTA 5 bits RA0 -> RA4 -PORTB 8 bits RB0 -> RB7
Les PORTs du PIC 16F887 Cinq ports : - PORTA 8 bits RA0 -> RA7 - PORTB 8 bits RB0 -> RB7 - PORTC 8 bits RC0 -> RC7 - PORTD 8 bits RD0 -> RD7 - PORTE 2 bits RE0 -> RE2
MCLR RB7 RA0 RB6 RA1 RB5 RA2 RB4 RA3 RB3 RA4 RB2 RA5 RB1 RE0 RB0 RE1 Vcc RE2 GND VCCPIC16FRD7 GND RD6 RA7 RD5 RA6 RD4 RC0 RC7 RC1 RC6 RC2 RC5 RC3 RC4 RD0 RD3 RD1 RD2
Les modles lectriques des PORTs V (V) 5 OH 4 3 2 1 0 5 10 15 IOH (mA) 20 25 min max typ
10
15 IOL (mA)
20
25
IOH
IOL
Sortie haute
Rth
56<Rth<180
R'th 16<R'th<36
Sortie basse
UHth = 5V
ULth=0V
On prendra toujours Rth =100 Aprs avoir dtermin les modles de Thvenin des PORTs on s'intresse maintenant aux rsistances de tirage.
PORT
b7 b6 b5 b4 b3 b2 b1 b0
PIC 16FXXX
(16) OSC1 RF
RS
C2=22pF (17) OSC2
PIC 16F
UD ou U0 : tension de seuil Si UD inconnue prendre 1,8V. RD : rsistance dynamique Si RD inconnue prendre 0. Vcc R1 Micro-contrleur IE PA1 Micro-contrleur comme puits de courant
PA1
R1
IS
ATTENTION les ports ne sont pas forcment symtriques : IS peut tre diffrent de IE. Pour information VOH=4V pour ID=10mA et V0L = 0,4V pour ID=10mA pour le PIC 16F84. Calculer les modles de Thvenin correspondants. Si on ne connait rien on prend VD = 1,8V et V0L = 0V et VOH=Vcc. Calcul de R1 Source de courant : R1= (VOH-VD) /ID avec VD tension directe de la diode et VOH tension haute du port. Puits de courant : R1= (Vcc-VD-V0L) /ID avec V0L tension basse du port Exemple : Kingbright led rouge 10mA l=627nm 15mcd 10mA VD = 1,95V Kingbright led vert 10mA l=565nm 12mcd 10mA VD = 2,09V Pour information les rsistances utilises sur EasyPIC5 sont de 1k.
Pour gnraliser l'utilisation des LEDs, on peut s'intresser aux afficheurs sept segments a g a b g
Anode commune
Cathode commune
Comment allume-t-on un afficheur anode commune, un afficheur cathode commune ? Multiplexage de plusieurs afficheurs : 290 DC5611EWACommonCathode a b c d e f g 1k a f e d g c b
PIC 16F877A
RB0 RB1
1k
EasyPIC5
MCLR RB7 RA0 RB6 RA1 RB5 RA2 RB4 RA3 RB3 RA4 RB2 RA5 RB1 RE0 RB0 RE1 Vcc RE2 GND VCC PIC16FRD7 GND RD6 RA7 RD5 RA6 RD4 RC0 RC7 RC1 RC6 RC2 RC5 RC3 RC4 RD0 RD3 RD1 RD2
DIS3
a b c d e f g DP f e
DIS0 g c d b
10k
RC
Il existe des familles spcialement faites pour tre commandes directement par des PORTs. Voir ZVN4206A et ZVN4306A de chez Zetex.
24V RC Charge
TLP181 : 16mA < IDmax < 20mA avec VD <1,3V 10mA 1mA < IC <10mA Dimensionner R1.
Micro-contrleur PAi
PA2
Micro-contrleur
On suppose que - Pin 4 est relie RA3 - Pin 5 est relie RA2 - Pin 7 est relie RA1 - Pin 6 est relie RA0 Comment fait-on avancer un robot motoris par deux moteurs ? Comment le fait-on reculer ?
4,7k RA4
RA1 Micro-contrleur
R3 470
R2 4,7k
Montage simple qui ncessite cependant un bit par interrupteur. On ne peut pas toujours se le permettre.
Application au clavier
Vcc
clavier
Vcc
RA3
J15
P1
MCLR RB7 RA0 RB6 RA1 RB5 RA2 RB4 RA3 RB3 RA4 RB2 RA5 RB1 RE0 RB0 RE1 Vcc RE2 GND VCC PIC16FRD7 GND RD6 RA7 RD5 RA6 RD4 RC0 RC7 RC1 RC6 RC2 RC5 RC3 RC4 RD0 RD3 RD1 RD2
DIS3
a b c d e f g DP f e
DIS0 g c d b
10k
sw6
DIS2 DIS0
Cours45:lespriphriquesinternesdela famille16F
I)LesregistresetnomsdesbitsenMikroC Documentation technique
OPTION
FicherentteMikroC //**MikroC fichier P18F84A.c *** //********** bits de OPTION NOT_RBPU = 0x0007, INTEDG = 0x0006, T0CS = 0x0005, T0SE = 0x0004, PSA = 0x0003, PS2 = 0x0002, PS1 = 0x0001, PS0 = 0x0000, ...
Remarque : les noms de la documentation et les noms du fichier d'entte ne correspondent pas toujours !
II)Timer0dans16FXXX
4 MUX0 Timer0 b7..................................b0 Timer0 1 OPTION MCU Clock =1
T0SE:SourceEdgeselect
Overflow(8bits)
b7 b6 b5 b4 b3 b2 b1 b0
INTCON TMR0IF
PORTA
b7
2,4,...,256 =2(n+1)
b6 b5 b4 b2 b1 b0
RA4/T0CKI b3
MUX0 1
III)Interruptiontimer0
INTCON 0x0BBanque0et1 b7 GIE
IV)Timer1dans18F4550et16F877A
4 MUX0 T1CON 0xFCD 1 MCU Clock 1,2,4,8 =2(n) PORTC
b7 b6
&
RD16
T1Run
T1CKPS1 T1CKPS0
T1OSCEN NOT_T1SYNC
b7 b6 b5 b4 b3 b1 b2 CCP1IF b0 TMR1IF
overflow
b5 b4 b3 b2 b0
b1TMR1CS
TMR1ON
b7 b6
Dtection synchronise
b5 b4 b3
T1OSI
T1OSO/T1CLI
MUX1 0
b2 b1 b0
T1OSO/T1CLI
0 1 T1OSI FOsc/4
Prescaler 1,2,4,8
Timer1L
NOT_T1SYNC
WriteTMR1L ReadTMR1L Timer1H 8 InternalDataBus 8
Timer1dans16FXXX
V)CAPTUREPOUR16F877
CCPR1H CCPR1L PORTC PIR1
b7
TMR1H TMR1L
b7 b6 b5 b4 b3 b2 b1 b0
RC2/CCP1
b6 b5 b4 b3
CCP1CON
b2 CCP1IF b1 b0
1,4,16
VI)COMPARAISONPIC16F877
b7 b6 b5 b4 b3 b2 b1 b0 b7 b6 b5 b4 b3 b2 b1 b0
POR TC
RC2/CCP1
QS R
Logiquedesortie
Comparaison
TRIS C
CCP1CO b7 N
b6 b5 b4
b7
b3 CCP1M3
0
b6 b5 b4 b3 b2 CCP1IF
VII)Timer2dans18F4550et16F877A
b7..................................b0 PR2
0000=1:1 0001=1:2 0010=1:3 .... 1111=1:16
PIR1
T2CON
b7 b6 b5 b4 b3 b2 b1 b0
1,2,.., 16
1,4,16
00=1:1 01=1:4 1x=1:16
VIII)PWMdans18F4550et16F877A
b7..................................b0 PR2 8 Comparateur Reset 8 b7..................................b0 Timer2 T2CON
b7 b6 b5 b4 b3 b2 b0
PIR1
1,2,..,16
10 Comparat eur
&
T2CKPS0
1,4,16
00=1:1 01=1:4 1x=1:16
CCP1CON
b1 b0
b7 b CCP1M1 1 b6 b CCP1M0 b5 b4 b3
RQ S
RC2/CCP1
CCP1CON(CCP1M3210 1100:EnablePWM
b2 b1 b0
TRISC
b7 b6 b5 b4 b3
0
b2 b1 b0