zoukankan      html  css  js  c++  java
  • 中颖电子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值
    	
    }
    

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

  • 相关阅读:
    网络嗅探与协议分析之验收题
    20199121《网络攻防实践》第四周作业
    如何设计一个卡方检验
    20199121《网络攻防实践》第三周作业
    openssl制作证书全过程及https实现
    Padding Oracle攻击解密AES
    virt-sysprep命令清理缓存文件时失败的解决方法
    OpenStack的centos镜像制作
    KVM--Host does not support any virtualization...
    Centos7 安装VNC实现远程桌面
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4843312.html
Copyright © 2011-2022 走看看