CPU
1
A3 4éme
3- Caractéristiques :
Caractéristiques 16F628A 16F88A 16F876A 16F877A
Mémoire programme (octets) 2048 4096 8192 8192
Mémoire SRAM (octets) 224 368 368 368
Mémoire EEPROM (octets) 128 256 256 256
Entrées/Sorties 16 (2ports) 16 (2ports) 22 (3ports) 33 (5ports)
Fréquence d’horloge (MHz) 20 20 20 20
Sources d’interruptions 10 12 14 15
TMR0 (8 bits) TMR0 (8 bits) TMR0 (8 bits) TMR0 (8 bits)
Timer (TMR)/Compteur TMR1(16bits) TMR1 (16 bits) TMR1 (16 bits) TMR1 (16 bits)
TMR2 (8 bits) TMR2 (8 bits) TMR2 (8 bits) TMR2 (8 bits)
Convertisseur 1 ADC 10bits 1 ADC 10bits 1 ADC 10bits
-
analogique/numérique (ADC) 7 canaux 5 canaux 8 canaux
Tension de référence interne Oui Oui Oui Oui
CCP 1 1 2 2
Comparateur analogique 2 2 2 2
Ecriture et lecture en mémoire
- Oui Oui Oui
programme
SSP (Synchronous Serial port) : Maître ou Maître ou Maître ou
SPI (Serial Peripheral Interface) - esclave esclave esclave
I²C (Inter Integrated Circuit Bus) Esclave Esclave Esclave
USART (SCI) Oui Oui Oui Oui
PSP (Parallel Slave Port) - - - 8 bits
Jeux d’instructions 35 35 35 35
Nombre des broches 18 18 28 40
4- Les registres de configuration et de contrôle :
STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx
OPTION_REG RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111
INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x
PIE1 PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000
PIR1 PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000
PIE2 N.I. Réservé N.I. EEIE BCLIE N.I. N.I. CCP2IE -r-0 0--0
PIR2 N.I. Réservé N.I. EEIF BCLIF N.I. N.I. CCP2IF -r-0 0--0
EECON1 EEPGD — — — WRERR WREN WR RD x--- x000
TXSTA CSRC TX9 TXEN SYNC — BRGH TRMT TX9D 0000 -010
RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x
CCPxCON — — DCxB1 DCxB0 CCPxM3 CCPxM2 CCPxM1 CCPxM0 --00 0000
T1CON — — T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --00 0000
T2CON — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000
SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000
SSPCON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000 0000
SSPSTAT SMP CKE D/A P S R/W UA BF 0000 0000
CCP1CON — — CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000
RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x
CCP2CON — — CCP2X CCP2Y CCP2M3 CCP2M2 CCP2M1 CCP2M0 --00 0000
ADCON0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE — ADON 0000 00-0
ADCON1 ADFM — — — PCFG3 PCFG2 PCFG1 PCFG0 0--- 0000
TRISx 1111 1111
2
A3 4éme
Un langage évolué de programmation est une notation conventionnelle destinée à formuler des algorithmes
afin de produire des programmes informatiques qui les traduisent.
Démarche :
Cahier des charges Algorithme Programme Compilation Chargement
(fichier.hex dans µC)
3
A3 4éme
- Le Port A est un Port multiplexé en mode analogique (AN) et en mode numérique (logique) noté (RA) :
- Une entrée en mode logique : noté (RA) : peut
prendre l’état 0 ou 1
- Une entrée en mode analogique : noté (AN) : peut
prendre une tension continue variable de 0 à 5V.
- Les entrées multiplexées en mode logique et
analogique sont : RA0/AN0; RA1/AN1; RA2/AN2 et
RA3/AN3 pour le PIC16F628A.
- Par défaut les broches du PortA sont initialisées en mode …………………………………..
- Pour PIC16F628A : Pour initialiser les broches du PortA en mode logique on doit configurer le registre
…………………………….. et écrire dans le programme : CMCON :=7 ;
- Pour PIC16F876A ou PIC16877A : Pour initialiser les broches du PortA en mode logique en doit
configurer le registre …………………………….. et écrire dans le programme : ADCON1 :=6 ;
- Pour PIC16F84A : les broches du PortA sont non multiplexées et ils sont en mode………………
EVALUATION N°1 : Compléter la déclaration des variables en respectant le montage ci-dessous :
Déclaration des Commentaire Montage à base d’un PIC
variables
E0 : sbit at porta.0; // bouton E0 est branché à RA0
E1 : sbit at RA1_bit; // …………………………………
……………………………; // bouton E2 est branché à RA2
E3 : sbit at RA3_bit; // …………………………………
S0 : sbit at RB0_bit; // Lampe S0 est branché à RB0
……………………………; // ……………………………….
……………………………; // Lampe S2 est branché à RB2
S3 : sbit at PortB.3; // ……………………..…………..
EVALUATION N°2 :
1/ Configurer le PortA en entrée ou en sortie ou non utilisé en respectant le montage :
PortA (8bits)
RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0
…… …… …… …… …… …… …… ……
Le registre TRISA permet de configurer le PORTA en entrée ou en sortie :
Si TrisA.i :=….. alors PortA.i est ……………
Si TrisA.i := ….. alors PortA.i est …………..
2/ Déduire la valeur du registre TRISA en binaire, en décimal et en hexadécimal :
TrisA := ……………………………; // en binaire
TrisA := ……. ; // en décimal
TrisA := ………. ; // en hexadécimal ou bien TrisA :=……………. ;
3/ Configurer le PortB en entrée ou en sortie ou non utilisé en respectant le montage :
PortB (8bits)
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
…… …… …… …… …… …… …… ……
Le registre TRISB permet de configurer le PORTB en entrée ou en sortie
Si TrisB.i :=… alors PortB.i est …………….
Si TrisB.i := … alors PortB.i est ……………..
4/ Déduire la valeur du registre TRISB en binaire, en décimal et en hexadécimal :
TrisB := ………………………….. ; // en binaire
TrisB :=…….. ; // en décimal
TrisB := ……… ; // en hexadécimal ou bien TRISB :=…………… ;
Parcourir des nombres : dans l'ordre décroissant, cette structure utilisée dans le cas
d’un décomptage Nombre de parcours : valeur_finale – valeur_initiale + 1
c- Procédure prédéfinie:
PROCÉDURE INC ( ) ;
L’instruction N :=N+1 peut être remplacée par la procédure prédéfinie INC
Prototype Procedure Inc (var p : longint);
Description Incrémenter p par 1.
Exemple p := 4; // p =4 Inc(p); // p = 5
PROCÉDURE DEC ( ) ;
L’instruction N :=N-1 peut être remplacée par la procédure prédéfinie DEC
Prototype Procedure Dec (var p : longint);
Description décrémenter p par 1.
Exemple p := 4; // p =4
Dec(p); // p = 3
PROCÉDURE DELAY_MS ( ) ;
Prototype procedure Delay_ms(time_in_ms : const dword);
Exemple Delay_ms(1000); // pause d’une seconde
PROCÉDURE VDELAY_MS ( ) ;
Prototype procedure Vdelay_ms(time_in_ms : word);
Exemple Vdelay_ms(1000); // pause d’une seconde
REMARQUE : Différence entre delay_ms() et vdelay_ms() :
- Delay_ms(N) : Pause de N ms avec N est une constante de type dword.
- Vdelay_ms(N) : Pause de N ms avec N peut-être une constante ou variable de type word.
5
A3 4éme
PIC 16F84A
Deux ports A et B
PortA : 5 entrées/sorties numériques
PortB : 8 entrées/sorties numériques
On donne :
Table de vérité : Tableau d’affectation :
S1 S2 H Entrées / Sorties Broches du µC
0 0 0 Entrée : Bouton poussoir S1 RA0
0 1 1 Entrée : Bouton poussoir S2 RA1
1 0 1 Sortie : Lampe H RA2
1 1 0
RA4 RA3 RA2 RA1 RA0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
TRISA TRISB
6
A3 4éme
2- Compléter l’algorithme.
Algorithme
Algorithme XOR ;
DEBUT
Trisa ….. ; // RA0 et RA1 sont des entrées et les autres broches sont des sorties.
Porta.2 ….. ; // Initialisation de RA2 (H = 0).
TANT QUE vrai FAIRE // Boucle infinie.
SI (((porta.0=1) ET (porta.1=0)) OU ((…………) ET (………….))) ALORS porta.2 1 SINON
……………. ;
FIN.
3-Traduire l’algorithme en un programme en Mikropascal.
Programme en Mikropascal
Program XOR ;
BEGIN
Trisa :=….. ; // RA0 et RA1 sont des entrées et les autres broches sont des sorties.
Porta.2 :=….. ; // Initialisation de RA2 (H = 0).
………. ……………… // Boucle infinie.
IF (((porta.0=1) AND (porta.1=0)) OR ((………….) AND (………….))) THEN porta.2 :=1 ELSE ………….. ;
END.
Capteurs Préactionneurs
IR1 Camion devant la porte LR Lampe rouge
IR2 Sortie du camion de l’entrepôt LV Lampe verte
Pf Porte fermée KM1 Ouverture de la porte
Po Porte ouverte KM2 Fermeture de la porte
Entrées Sorties
Système microcontrôleur Système microcontrôleur
IR1 RB0 LR RA0
IR2 RB1 LV RA1
Pf RB2 KM1 RA2
P0 RB3 KM2 RA3
7
A3 4éme