• 中颖电子AD操作


    #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值
    	
    }
    

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    黄聪:VirtualBox 安装ghost版windows XP
    黄聪:Delphi 关键字详解[整理于 "橙子" 的帖子]
    黄聪:全局变量 HInstance 到底是在什么时候赋值的?
    黄聪:演示 Rect、Bounds 生成 TRect 的区别
    黄聪:C#操作合并多个Word文档
    黄聪:C# .Net三层架构[转]
    黄聪:遗传算法实现自动组卷、随机抽题
    黄聪:SQL转换日期字段的问题——SQL中CONVERT转化函数的用法[转]
    黄聪:System 提供的编译期函数
    黄聪:语言字符集
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4843312.html
Copyright © 2020-2023  润新知