#include "includes.h"

/***********************************************************************************
 * 函数名     	：CCP2_Configuration
 * 函数功能	：CCP2模块配置 工作在比较模式
 * 入口参数	：无
 * 返回         ：无
 * CCP2模块配置
 **********************************************************************************/
void CCP2_Configuration_Compare(void)
{
	// 关闭功能  捕捉/比较/PWM 关闭（复位CCP2 模块）
	PWM6CTL0=0x00;
	// 比较模式输出时配置IO引脚，即数字输出
	// 是否占用脚位，根据系统需要设计的比较模式确定，输出不需要配置IO
	/*
	 *  P6CH0HSEL=0;保留
		P6CH0HSEL=1;功能位于P1.0引脚上
	 *
	 * */
	P6CH0HSEL=1;
	//0000: 分频比为1:1	|0 = 禁止T2|T2分频器1分频比  00=分频比为1:1
	T2CTL0=T2CLK_Prescale1_DIV_4|T2CLK_Prescale2_DIV_1;
	//T2计数模式选择位 00 = 向上计数	|T2工作时钟选择位  01 = 选用SCLK时钟为T2工作时钟
	T2CTL1=TIMER2_UP_UPOverflow|T2CLK_SEL_SCLK;
	// T2定时器自身的配置，不重载的普通计数模式
	T2H=0;T2L=0;
	//bijiao
//	PP60L=0xff;
//	PP60H=0xff;
	// 配置CCP中断
	CCP2IF=0;
	//使能CCP2IE
	CCP2IE=1;
	//  脉宽配置,T采用内部晶振时钟时，不建议系统时钟低于该设置时钟，否则可能错过值匹配
	PWM6H0=100;
	PWM6L0=0x00;

	// 匹配工作模式
	PWM6CTL0=0x00 | 0x02;  // 比较模式：匹配时输出电平翻转（CCP2IF 置1）
	// 启动
	T2ON=1;
}

/***********************************************************************************
 * 函数名     	：CCP5_Configuration
 * 函数功能	：CCP5模块配置
 * 入口参数	：无
 * 返回         ：无
 * CCP5模块配置
 **********************************************************************************/
void CCP5_Configuration_Compare(void)
{
	// 关闭功能  捕捉/比较/PWM 关闭
	PWM7CTL0=0x00;
	// 比较模式输出时配置IO引脚，即数字输出
	// 是否占用脚位，根据系统需要设计的比较模式确定，需要输出时配置IO
/*
	 *
	 *  0= P7CH0H功能位于P9.4
		1= P7CH0H功能位于P1.1

	 *
	 *
	 * */
	P7CH0HSEL=0;

	// T5定时器自身的配置，不重载的普通计数模式
	T5H=0;T5L=0;
	//分频器2分频比  0000: 分频比为1:1|0 = 禁止T5|00=分频比为1:1
	T5CTL0=0x00 |0x00|0x00;
	//00 = 向上计数|01 = 选用SCLK时钟为T5工作时钟
	T5CTL1=0x00|0x00|0x02|0x00;
	PP70L=0xff;
	PP70H=0xff;
	// 配置CCP中断//CCP5IE  EIE5 bit4
	CCP5IF = 0;
	CCP5IE = 1;
	//  脉宽配置,T采用内部晶振时钟时，不建议系统时钟低于该设置时钟，否则可能错过值匹配
	PWM7L0=0x55;PWM7H0=0x55;

	//比较模式：匹配时输出电平翻转
	PWM7CTL0=0x00 | 0x02;
	T5ON=1;
}
/***********************************************************************************
 * 函数名     	：CCP8_Configuration
 * 函数功能	：CCP8模块配置
 * 入口参数	：无
 * 返回         ：无
 * CCP8模块配置
 **********************************************************************************/
void CCP8_Configuration_Compare(void)
{
	// 关闭比较功能
	PWM3CTL0=0x00;
	// 比较模式输出时配置IO引脚，即数字输出
	// 是否占用脚位，根据系统需要设计的比较模式确定
	/*	CCP8功能引脚选择位
	00= CCP8功能位于P1.1
	01= CCP8功能位于P6.2
	1x= CCP8功能位于P2.1

	*/
	CCP8SEL1=1;
	CCP8SEL0=0;

	// T1定时器自身的配置，不重载的普通计时模式
	T1CTL=0X00;
	//00 = 1/1倍预分频比 |00 = 选用SCLK时钟为T1工作时钟
	T1CTL2=0X00;

	// 模块
	T1H=0;T1L=0;

	// 配置CCP中断  ccp8if  ccp8ie  bit0
	CCP8IF = 0;
	CCP8IE = 1;
	// 使能CCP// 比较模式下参数设定，当T1选择内部高频源时，选择工作频率不高于系统时钟，否则可能匹配失败
	PWM3L1=0x55;	PWM3L0=0x55;
	//0010 = 比较模式，匹配时输出电平翻转（CCP9IF 置1）
	PWM3CTL0	=0x00|0x02	;
	T1ON=1;
}

void CCP9_Configuration_Compare(void)
{
	// 关闭比较功能
	PWM4CTL0=0x00;
	// 比较模式输出时配置IO引脚，即数字输出
	// 是否占用脚位，根据系统需要设计的比较模式确定
	/*	CCP9功能引脚选择位
	000= CCP9功能位于P7.2
	001= 保留
	010= CCP9功能位于P0.5
	011= CCP9功能位于P6.1
	1xx= CCP9功能位于P2.4
	*/
	CCP9SEL2=0;
	CCP9SEL1=1;
	CCP9SEL0=0;

	// T1定时器自身的配置，不重载的普通计时模式
//	T1CTL=0x00;
	T1CTL2=T1CLK_SEL_SCLK|T1CLK_Prescale_DIV_4;
	T1H=0;
	T1L=0;
//	PP2 = 0x80;
//	PP1 = 0;
	// 配置CCP中断//CCP9IE  EIE8 bit1
	CCP9IF=0;
	CCP9IE=1;

	// 使能CCP// 比较模式下参数设定，当T1选择内部高频源时，选择工作频率不高于系统时钟，否则可能匹配失败
	PWM4L1=0;
	PWM4L0=100;
	//0010 = 比较模式，匹配时输出电平翻转（CCP9IF 置1）
	PWM4CTL0	=0x00|0x02	;

	T1ON=1;
}

void CCP10_Configuration_Compare(void)
{
	// 关闭功能  捕捉/比较/PWM 关闭
	PWM5CTL0=0x00;
	// 比较模式输出时配置IO引脚，即数字输出
	// 是否占用脚位，根据系统需要设计的比较模式确定，需要输出时配置IO
/*
	 *CCP10功能引脚选择位
	 * 00= 保留
	   01= CCP10功能位于P2.3
	   1x= CCP10功能位于P0.3
	 *
	 *
	 * */
	CCP10SEL1=1;
	CCP10SEL0=1;

	// T1定时器自身的配置，不重载的普通计时模式
	T1CTL=0X00;
	//00 = 1/1倍预分频比 |00 = 选用SCLK时钟为T1工作时钟
	T1CTL2=0X00;

	// 模块
	T1H=0;T1L=0;
	T1ON=1;

	// 配置CCP中断//CCP9IE  EIE8 bit2
	CCP10IF = 0;
	CCP10IE = 1;

	// 使能CCP// 比较模式下参数设定，当T1选择内部高频源时，选择工作频率不高于系统时钟，否则可能匹配失败
	PWM5L1=0x55;	PWM5L0=0x55;
	//0010 = 比较模式，匹配时输出电平翻转（CCP9IF 置1）
	PWM5CTL0	=0x00|0x02	;
}



