打印
[其它应用]

中颖AD操作

[复制链接]
18516|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaoqi000|  楼主 | 2021-6-22 23:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#define                ADC_DIS                0
#define                ADC_ENB                1


//ADC通道号定义
#define                ADC_Chanel0                        (unsigned char)(0x00<<1)
#define                ADC_Chanel1                        (unsigned char)(0x01<<1)
#define                ADC_Chanel2                        (unsigned char)(0x02<<1)
#define                ADC_Chanel3                        (unsigned char)(0x03<<1)
#define                ADC_Chanel4                        (unsigned char)(0x04<<1)
#define                ADC_Chanel5                        (unsigned char)(0x05<<1)
#define                ADC_Chanel6                        (unsigned char)(0x06<<1)
#define                ADC_Chanel7                        (unsigned char)(0x07<<1)

//*************************************
// 函数名称:Init_AD
// 函数功能:对AD初始化,开启或关闭ADC电路
// 入口参数:ADC电路使能参数
// 出口参数:无
/***************************************/
void Init_AD(uint8 Mode)
{
//     0  1  2  3  4  5   6   7 对应转换时钟为
//Fsys/2 /4 /6 /8 /12 /16 /24 /32
        Bank0;
        if(Mode == ADC_ENB)
        {
                ADCON = 0X80 ;         //打开ADC模块
                ADT = 0 ;
                ADT |= (2<<5) ; //Fsys/6 转换时钟
                ADT |= 5 ; //采样时间设置 0-15
        }
        else
        {
                ADCON &= ~0x80 ; //关闭ADC模块
        }       

}


//*************************************
// 函数名称:AdcSwitch
// 函数功能: 在单通道模式下转换某一通道的AD值
//                                         在(扫描模式下)连续转化1-Chanel的

AD值
// 入口参数:要转换的AD通道号
// 出口参数:无
/***************************************/
void AdcSwitch(uint8 Chanel)
{       
        uint8 i = 0 ;

        for(i=20;i>0;i--) ;
        Bank0; ;
//        ADCON = 0X80 ;         //打开ADC模块
        ADCON = (ADCON & ~(7<<1)) | Chanel ; //选择通道
        ADCON |= 0x01 ; //开始转换AD
        while(ADCON & 0x01); //等待转换结束

        return ;
}

//*************************************
// 函数名称:INIT_AD
// 函数功能: AD初始化
// 入口参数:要转换的AD通道号
// 出口参数:无
/***************************************/

void INIT_AD(void)
{
        Init_AD(ADC_ENB) ;
        ADCH = (SETB0) ;        //P4.1作为AD输入
}

//*************************************
// 函数名称:ReadAD
// 函数功能: 读AD
// 入口参数:要转换的AD通道号
// 出口参数:无
/***************************************/
uint16 ReadAD(void)
{
        AdcSwitch(ADC_Chanel0) ;//选择通道0 并进行AD转换
        return (uint16)(ADDH<<8+ADDL);//返回AD值
       
}


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

45

主题

671

帖子

0

粉丝