void ADC1_Convert (void)
{
uint32 ADC_Data;
PINSEL1 = (PINSEL1&0xF0FFFFFF)|0x01000000;//设置AD0通道1
AD0CR = (1 < < 1) | // SEL=1,选择通道1
((Fpclk / 1000000 - 1) < < 8) | // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
(0 < < 16) | // BURST=0,软件控制转换操作
(0 < < 17) | // CLKS=0, 使用11clock转换
(1 < < 21) | // PDN=1,正常工作模式
(0 < < 22) | // TEST1:0=00,正常工作模式
(1 < < 24) | // START=1,直接启动ADC转换
(0 < < 27); // 直接启动ADC转换时,此位无效
DelayNS (5);
ADC_Data = AD0DR1;
AD0CR |= 1 < < 24; // 进行第一次转换
while ((AD0DR1 & 0x80000000) == 0); // 等待转换结束
AD0CR |= 1 < < 24; // 再次启动转换
while ((AD0DR1 & 0x80000000) == 0); // 等待转换结束
ADC_Data = AD0DR1; // 读取ADC结果
ADC_Data = (ADC_Data > > 6) & 0x3ff;
ADC_Data = ADC_Data * 2475; // 参考电压经过3/4分压
ram[1] = ADC_Data / 1024;
}
void ADC2_Convert (void)
{
uint32 ADC_Data;
PINSEL1 = (PINSEL1&0xF0FFFFFF)|0x04000000;//设置AD0通道2
AD0CR = (1 < < 2) | // SEL=1,选择通道2
((Fpclk / 1000000 - 1) < < 8) | // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
(0 < < 16) | // BURST=0,软件控制转换操作
(0 < < 17) | // CLKS=0, 使用11clock转换
(1 < < 21) | // PDN=1,正常工作模式
(0 < < 22) | // TEST1:0=00,正常工作模式
(1 < < 24) | // START=1,直接启动ADC转换
(0 < < 27); // 直接启动ADC转换时,此位无效
DelayNS (5);
ADC_Data = AD0DR2;
AD0CR |= 1 < < 24; //切换到通道2并进行第一次转换
while ((AD0DR2 & 0x80000000) == 0); // 等待转换结束
AD0CR |= 1 < < 24; // 再次启动转换
while ((AD0DR2 & 0x80000000) == 0); // 等待转换结束
ADC_Data = AD0DR2; // 读取ADC结果
ADC_Data = (ADC_Data > > 6) & 0x3ff;
ADC_Data = ADC_Data * 2475; // 参考电压经过3/4分压
ram[2] = ADC_Data / 1024;
dataReady=1;
}