当前位置: 移动技术网 > IT编程>开发语言>.net > PIC16F1829 比较器初始化设置及应用

PIC16F1829 比较器初始化设置及应用

2018年09月19日  | 移动技术网IT编程  | 我要评论

射雕后宫,暧昧高手李扬,记忆重现

//===比较器2设置===========

//比较器2 反向输入端 通道选择
#define	cmp2_c2nch(x)	cm2con1 = (cm2con1&0xfc)|x  


#define	cmp2_ie_enb		c2ie = 1
#define	cmp2_ie_dis		c2ie = 0

#define	cmp2_intp_enb	c2intp = 1 //允许产生正边沿中断标志
#define	cmp2_intp_dis	c2intp = 0 //不允许产生正边沿中断标志
#define	cmp2_intn_enb	c2intn = 1 //允许产生负边沿中断标志
#define	cmp2_intn_dis	c2intn = 0 //不允许产生负边沿中断标志

#define	cmp2_out 		c2out //比较器2输出位

//*************************************
// 函数名称:init_cmp1bc
// 函数功能:初始化比较器1设置
// 入口参数:
// 出口参数:无
// 
//***************************************
void init_cmp2bc(void)
{
	cm2con0 = 0x84|(1<<4) ; //开启比较器 快速模式	比较器输出极性反相
//	c2hys = 1 ;//比较器滞后
	cm2con1 = 0x00 ; //
	c2oe = 1 ;//输出使能
//	c2intp = 1 ;//允许正向边沿
//	c2intn = 1 ;//允许负向边沿
}

//*************************************
// 函数名称:setcmpparam
// 函数功能:设置比较器参数
// 入口参数:当前步1-6 
// 出口参数:
// 血液 : 此设置为bldc 无感检测反电动势设置
//***************************************
void setcmpparam(uint8 invalue)
{	
	if(f_direction == zen)
	{
		switch(invalue)//取步 正转
		{
			case 1 : //ab 	
				cmp2_c2nch(cplc_chanal) ;//检测c点电势
				cmp2_intp_dis ;
				cmp2_intn_enb ;		//检测下降沿
				break ;
			case 2 ://ac			
				cmp2_c2nch(cplb_chanal) ;//检测b点电势
				cmp2_intn_dis ;
				cmp2_intp_enb ;		//检测上降沿
				break ;
			case 3 : //bc		
				cmp2_c2nch(cpla_chanal) ;//检测a点电势	
				cmp2_intp_dis ;
				cmp2_intn_enb ;		//检测下降沿		
				break ;
			case 4 ://ba	
				cmp2_c2nch(cplc_chanal) ;//检测c点电势
				cmp2_intn_dis ;
				cmp2_intp_enb ;		//检测上降沿		
				break ;
			case 5 ://ca	
				cmp2_c2nch(cplb_chanal) ;//检测b点电势
				cmp2_intp_dis ;
				cmp2_intn_enb ;		//检测下降沿
				break ;
			case 6 ://cb	
				cmp2_c2nch(cpla_chanal) ;//检测a点电势
				cmp2_intn_dis ;
				cmp2_intp_enb ;		//检测上降沿
				break ;		
			default : 	
				return ; //霍尔信号不正确 直接退出
				//break ;
		}
	}
	else	//反转
	{   
		switch(invalue)//取步 反转
		{
			case 1 : //ab 	
				cmp2_c2nch(cplc_chanal) ;//检测c点电势
				cmp2_intn_dis ;
				cmp2_intp_enb ;		//检测上降沿
				break ;
			case 2 ://ac			
				cmp2_c2nch(cplb_chanal) ;//检测c点电势	
				cmp2_intp_dis ;
				cmp2_intn_enb ;		//检测下降沿	
				break ;
			case 3 : //bc		
				cmp2_c2nch(cpla_chanal) ;//检测c点电势	
				cmp2_intn_dis ;
				cmp2_intp_enb ;		//检测上降沿				
				break ;
			case 4 ://ba	
				cmp2_c2nch(cplc_chanal) ;//检测c点电势	
				cmp2_intp_dis ;
				cmp2_intn_enb ;		//检测下降沿			
				break ;
			case 5 ://ca	
				cmp2_c2nch(cplb_chanal) ;//检测c点电势	
				cmp2_intn_dis ;
				cmp2_intp_enb ;		//检测上降沿
				break ;
			case 6 ://cb	
				cmp2_c2nch(cpla_chanal) ;//检测c点电势
				cmp2_intp_dis ;
				cmp2_intn_enb ;		//检测下降沿
				break ;		
			default : 	
				return ; //霍尔信号不正确 直接退出
				//break ;
		}
	}	
}	

	
//---应用实例----
	//cmp2 初始化
	init_cmp2bc() ; //初始化比较器2 
	
	//设置比较器参数
	setcmpparam(1) ;//

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网