unsigned int ADC ( unsigned char n )
{
unsigned char i = 0;
unsigned int temp = 0, ad1out;
* ADCFIFO1 = 0; //结果寄存器1清零;
* ADCTRL1 = 0xac00 | ( n << 1 ); //使能ADC1,在停止仿真前完成转换,连续转换。
for (i = 0; i < 8; i++)
asm(" NOP");
while ( ( *ADCTRL1&0x80 ) != 0 || i > 250 ); //判断是否有中断发生;
{
i++;
}
if (* ADCTRL2&0x0010) //判断结果寄存器1是否有2个结果;
{
ad1out = * ADCFIFO1 >> 6; //将结果寄存器1中数据右移6位;
}
temp = 5000; //5V转换为0xFF
ad1out = ( long ) ( temp ) * ( long ) ( ad1out ) / 1023;//采集值乘以5000,再除以1023。
return (ad1out);
}