bonjour tout le monde
j'ai un mini projet à réaliser a base de pic 16F877 et comme langage de programmation j'ai choisis le C, j'ai déjà édité 2 codes sources qui font la même fonction car d'après ma recherche j'ai trouve comme deux langage diffèrent ou bien ça dépend du logiciel utilisé pour la compilation???
mais ni les deux ne veulent pas se compiler, j'utilise MPLAB avec CCX5.
voila mes deux codes
la fonction du programme est
si une action sur un bouton poussoir (RB0/RB1/RB2/RB3) la led correspondant doit s'allumer (RA1/RA2/RA3/RA4 dans l'ordre) et rester allumer jusqu'a une autre action sur le même poussoir
le 2eme code#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++);
}
si vous trouvez que je suis pas sur les bonnes voies je vous prie de me remettre sur la bonne route#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;}
tous vos conseilles,remarques et explications seront les bienvenus et MERCI bonne journée pour tout le monde
-----