Bonjour a tous,
j'ai réalisé une carte comprenant un pic18f2550 et un potentiometre entre l'alim et AN0 afin de numériser une tension.
Mon but est d'afficher dans l'hyperterminal la valeur de la tension sur AN0. La liaison entre la carte est en USB CDC, elle marche très bien mais mon seul problème est que je n'arrive pas à convertir le résultat de la numérisation convenablement.
Je m'explique : mon résultat de numérisation est dans ADRESL et ADRESH au format binaire si je ne m'abuse. Je converti donc ces registres en BCD puis en ASCII mais mon hyperterminal m'affiche toujours de mauvais caractères.
Voila une partie de mon code.
void SendUsb(void)
{
int i = 0;
for(i=0;i<64;i++){
buffer = 0;
}
getacd(0, 1);
BinToBcd(ADRESH, ADRESL);
if(Switch2IsPressed())
{
if(state == 0)
{
if(mUSBUSARTIsTxTrfReady())
{
putrsUSBUSART("\r\n Tension : "
state++;
}
}
else if(state == 1)
{
if(mUSBUSARTIsTxTrfReady())
{
putrsUSBUSART(buffer[0]);
state = 0;
}
}
}
}
char* BinToBcd(unsigned char binh,unsigned char binl){
char millier = 0;
char centaine = 0;
char dizaine = 0;
char unite = 0;
unsigned int v = ((unsigned int)binh << 8) + binl;
millier = v / 1000;
centaine = (v/100)%10;
dizaine = (v/10)%10;
unite = v%10;
millier |= 48;
centaine |= 48;
dizaine |= 48;
unite |= 48;
buffer[0] = millier;
buffer[1] = centaine;
buffer[2] = dizaine;
buffer[3] = unite;
buffer[4] = 0;
return 0;
}
Merci d'avance
Modifié 2 fois. Dernière modification le 10/06/09 08:42 par slayerman.