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 + -
显示快捷键?