Bonjour,

Je voudrais faire une conversion analogique vers numérique avec un PIC18f2520. Avec une conversion ça fonctionne tres bien mais lorsque j'essaie avec plusieur c'est la soupe. Le resultat de la conversion x se retrouve dans la suivante je ne comprends pas pourquoi.

voici le code
Code:
void main ()
{				// L'accolade ouverte correspond
				// à l'entité DEBUT de l'ordinogramme


init(); 		//Initialisation
RB0=1;
RB2=0;
RB3=1;

while(1)
	{		
				reg_vit();//sur RA0
			
				axe_X(); // sur RA1
			
				axe_Y(); // sur RA2
			
				axe_Z(); // sur RA3
				
			
		
	}				

}			




// INITIALISATION du PIC et de l'écran LCD
// =======================================
void init(void)
{
  OSCCON=0b01110110;
  T2CON=0b00000110;
  PR2=0xff;
  CCP1CON=0b00111100;
  ADCON0=0b00111100;
  ADCON1=0b00001010;
  ADCON2=0b10001000;
  TRISA=0b11111111;  
  PORTA=0;
  TRISB=0b00000010;  
  PORTB=0;
  TRISC=0b00000000;  
  PORTC=0;
  lcd_init();
  lcd_clear();
}

void axe_X(void)
{
char ligne1[8];
unsigned int resultat=(((ADRESH*256)+ADRESL)/10.24); // addition de ADRESH ET ADRESL et reduction sur 100. 
ADCON0=0b00000101;
delay_ms(1);
	GO=1;
	delay_ms(1);

	sprintf(ligne1,"X%2d",resultat);
	lcd_goto(0);
	lcd_puts(ligne1);

}
void axe_Y(void)
{
char ligne1[8];
unsigned int resultat=(((ADRESH*256)+ADRESL)/10.24); // addition de ADRESH ET ADRESL et reduction sur 100
ADCON0=0b0001001;
delay_ms(1);
	GO=1;
	delay_ms(1);
	
	

	sprintf(ligne1,"Y%2d",resultat);
	lcd_goto(0x03);
	lcd_puts(ligne1);

}
void axe_Z(void)
{
char ligne1[8];
unsigned int resultat=(((ADRESH*256)+ADRESL)/10.24); // addition de ADRESH ET ADRESL et reduction sur 100
ADCON0=0b00001101;
delay_ms(1);
	GO=1;
	delay_ms(1);
	
	sprintf(ligne1,"Z%1d",resultat);
	lcd_goto(0x06);
	lcd_puts(ligne1);

}
void reg_vit(void)
{
char ligne1[8];

unsigned int resultat=(((ADRESH*256)+ADRESL)/10.24); // reduction sur 165 car signal pwm a 8Mhz resolution max = 165 (90 - 255).

ADCON0=0b00010001;
CCPR1L=resultat+90;
delay_ms(1);
	GO=1;
	delay_ms(1);
	
	sprintf(ligne1,"vit=%d  ",resultat);
	lcd_goto(0x40);
	lcd_puts(ligne1);

}