bjr tt le monde voila sur le meme composant bq26200, j'ai effectuer un programme en C afin de generer la trame figure 2 page6 du lien ci dessous a l'aide d'un micro_controleur89c51, mtn je dois modifier ce programme afin de faire communiquer le bq26200 avc le 89c51 que dois je modifier ds mon programme afin que cela fonctionne merci
cordialement
http://focus.ti.com/lit/ds/symlink/bq26200.pdf
et voici mon programme
//PROGRAMMATION BQ2000 SPI rapide
#include <c:\bq\bq.h>
#include<stdio.h>
#include<math.h>
at 0xA2 sbit HDQ_TX ;
at 0xA3 sbit HDQ_RX ;
at 0xA4 sbit TEST ;
extern void INITIALISATIONS (void);
extern void Temporisation (char n);
char Ad1,byte1, byte2, HDQ;
void HDQ_REPOS(void)
{ HDQ_TX=1;
}
//************************** EMISSION ***********************
//****************************** ******************************
void HDQ_WRITE_BYTE(char ADRESSE,char OCTET)
{ char compt;
ADRESSE=ADRESSE|0x80;
//break
HDQ_TX=0;
Temporisation(190);
//start
HDQ_TX=1;
Temporisation(1);
//EMISSION DE l'adresse+ bit write
for (compt=0; compt<=7; compt++)
{HDQ_TX=ADRESSE&0x01; //emmission poid faible
if (HDQ_TX==1)
{HDQ_TX=0;
Temporisation(25); //40us
HDQ_TX=1;
Temporisation(185);} //200us
else
{(HDQ_TX=0);
Temporisation(105); //120us
HDQ_TX=1;
Temporisation(105);
}; //120us
ADRESSE=(ADRESSE/2); //decalage de 1 a droite
};
HDQ_TX=1;
Temporisation(300);
//EMISSION DE l'octet
for (compt=0; compt<=7; compt++)
{HDQ=OCTET&0x01; //emmission poid fort
if (HDQ==1)
{HDQ_TX=0;
Temporisation(25);
HDQ_TX=1;
Temporisation(185);}
else
{(HDQ_TX=0);
Temporisation(105);
HDQ_TX=1;
Temporisation(105);};
OCTET=(OCTET/2); //decalage de 1 a droite et masque
};
}
//************************ RECEPTION ************************
//****************************** ******************************
char HDQ_WRITE_READ(char ADRESSE)
{ char compt, octet_recu;
ADRESSE=ADRESSE & 0x7F;
// Temporisation(1);
//EMISSION DE l'adresse+ bit read
for (compt=0; compt<=7; compt++)
{HDQ=ADRESSE&0x01;
//emmission poid faible
if (HDQ==1)
{HDQ_TX=0;
Temporisation(25); //40us
HDQ_TX=1;
Temporisation(185);} //200us
else
{(HDQ_TX=0);
Temporisation(105); //120us
HDQ_TX=1;
Temporisation(105);}; //120us
ADRESSE=(ADRESSE/2); //decalage de 1 a droite
};
HDQ_TX=1; Temporisation(300);
//reception l'octet
for (compt=0; compt<=7; compt++)
{
};
return octet_recu;
}

//****************************** ******************************
// acquisition de la valeur de l adresse
//****************************** ******************************
long LIRE_ADRESSE(void)
{long d;
scanf ("%ld",&d);
return d;
}
//****************************** ******************************
// acquisition de la valeur de l octet
//****************************** ******************************
long LIRE_VALEUR(void)
{long val;
scanf ("%ld",&val);
return val;
}
//****************************** ******************************
// PROGRAMME PRINCIPAL
//****************************** ******************************
void main (void)
{ HDQ_REPOS();
INITIALISATIONS ();
while(1)
{ printf("entrez la valeur en decimal de l'adresse ou ecrire, puis touche ENTER \n ");
TEST=0;
Ad1 = LIRE_ADRESSE(); printf("\n"); printf("\n");
TEST=1;

printf("entrez la valeur en decimal de la valeur a envoyer, puis touche ENTER \n ");
byte1 = LIRE_VALEUR(); printf("\n"); printf("\n");
HDQ_WRITE_BYTE(Ad1, byte1);
// printf("entrez la valeur en decimal de l'adresse a lire, puis touche ENTER \n ");
// byte2 = LIRE_VALEUR(); printf("\n"); printf("\n");
// byte2= HDQ_WRITE_READ(Ad1);
};
}