bonjour à tous,
voilà j'avais dèja posté sur le forum électronique pour exposer mon problème afin de transformer la trame que je recevais de mon recepteur infrarouge en suite binaire comportant 11bits que je puisse interpreter. J'a réussi à synthetiser celà à l'aide du compilateur devPIC84f mais je me trouve face à un problème sur la fin du programme si quelqu'un pourait m'aider ? merci
ps: bufferlow et bufferhigh sont les octet atribués aux bits de poid faible et au bits de poid fort mais pour plus d'information revoir mon post http://forums.futura-sciences.com/showthread.php?t=22653
#include <std84.h>
#include <bit84.h>
#define REC_IR porta.0 //recepteur infrarouge
#define L1 portb.0; //portb les 3 lampes
#define L2 portb.1;
#define L3 portb.2;
char b1high=0b00000101;
char b1low=0b10110011;
char b2high=0b00000111;
char b2low=0b10111111;
char b3high=0b00000111;
char b3low=0b011011111;
void main() {
char bit; //initialisation des variables
char nbitlow;
char nbithigh;
char i, nbit, erreur;
char bufferlow[1];
char bufferhigh[1];
char byte buffer[2];
trisa:0b00001;
trisb:0b00000000;
while (VRAI) {
buffer[0]=0;
buffer[1]=0;
erreur=0;
nbit=0;
i=0;
while (i++!=4) { //test si REC_IR est au repos prolongé
if (!REC_IR) i=0;
delay(10);microdelay (100);
}
while (REC_IR); //attend premier bit
delay(5);microdelay (150); //on se positionne au milieu de la trame
while ((nbit++!=11)&&(erreur==0))
{
delay(5);microdelay (150);
if(REC_IR)
{delay(5);microdelay (150);
if(!REC_IR) erreur=1;
bit=0; //c'est un 0
}
else {
delay(5);microdelay (150);
if(REC_IR)erreur=0;bit=1; //c'est un 1
}
{
while (nbitlow++!=8){
bit<<1;
bufferlow=bufferlow+bit; //et on le met dans le buffer
}
while (nbithigh++!=3){;
bit<<1;
bufferhigh=bufferhigh+bit ;
}
}
if(erreur) printf ("bug\n\t");
else{
printf ("%x %x Touche %d\n\r",buffer[1],buffer[0],buffer[0]);
}
}
}
{
if (nbitlow=8)&&(nbithigh=3)&&(b1 low)&&(b1high); //information correspond info bouton 1
L1=1 ; }
if (nbitlow=8)&&(nbithigh=3)&&(L1 =1)&&(b1low)&&(b1high); //maintenir la lampe 1 allumer tant ke lon rappuie pas sur le bouton
L1=0 ;
if (nbitlow=8)&&(nbithigh=3)&&(b2 low)&&(b2high); //test si information correspond au info du bouton 2
L2=1 ; }
if (nbitlow=8)&&(nbithigh=3)&&(L2 =1)&&(b2low)&&(b2high); //maintenir la lampe 2 allumer tant ke lon rappuie pas sur le bouton
L2=0 ;
if (nbitlow=8)&&(nbithigh=3)&&(b3 low)&&(b3high); //test si information correspond au info du bouton 3
L3=1 ; }
if (nbitlow=8)&&(nbithigh=3)&&(L3 =1)&&(b3low)&&(b3high); //maintenir la lampe 3 allumer tant ke lon rappuie pas sur le bouton
L3=0 ;
}
}
//end
-----