📄 stc89le516ad_adc.c
字号:
#include <reg52.h>
//STC89LE516AD扩展的SFR
sfr P1_ADC_EN =0X97; //转换功能允许
sfr ADC_CONTR=0XC5; //转换控制
sfr ADC_DATA=0XC6; //转换结果
/*-------------------------------------------------------------------------------------------
AD转换端口配置
---------------------------------------------------------------------------------------------*/
void AD_Port_config(void)
{
P1=P1 | 0X1c; //0001,1100 要AD转换,相应段口设定为高
P1_ADC_EN = 0X1c;
}
/*-------------------------------------------------------------------------------------------
延时
---------------------------------------------------------------------------------------------*/
void delay(unsigned char delay_time)
{
unsigned char n;
unsigned int m;
for(n=0;n<delay_time;n++){
for(m=0;m<1000;m++);
}
}
/*-------------------------------------------------------------------------------------------
AD转换函数
入口参数:转换通道
出口参数:转换8位结果
---------------------------------------------------------------------------------------------*/
unsigned char Get_AD_Result(unsigned char channel)
{
unsigned char AD_Finished=0; //转换结束标志
ADC_DATA=0;
ADC_CONTR=channel; //选择AD通道
delay(1); //等待电压稳定
ADC_CONTR|=0X08; //0000,1000 令ADC_START=1,启动AD转换
AD_Finished=0;
while(AD_Finished==0){
AD_Finished=(ADC_CONTR & 0x10);//0001,0000,ADC_FLAG=1 测试AD转换是否结束
}
ADC_CONTR&=0XF7; //1111,0111,令ADC_START=0;关AD
return(ADC_DATA);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -