⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc.c

📁 STC89LE516AD的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 + -