Vous êtes sur la page 1sur 6

Ministère De L’enseignement Supérieur et RechercheScientifique

Centre Universitaire Nour El Bachir– ElBayadh

Institut des Sciences .Département Des Sciences et Technologies


Filière Electronique.

1er Année Master


Spécialité : Electronique des systèmes embarqués.

Compte Rendu du TP
Module : Interruptions et Interfaçage PIC-LCD

Sous la supervision du :

M r   : Boudaoud Abdelkader

Présenté par :
 Zineb Amir

2019/2020
1
Introduction :
 Un PIC est un microcontrôleur, c'est à dire une unité de traitement de
l'information de type microprocesseur à laquelle on a ajouté des circuits internes
permettant de réaliser des montages sans nécessiter l'ajout de composants
externes. Les PICs sont des composants dits RISC ( Reduced Instructions Set
Computer), ou encore (composant à jeu d'instructions réduit).

 La famille des PICs est subdivisée à l'heure actuelle en 3 grandes familles :

 Base-line : c'est une famille qui utilise des mots d'instructions de 12 bits.
 Mid-range : c'est une famille qui utilise des mots de 14 bits (dont font
partie les 1 6F84 16F876 et 16F877
 High-end : c'est une famille qui utilise des mots de 16 bits.

Principales caractéristiques du PIC 16F877 :

2
Le PIC 16F877 est caractérisé par :

- Une fréquence de fonctionnement élevée, jusqu'à 20 MHz.

- Une mémoire vive de 368 octets.

- Une mémoire morte EEPROM de 256 octets pour la sauvegarde des données. -
Une mémoire de type FLASH de 8 Kmots (1mot = 14 bits) .

- Chien de garde WDT.

- 33 lignes d'entrées /sorties. Chaque sortie peut sortir un courant maximum de


25 mA. - 3 Temporisateurs :

· TIMER0 (compteur 8 bits avec prédiviseur).

· TIMER 1 (compteur 16 bits avec prédiviseur et possibilité d'utiliser une


horloge externe réseau RC ou QUARTZ).

· TIMER2 (compteur 8 bits avec prédiviseur et postdiviseur).

- 2 entrées de captures et de comparaison avec PWM (Modulation de largeur


d'impulsions).

- Un convertisseur Analogique Numérique 10 bits avec 8 entrées


multiplexées.

- Une interface de communication série asynchrone et synchrone


(USART/SCI). - Une interface de communication série synchrone (SSP/SPI
et I2C).

- Une tension d'alimentation entre 2 et 5.5 V.

Schéma interne du PIC

3
Schéma interne des interruptions

Le programme proposé :

4
#include<p16F877.h>
#byte PORTA=5
#byte PORTB=6
#use delay(clock=20000000)
#bit inter1=PORTB0
#bit inter2=PORTB1
#bit inter3=PORTB2
#bit inter4=PORTB3
//#bit led1=PORTA1
//#bit led2=PORTA2
//#bit led3=PORTA3
//#bit led4=PORTA4

char a=0,b=0,c=0,d=0;
unsigned tempo:16;

void antirebond(void);

void main(void)

{
SET_TRIS_A(0xE0);
SET_TRIS_B(0xFF);

for (;
{
if (inter1==1 && a==0) {antirebond(); while(inter1);OUTPUT_BIT(PIN_A 1,1) ;
antirebond();a++;}
else if(inter1==1 && a==1)
{antirebond(); while(inter1);OUTPUT_BIT(PIN_A 1,0) ;
antirebond();
a=0;}
if (inter2==1 && b==0) {antirebond(); while(inter2);OUTPUT_BIT(PIN_A 2,1) ;
antirebond();
b++;}
else if (inter2=1 && b=1){antirebond(); while(inter2);OUTPUT_BIT(PIN_A 2,0) ;
antirebond();
b=0}
if (inter3==1 && c==0) {antirebond(); while(inter3);OUTPUT_BIT(PIN_A 3,1) ;
antirebond();
c++;
}
else if (inter3==1 && c==1){antirebond(); while(inter3);OUTPUT_BIT(PIN_A 3,0) ;
antirebond();c=0}

if (inter4==1 && d==0) {antirebond(); while(inter4);OUTPUT_BIT(PIN_A 4,1) ;


antirebond();d++;}
else if (inter4==1 && d=1) {antirebond(); while(inter4);OUTPUT_BIT(PIN_A 4,0) ;
antirebond();d=0}
}
return 0;}
void antirebond(void)
{
for (tempo=0;tempo<2000;tempo++);

5
#include<p16F877.H>
bit inter1 @RB0; //Bp1
bit inter2 @RB1; //Bp2
bit inter3 @RB2; //Bp3
bit inter4 @RB3; //Bp4
bit led1 @RA1; //Led1
bit led2 @RA2; //Led2
bit led3 @RA3; //Led3
bit led4 @RA4; //Led4
#use delay (clock=20000000)

char a=0,b=0,c=0,d=0;
void main(void)
{

TRISA=0b11100000;
TRISB=0b11111111;

for(;
{

if (inter1==1 && a==0) { led1=1;


a++;}
else if(inter1==1 && a==1)
{led1=0;
a=0;}
if (inter2==1 && b==0) { led2=1
b++;}
else if (inter2=1 && b=1){led2=0;
b=0}
if (inter3==1 && c==0) { led3=1;
c++;
}
else if (inter3==1 && c==1){led3=0;c=0}

if (inter4==1 && d==0) { led4=1 ;d++;}


else if (inter4==1 && d=1) {led4=0;d=0}
}
return 0;}

Vous aimerez peut-être aussi