You are on page 1of 3

/************************************************************************************************************

10 bit ADC
************************************************************************************************************/
#include<lpc21xx.h>
unsigned int data;

int main()
{
adc_init();
if(AD0DR2 & 0x80000000)

// check DONE bit = AD0DR2[31] register

{
data = AD0DR2 & 0xFFC0;

// 1111 1111 1100 0000

data = data >> 6;

// RESULT = AD0DR2[15:6]

}
uart_init();
//printint_adc(data);
printhex_adc(data);
while(1);
}

void adc_init()
{
PINSEL1 = 0x04000000;

// P0.29 = AD0.2

AD0CR = 0x01210004;

// 0000 0001 0010 0001 0000 0000 0000 0100

/*

START = 001,
PDN = 1,
CLKS = 000 [for 10 bit ADC],
BURST = 1,
CLKDIV = 0x00 [for freq < 4.5MHz],
SEL = 0000 0100 (AD0.2)

*/
}

void uart_init()
{
PINSEL0 = 0x01;

// Tx mode

U0LCR = 0x83;

// set DLAB

U0DLL = 0x13;
U0DLM = 0x00;
U0LCR = 0x03;

// clear DLAB

/*
void printint_adc(unsigned int a)
{
unsigned int i;
unsigned int b,c[10]={48,48,48,48,48,48,48,48,48,48};
for(i=9;i>0;i--)
{
b=a%10;
b=b+48;
a=a/10;
c[i]=b;
}
for(i=0;i<9;i++)
{
U0THR = c[i];
while(!(U0LSR & 0x20));
}
U0THR = '\n';
U0THR= '\r';
}
*/

void printhex_adc(unsigned int n)


{
unsigned int i,j,k,p,l;
for(i=0;i<8;i++)
{
l=0xF0000000;
l=l>>(4*i);
j=n & l;
j = j >> (28-(4*i));
if(j>=0 && j<=9)
{
p = j + 0x30;
U0THR = p;
}
if(j>=10 && j<=15)
{
p = j + 0x37;
U0THR = p;
}
}
U0THR = ('\n');
U0THR = ('\r');
}

You might also like