adc.c
来自「STC89LE516AD的ADC驱动源代码,包含了引起错误的注意事项」· C语言 代码 · 共 38 行
C
38 行
#define ADC_GLOBALS
#include "INCLUDES.H"
#if 0
void ADCPwrOn(void)
{
ADC_CONTR|=(1<<ADC_CONTR_POWER_B);
Delay100us(10);
}
#endif
/*STC89LE516AD 17个机器周期可完成一次转换*/
Uchar ADCGetResult(Uchar ch)
{
Uchar i;
#if 0
if(ADCIsAlreadyPwrOn() ==0){
ADCPwrOn();
}
#endif
P1_ADC_EN=0xf0; //1=enable ADC,OPEN DRAIN.不能采用动态 P1_ADC_EN=(1<<ch);这样会出问题(同时读到两个通道的值,其它一个读取不到值)
ADC_CONTR=0X00; //CLR ADC_FLAG,CLR ADC_START.
ADC_CONTR|=ch; //select CH(CHS2,1,0)
ADC_DATA=0X00; //CLR ADC_DATA
Delay100us(100); //使输入电压稳定
//ADC_CONTR&=(~(1<<ADC_CONTR_FLAG_B));//CLR ADC_FLAG
ADC_CONTR|=(1<<ADC_CONTR_START_B); //ADC START.
for(i=100;i>0;i--){
if(ADCIsAlreadyFinish() )break;
Delay100us(0);
if(i<=1){ //ERR
ADC_CONTR&=(~(1<<ADC_CONTR_START_B)); //close(stop) ADC.
return(0xff);
}
}
ADC_CONTR&=(~(1<<ADC_CONTR_START_B)); //close(stop) ADC.
return(ADC_DATA);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?