/*-------------------------------------------

程序名称：CCP 比较模式程序
日期版本：2018/6/15 <V1.1>

备注：

*本程序由 中微半导体有限公司 &应用支持部& 编写整理
*公司网址 www.mcu.com.cn
*技术支持QQ 3001082102  罗工
            3001085706	陈工
-------------------------------------------*/

#include <cms.h>


//定义选择使用的CCP
#define CCP1_On
//#define CCP2_On

void Set_CCP_Compare(unsigned char MatchValueH,unsigned char MatchValueL);


void main()
{
	asm("nop");
	asm("clrwdt");
	
	OSCCON = 0X71;				//8M内部时钟
	
	TRISB = 0;
	
	Set_CCP_Compare(0x03,0x20);		//CCP 比较模式初始化
	
	while(1)
	{
		asm("clrwdt");
	}
}


/***********************************************
函数名称：Set_CCP_Compare
函数功能：CCP比较模式初始化
入口参数：MatchValue - 比较匹配值(CCPR1H:CCPR1L)
出口参数：无
备注：100us RB口取反一次
		   CCPR1H:CCPR1L * (1/8MHZ)
		   = 800 * 0.125us
           = 100us(理论值)
************************************************/
void Set_CCP_Compare(unsigned char MatchValueH,unsigned char MatchValueL)
{
	TMR1L = 0;
	TMR1H = 0;
	
	#ifdef CCP1_On
		CCPR1H = MatchValueH;
		CCPR1L = MatchValueL;	//设置比较匹配值
		CCP1CON=0B00001011;		//CCP1配置为比较模式,触发特殊事件
		CCP1IE = 1;				//使能CCP1中断
	#else ifdef CCP2_On
		CCPR2H = MatchValueH;
		CCPR2L = MatchValueL;	//设置比较匹配值
		CCP2CON=0B00001011;		//CCP2配置为比较模式,触发特殊事件
		CCP2IE = 1;				//使能CCP2中断
	#endif

	INTCON=0B11000000;			//使能总中断
	T1CON=0B00000001;			//设置Timer1分频比1:1，开启Timer1
}

/***********************************************
函数名称：CCP_Isr
函数功能：CCP中断服务
入口参数：无
出口参数：无
备注：
************************************************/
void interrupt CCP_Isr(void)
{
	if(CCP1IF&&CCP1IE)
	{
		CCP1IF=0;
		PORTB^=0XFF;			//匹配时翻转IO口
		
	}
	if(CCP2IF&&CCP2IE)
	{
		CCP2IF=0;
		PORTB^=0XFF;			//匹配时翻转IO口
		
	}
}
