以下程序運行在LPC210X單片機上面:
void main(void)
{
// U8 Test[20];
U32 ADC_Data;
const U32 ADC_CR=
( 1 << 0 ) | // SEL = 1 ,選擇通道0
( ( 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,啟動轉換
( 0 << 27 ); //上升沿啟動轉換
PINSEL0=0x00000005; //TXD0和RXDE0功能連接到管腳
PINSEL1=(3<<12); //ADC0.0連接到管腳(11)
PLL_Init();
UART0_Init();
printf(" \nAD Convert\n");
printf("ADC0.0'S VALUE:\n ");
while(1)
{
AD0CR = ADC_CR;
do{}while((AD0GDR&0x80000000)==0); //AD0GDR:31位:DONEAD 轉換結束時該位置位
ADC_Data=AD0DR0; //數據寄存器的15:6 DONEAD為1進,這十位存儲著AIN腳的電壓,共十位
AD0DR0=ADC_Data;
ADC_Data=(ADC_Data>>6)&0x3ff; //得到二進制結果 ,10bits
ADC_Data>>=2; //只要八位準備輸出;
printf("0x%x ",(ADC_Data&0xff));
Delay(10);
}
}
不知什么原因,仿真老出問題。可能JLINK電壓低?