📄 ad.c
字号:
//========================================================================================
//文件名称:AD.c
//描述:建立AD转换模块
//========================================================================================
#define P_ADC_MUX_Ctrl (volatile unsigned int *)0x702B
#define P_ADC_LINEIN_Data (volatile unsigned int *)0x702C
#define P_ADC_Ctrl (volatile unsigned int *)0x7015
#define ClearWDog (*((volatile unsigned char *) 0x7012))=1
#define P_IOA_Data (volatile unsigned int *)0x7000
#define P_IOA_Buffer (volatile unsigned int *)0x7001
#define P_IOA_Dir (volatile unsigned int *)0x7002
#define P_IOA_Attrib (volatile unsigned int *)0x7003
#define P_IOA_Latch (volatile unsigned int *)0x7004
#define C_ADCE 0x0001
#define C_ADC_CH1 0x0001 //IOA0
//========================================================================================
//函数名称 : int F_AD_Ctrl()
//描述 : 控制发光二极管的亮灭
//入口参数 : 无
//出口 : 从IOA0口输入的电压值
//========================================================================================
int AD(void);
float F_AD_Ctrl(void)
{
int i=0,k[3];//j=0,
float fVolVal=0.0;
unsigned int uiData;
long int uiData1=0;
k[0]=*P_IOA_Dir;
k[1]=*P_IOA_Attrib;
k[2]=*P_IOA_Buffer;
if((*P_IOA_Dir)&0x1==0x1) *P_IOA_Dir=(0xfffe)&*P_IOA_Dir;
if((*P_IOA_Attrib)&0x1==0x1) *P_IOA_Attrib=(0xfffe)&*P_IOA_Attrib;
if((*P_IOA_Data)&0x1==0x1) *P_IOA_Data=(0xfffe)&*P_IOA_Data;
*P_ADC_MUX_Ctrl=C_ADC_CH1; //LINE_IN-------IOA0
*P_ADC_Ctrl= C_ADCE; //ADC enable
uiData=*P_ADC_LINEIN_Data; //ADC start
for(i=0;i<20;i++)
{
uiData=AD();
uiData1=uiData1+uiData;
}
uiData=uiData1/20;
fVolVal=(float)uiData*3.3/0xffc0;
*P_IOA_Dir=k[0];
*P_IOA_Attrib=k[1];
*P_IOA_Data=k[2];
return fVolVal;
ClearWDog ;
}
int AD(void)
{
unsigned int uiData;
while(!(*P_ADC_MUX_Ctrl&0x8000)); //wait,until ADC complete
uiData=*P_ADC_LINEIN_Data;
return(uiData&0xffc0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -