📄 adc.c
字号:
/****************************************************************
* S3C44B0X ADC TEST *
****************************************************************
ADC TEST
***************************************************************/
#include <string.h>
#include "..\target\44b.h"
#include "..\target\44blib.h"
#include "..\inc\adc.h"
void Test_Adc(void)
{
int a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0;
int adcpsr;
Uart_Printf("现在开始A/D转换自检测试!!!!\n");
Uart_Printf("按任意键退出!!!!\n");
rCLKCON=0x7ff8;
rADCCON=0x1|(0<<2); //Enable ADC
Delay(100); //delay for 10ms for ADC reference voltage stabilization.
//Uart_Printf("Input ADCPSR value:");
//adcpsr=Uart_GetIntNum();
adcpsr=255;
rADCPSR=adcpsr;
Uart_Printf("ADC转换频率=%d(Hz)\n",(int)(MCLK/(2.*(adcpsr+1.))/16.) );
while(Uart_GetKey()==0)
{
Delay(5000); //delay for 500ms for ADC
a0=ReadAdc(0);
a1=ReadAdc(1);
a2=ReadAdc(2);
a3=ReadAdc(3);
a4=ReadAdc(4);
a5=ReadAdc(5);
a6=ReadAdc(6);
a7=ReadAdc(7);
Uart_Printf("\n通道0:%04d 通道1:%04d 通道2:%04d 通道3:%04d \n",a0,a1,a2,a3);
Uart_Printf("通道4:%04d 通道5:%04d 通道6:%04d 通道7:%04d \n",a4,a5,a6,a7);
}
}
int ReadAdc(int ch)
{
int i;
static int prevCh=-1;
if(prevCh!=ch)
{
rADCCON=0x0|(ch<<2); //setup channel.
for(i=0;i<150;i++); //min. 15us
}
rADCCON=0x1|(ch<<2); //Start A/D conversion
while(rADCCON &0x1); //To avoid The first FLAG error case.
//(The START bit is cleared in one ADC clock.)
while(!(rADCCON & 0x40));
for(i=0;i<rADCPSR;i++); //To avoid The second FLAG error case
prevCh=ch;
return rADCDAT;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -