We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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.