stc89le516ad_adc.c
来自「此为本人今期一个项目的部分C51源程序」· C语言 代码 · 共 52 行
C
52 行
#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 + =
减小字号Ctrl + -
显示快捷键?