LA PROGRAMMATION DES DEUX FEUX ROUGE A L'AIDE DU PIC 16F84A
Il y'a 3 modes de fonctionnement :
A. fonctionnement du Jour (normal);
B. fonctionnement de Nuit;
c. Arrêt (les deux feux ne fonctionnent pas );
Les deux feux doivent avoir le fonctionnement synchrones (mode normal) selon le tableau suivant (Figure: 2):
Figure: 2 |
1.Simulation par le programme ISIS:
Les deux feux rouge (TRAFFIC LIGHTS ) sont branchés directement au PIC 16F84A avec le port B qui comporte 8 broches entrées/sorties. Tel que :
- Le FEU 1 est brancher aux broches : RB4,RB5 et RB6;
- Le FEU 2 est brancher aux broches : RB1,RB2 et RB3;
-On branche un bouton poussoir à la broche RB0/INT , cette broche qui va nous permet de basculer entre les différents modes de fonctionnement.
Figure: 3 |
2.Programmation par le programme MicroC for PIC:
int i;
int j=0;
/////////////////////////////////////////
void interrupt(){
j++; // fonction Interruption
if(j==3) j=0;
intcon.f1=0;
i=3;
}
//////////////////////////////////////
void fjour(){ //fonction de feu rouge du jour
portb=0b01000010;
delay_ms(200);
for(i=0;i<3;i++){
portb=0b00000010;
delay_ms(100);
portb=0b01000010;
delay_ms(100);
}
if(j==0){
portb=0b00100000;
delay_ms(100);
portb=0b00011000;
delay_ms(200);
}
for(i=0;i<3;i++){
portb=0b00010000;
delay_ms(100);
portb=0b00011000;
delay_ms(100);
}
portb=0b00000100;
delay_ms(100);
}
///////////////////////////////////////
void fnuit(){ //fonction de feu clignoté de la nuit
portb=0b00100100;
delay_ms(100);
portb=0b00000000;
delay_ms(100);
}
//////////////////////////////
void fstop(){ // fonction d’arrêt
portb=0;
}
/////////////////////////////////
void main() {
trisb=1; //RB0 en entrée et les 7 bits qui restent en sortie
portb=0;
intcon=0b10010000;
option_reg=0b11000000;
for(;;){
if(j==0) fjour();
if(j==1) fnuit();
if(j==2) fstop();
}
}