标题:
求一段MCU原函数的详细解释
[打印本页]
作者:
qq3119564
时间:
2018-4-2 15:40
标题:
求一段MCU原函数的详细解释
/******************************************************************************
*函数名称:uint adc10_start(uchar channel);
*函数功能:adc采集
*输入参数:channel:1-7
*输出参数:adc
*返回值:adc10_start()
*******************************************************************************/
uint adc10_start(uchar channel) //channel = 0~7
{
uint adc;
uchar i;
ADC_RES = 0;
ADC_RESL = 0;
ADC_CONTR = (ADC_CONTR & 0xe0) | ADC_START | channel;
i = 250;
do{
if(ADC_CONTR & ADC_FLAG)
{
ADC_CONTR &= ~ADC_FLAG;
adc = (uint)ADC_RES;
adc = (adc << 2) | (ADC_RESL & 3);
return adc;
}
}while(--i);
return 1024;
}
/******************************************************************************
*函数名称:void delay1_ms(unsigned char ms);
*函数功能:延时函数
*输入参数:ms
*输出参数:无
*返回值:无
*******************************************************************************/
void delay1_ms(unsigned char ms)
{
unsigned int i;
do{
i = MAIN_Fosc / 14000;
while(--i) ; //14T per loop
}while(--ms);
}
/******************************************************************************
*函数名称:void INputchange(uchar date);
*函数功能:选择12C5A60AD/S2系列模拟输入(AD)选择
*输入参数:date
*输出参数:无
*返回值:无
*******************************************************************************/
void INputchange(uchar date)
{
P1ASF = date;//0x03;//(1 << ADC_CH0); //12C5A60AD/S2系列模拟输入(AD)选择
ADC_CONTR = ADC_360T | ADC_ON;
}
/******************************************************************************
*函数名称:uint AdHandle(uchar num);
*函数功能:AD数据处理函数
*输入参数:num
*输出参数:number
*返回值:AdHandle
*******************************************************************************/
uint AdHandle(uchar num)
{ uint count;
uint number;
delay1_ms(100);
delay1_ms(100);
count = adc10_start(num); // P1.0 ADC
number = ((float)count*4.8828 ); //将采集的电压放大1000倍,主要是为了提高co计算的精度
return number;
}
以及哪种AD转换器可以用这段原函数进行仿真?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1