Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Compte Rendu du TP
Module : Interruptions et Interfaçage PIC-LCD
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.
2
Le PIC 16F877 est caractérisé par :
- 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) .
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}
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(;
{