1 utilisateur anonyme et 8 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

aide prog

n°57176
b2o53
Posté le 28-03-2005 à 20:58:39  profilanswer
 


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 89c51 directemt avc le bq26200 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);
};
}

mood
Google
Posté le 28-03-2005 à 20:58:39  profilanswer
 

n°57184
djrom
Give me, give me loooooove
Posté le 29-03-2005 à 01:55:10  profilanswer
 

pourrait tu etre plus explicite dans ton titre ?  merci :)

mood
Google
Posté le 29-03-2005 à 01:55:10  profilanswer
 


Aller à :
Ajouter une réponse
 

Hit Parade