Hello,
i have problems to get a 10-Bit result from the internal adc of the AT89C51CC03.
I always got only a 8-Bit result, though setting the PSIDLE-Bit. Also i did not need the adc-eoc-interrupt to continue after the conversion, as it is explained in the device manual.
So it seems to me, i made something wrong in setting up the adc for 10-Bit resolution.
I include the following code, which should not run with disabled eoc-interrupt. But it runs !!!
#include "AT89C51CC03.h" unsigned int i; void main(void) { ADCF = 0x20; /* configure channel P1.5(AN5) for ADC */ ADCLK = 0x00; /* init prescaler for adc clock */ ADCON = 0x20; /* Enable the ADC */ EA = 0; /* disable interrupts */ EADC = 0; P31 = 1; // signal running via txd pin for (i=0; i< 20000; i++); while(1) { ADCON &= ~0x07; /* Clear the channel field ADCON[2:0] */ ADCON |= 0x05; /* Select channel 5 */ ADCON |= 0x40; /* 10 bit mode */ ADCON |= 0x08; /* Start conversion */ P31 = ~P31; // signal running via txd pin while (!(ADCON & 0x10)); ADCON &= 0xef; for (i=0; i< 20000; i++); } }
So please contact me, if you have any ideas, hints, solutions, etc.