中颖AD操作

来源:互联网 发布:java导出excel 换行符 编辑:程序博客网 时间:2024/04/28 12:06
#defineADC_DIS0#defineADC_ENB1  //ADC通道号定义#defineADC_Chanel0(unsigned char)(0x00<<1)#defineADC_Chanel1(unsigned char)(0x01<<1)#defineADC_Chanel2(unsigned char)(0x02<<1)#defineADC_Chanel3(unsigned char)(0x03<<1)#defineADC_Chanel4(unsigned char)(0x04<<1)#defineADC_Chanel5(unsigned char)(0x05<<1)#defineADC_Chanel6(unsigned char)(0x06<<1)#defineADC_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 /32Bank0;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 ; //开始转换ADwhile(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值}

6 0
原创粉丝点击