Bonjour,
Je me suis mis depuis peu à la programmation en C sur le pic 16f877, je débute et je n'arrive pas à comprendre la subtilité de la conversion analogique numérique avec le pic 16f877, d'ou ma venue sur le forum
Apres lecture de la datasheet du composant, j'ai écrit le programme ci-dessous qui devrait convertir une donnée analogique (entrée AN0) et allumer des leds en fonction du résultat de la conversion. Le programme ne plante pas (je suissous sourceBoost), mais il ne fait pas ce qu'il faut.
Ci-dessous mon code :
Merci d'avance pour votre aide.Code:#include <system.h> #pragma DATA _CONFIG, _HS_OSC & _WDT_OFF #pragma CLOCK_FREQ 20000000 int can(void) { set_bit(adcon0,GO); while (adcon0.GO == 1){} return ADRESH; } void main( void ){ unsigned char valeur; clear_bit(adcon1,ADFM); set_bit(adcon1,PCFG3); set_bit(adcon1,PCFG2); set_bit(adcon1,PCFG1); clear_bit(adcon1,PCFG0); trisa = 0xFF; trisc = 0x00; trisd = 0x00; portc = 0x00; portd = 0x00; set_bit(adcon0,ADCS1); clear_bit(adcon0,ADCS0); clear_bit(adcon0,CHS2); clear_bit(adcon0,CHS1); clear_bit(adcon0,CHS0); set_bit(adcon0,ADON); delay_ms(2); while(1){ valeur = can(); if(valeur == 0b00000000){ set_bit(portc,2); // Cette led ne s'allume jamais, même pour une entrée nul. } if(valeur > 0b00000010){ set_bit(portd,0); // Cette led reste allumée quelque soit la valeur en entrée AN0 } } }
Flareski.
-----