This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

AT89C51CC03 : 10-Bit ADC Problems

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.

0