首页 > 代码库 > 中颖SH79F1616 ADC初始化程序

中颖SH79F1616 ADC初始化程序

//========c51adc.h=============================================
#ifndef _C51ADC_H_
#define _C51ADC_H_

 
//ADC通道号定义
#define  ADC_Chanel0   (0x00<<1)
#define  ADC_Chanel1   (0x01<<1)
#define  ADC_Chanel2   (0x02<<1)
#define  ADC_Chanel3   (0x03<<1)
#define  ADC_Chanel4   (0x04<<1)
#define  ADC_Chanel5   (0x05<<1)
#define  ADC_Chanel6   (0x06<<1)
#define  ADC_Chanel7   (0x07<<1)
 
//AD通道使能
//#define  ADC_CHANEL_ENABLE(Chanel)  ADC_CSR = (ADC_CSR & 0XF0)|Chanel ;
extern void Init_AD(void) ;
extern void AdcSwitch(uint8 Chanel);

#endif

//========c51adc.c==============================================
                                                                        
#include "global.h"
#include "c51adc.h"
//*************************************
// 函数名称:Init_AD
// 函数功能:对AD初始化,开启或关闭ADC电路 
// 入口参数:
// 出口参数:无
/***************************************/
void Init_AD(void)
{
//     0  1  2  3  4  5   6   7 对应转换时钟为
//Fsys/2 /4 /6 /8 /12 /16 /24 /32
 Bank0;
 ADCON = 0X80 ;  //打开ADC模块
 ADT = 0 ;
 ADT |= (2<<5) ; //Fsys/6 转换时钟
 ADT |= 5 ; //采样时间设置 0-15
 
}
//*************************************
// 函数名称:AdcSwitch
// 函数功能: 在单通道模式下转换某一通道的AD值
//      在(扫描模式下)连续转化1-Chanel的AD值
// 入口参数:要转换的AD通道号
// 出口参数:无
//***************************************
void AdcSwitch(uint8 Chanel)
{ 
 Bank0; 
 ADCON = 0x80 | Chanel ; //选择通道
    _nop_();_nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();_nop_();
 ADCON |= 0x01 ; //开始转换AD
    _nop_();_nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();_nop_();
 while(ADCON & 0x01); //等待转换结束
 return ;
}