📄 adc.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -