 #include 	"main.h"		

unsigned char TimeCnt;
bit F_ADD1_SUB0;
unsigned char PWM_Duty;

//==============================================
//1.>中断函数
//==============================================
void interrupt myIsr(void)    
{
	

	if (FC1IF) {
		FC1IF = 0;
		PORTA = PORTA ^ 0x40;
	}

	if(FC2IF) 
	{ 
		FC2IF = 0; 	 
		PORTA = PORTA^0x40;	
	} 
}




//================================================================
#define		COMP_MODE0	0x00	//CMCH<2:0>=000
#define		COMP_MODE1	0x01	//CMCH<2:0>=001
#define		COMP_MODE2	0x02	//CMCH<2:0>=010
#define		COMP_MODE3	0x03	//CMCH<2:0>=011
#define		COMP_MODE4	0x04	//CMCH<2:0>=100
#define		COMP_MODE5	0x05	//CMCH<2:0>=101
#define		COMP_MODE6	0x06	//CMCH<2:0>=110
#define		COMP_MODE	COMP_MODE5
//****COMP function****// 
//模拟输入端口：相应的 I/O 需设置 TRISx = 1 和 ANSELx =1 来配置成模拟输入
void COMP_Init(void)
{


	//  CMCON0 =0;
	//bit7 C2OUT  比较器C2 输出结果[ C2INV = 0: (1 = VIN+ > VIN-) (0 = VIN+ < VIN-)] ,[ C2INV = 1: (1 = VIN+ < VIN-) (0 = VIN+ > VIN-)] ,
	//bit6 C1OUT  比较器C1 输出结果[ C1INV = 0: (1 = VIN+ > VIN-) (0 = VIN+ < VIN-)] ,[ C1INV = 1: (1 = VIN+ < VIN-) (0 = VIN+ > VIN-)] ,
	//bit5 C2INV  比较器C2 输出极性 0:正常 1:反向
	//bit4 C1INV	比较器C1 输出极性 0:正常 1:反向
	//bit3 CIS		比较器输入切换  [当 CMCH<2:0> = 001: 1 = C1VIN-接 C1IN+ (PA0),0 = C1VIN-接 C1IN- (PA1)],[当 CMCH<2:0>= 010:(1 = C1VIN-接 C1IN+ (PA0)，C2VIN- 接 C2IN+ (PC0)),(0 = C1VIN-接 C1IN- (PA1)，C2VIN- 接 C2IN- (PC1))]
	//bit2:bit0  CMCH2:CMCH0 比较器模式选择

		//000 = 关闭
		//001 = 2 个比较器，公共参考端，3 路输入
		//010 = 2 个比较器，公共内部参考电压 CVREF，4 路输入
		//011 = 2 个比较器，公共参考端，2 路输入
		//100 = 2 个独立比较器
		//101 = 1 个独立比较器
		//110 = 1 个带输出比较器，公共参考端，2 路输入
		//111 = 关闭

	//CMCON1
		//bit3	 C2FIEN：比较器C2数字滤波使能  0 = 无滤波		  1 = 有滤波
		//bit2	 C1FIEN：比较器C2数字滤波使能  0 = 无滤波		  1 = 有滤波
		//bit1	 T1GSS：T1门控源，0 = 比较器 C2 的输出，				1 = T1G 引脚 (PA6 配置为输入模式)
		//bit0	 C2SYNC：比较器 C2 输出同步控制 0 = 异步输出   1 = 与 T1 时钟的下降沿同步

	//VRCON    //比较器内部参考电压
	//bit7   内部参考电压 CVREF 0 = 关闭 (无电流消耗) 1 = 使能
	//bit5   CVREF 范围  0 = 高电平 1 = 低电平
	//bit3:bit0  CVREF 值
	// 
	//  当 VRR = 1 时: CVREF = (VR<3:0>/24)*VDD
	//  当 VRR = 0 时: CVREF = VDD/4 + (VR<3:0>/32)*VDD




	VRCON = 0x00;	//0-0- 0000
	CMCON1 = 0x00;	//---- 0000
	CMCON0 = 0x00;	//0000 0000
	
	C1IF = 0;	C1IE = 0;
	C2IF = 0;	C2IE = 0;
	#if(COMP_MODE == COMP_MODE1)	//2 个比较器，公共参考端，3 路输入[CMCH<2:0>=001]
	{
//	C1IN-(PA1)\	------	 |-╲	
//	C1IN+(PA0)			 | △ ＞-C1OUT
//					|--	 |+╱	
//	C2IN-(PC1)	---|---	 |-╲
//					|	 | △ ＞-C2OUT
//	C2IN+(PC0)	----|--	 |+╱
		
		TRISA |= TRISA1;		ANSEL |= ANSEL_PA1;
		
		TRISC |= (TRISC0);		ANSEL |= (ANSEL_PC0);
		TRISC |= (TRISC1);		ANSEL |= (ANSEL_PC1);
		
		VRCON = 0x00;	//0-0- 0000
				//;Bit7：VREN：内部参考电压 CVREF	;0-DIS, 1-EN
				//;Bit5：VRR：CVREF 范围	;0-HIGH， 1-LOW
				//;B3~0: VR<3:0>：CVREF 值
				
		CMCON1 = 0x0E;	//---- 1110	;滤波使能;-20230810
		//CMCON1 = 0x02;	//---- 1110 ;滤波no使能;-20230810
				//;Bit3：C2FIEN：比较器 C2 数字滤波使能; 0-with,1-no
				//;Bit2: C1FIEN：比较器 C1 数字滤波使能; 0-with,1-no
				//;Bit1: T1GSS：T1 门控源 ； 0-比较器C2的输出，1-T1G 引脚 (PA6 配置为输入模式)
				//;Bit0: C2SYNC：比较器 C2 输出同步控制； 0-异步输出，1-与 T1 时钟的下降沿同步
				
		CMCON0 = 0x01;	//0000 0001 ;CIS-PA1; C2 输出极性-0=normal; C1 输出极性-0=normal;-20230810
		CMCON0 = 0x09;	//0000 1001 ;CIS-PA0; C2 输出极性-0=normal; C1 输出极性-0=normal;-20230810
		
		CMCON0 = 0x39;	//0011 1001 ;CIS-PA0; C2 输出极性-1=inv; C1 输出极性-1=inv;;-20230810
		CMCON0 = 0x31;	//0011 0001 ;CIS-PA1; C2 输出极性-1=inv; C1 输出极性-1=inv;;-20230810
				//;Bit7：C2OUT：比较器 C2 输出结果
				//;Bit6：C1OUT：比较器 C1 输出结果
				//;Bit5：C2INV：比较器 C2 输出极性;	0=normal,1=inv
				//;Bit4：C1INV：比较器 C1 输出极性;	0=normal,1=inv
				//;Bit3：CIS：比较器输入切换 
				//;B2~0: CMCH<2:0>：比较器模式选择
					//000=关闭	//111=关闭
					//001=2 个比较器，公共参考端，3 路输入		//010=2 个比较器，公共内部参考电压 CVREF，4 路输入
					//011=2 个比较器，公共参考端，2 路输入		//100=2 个独立比较器
					//101=1 个独立比较器						//110=2 个带输出比较器，公共参考端，2 路输入					
	}
	#elif(COMP_MODE == COMP_MODE2)	//[CMCH<2:0>=010] CVREF
	{
//	C1IN-(PA1)	------	 |-╲	
//	C1IN+(PA0)			 | △ ＞-C1OUT
//					|--	 |+╱	
//	C2IN-(PC1)	---|---	 |-╲
//	C2IN+(PC0)		|	 | △ ＞-C2OUT
//				----|--	 |+╱
		TRISA |= TRISA0;		ANSEL |= ANSEL_PA0;
		
		TRISC |= (TRISC0);		ANSEL |= (ANSEL_PC0);
		//TRISC |= (TRISC1);
		//ANSEL |= (ANSEL_PC1);
		
		VRCON = 0x80;	//1-0- 0000;	HIGH-: CVREF = VDD/4 + (VR<3:0>/32)*VDD
							//VR<3:0>	
							//0000;	CVREF=VDD/4+VDD*0/32=VDD*8/32;	=1.25V{VDD=5V}
							//0001;	CVREF=VDD/4+VDD*1/32=VDD*9/32;	=1.4V{VDD=5V}
							//0010;	CVREF=VDD/4+VDD*2/32=VDD*10/32;	=1.56V{VDD=5V}
							//0011;	CVREF=VDD/4+VDD*3/32=VDD*11/32;	=1.71V{VDD=5V}
							
							//0100;	CVREF=VDD/4+VDD*4/32=VDD*12/32;	=1.87V{VDD=5V}
							//0101;	CVREF=VDD/4+VDD*5/32=VDD*13/32;	=2.03V{VDD=5V}
							//0110;	CVREF=VDD/4+VDD*6/32=VDD*14/32;	=2.18V{VDD=5V}
							//0111;	CVREF=VDD/4+VDD*7/32=VDD*15/32;	=2.34V{VDD=5V}
							
							//1000;	CVREF=VDD/4+VDD*8/32=VDD*16/32;	=2.5V{VDD=5V}
							//1001;	CVREF=VDD/4+VDD*9/32=VDD*17/32;	=2.65V{VDD=5V}
							//1010;	CVREF=VDD/4+VDD*10/32=VDD*18/32;=2.81V{VDD=5V}
							//1011;	CVREF=VDD/4+VDD*11/32=VDD*19/32;=2.96V{VDD=5V}
							
							//1100;	CVREF=VDD/4+VDD*12/32=VDD*20/32;	=3.125V{VDD=5V}
							//1101;	CVREF=VDD/4+VDD*13/32=VDD*21/32;	=3.28V{VDD=5V}
							//1110;	CVREF=VDD/4+VDD*14/32=VDD*22/32;	=3.44V{VDD=5V}
							//1111;	CVREF=VDD/4+VDD*15/32=VDD*23/32;	=3.6V{VDD=5V}
							
		//VRCON = 0xA0;	//1-1- 0000;	LOW-: CVREF = (VR<3:0>/24)*VDD
							//VR<3:0>
							//0000;	CVREF=VDD*0/24;	=0V{VDD=5V}
							//0001;	CVREF=VDD*1/24;	=0.21V{VDD=5V}
							//0010;	CVREF=VDD*2/24;	=0.416V{VDD=5V}
							//0011;	CVREF=VDD*3/24;	=0.625V{VDD=5V}
							
							//0100;	CVREF=VDD*4/24;	=0.83V{VDD=5V}
							//0101;	CVREF=VDD*5/24;	=1.04V{VDD=5V}
							//0110;	CVREF=VDD*6/24;	=1.25V{VDD=5V}
							//0111;	CVREF=VDD*7/24;	=1.46V{VDD=5V}
							
							//1000;	CVREF=VDD*8/24;	=1.67V{VDD=5V}
							//1001;	CVREF=VDD*9/24;	=1.875V{VDD=5V}
							//1010;	CVREF=VDD*10/24;	=2.08V{VDD=5V}
							//1011;	CVREF=VDD*11/24;	=2.29V{VDD=5V}
							
							//1100;	CVREF=VDD*12/24;	=2.5V{VDD=5V}
							//1101;	CVREF=VDD*13/24;	=2.7V{VDD=5V}
							//1110;	CVREF=VDD*14/24;	=2.91V{VDD=5V}
							//1111;	CVREF=VDD*15/24;	=3.125V{VDD=5V}
							
				//;Bit7：VREN：内部参考电压 CVREF	;0-DIS, 1-EN
				//;Bit5：VRR：CVREF 范围	;0-HIGH， 1-LOW
				//;B3~0: VR<3:0>：CVREF 值
				
		CMCON1 = 0x0E;	//---- 1110
				//;Bit3：C2FIEN：比较器 C2 数字滤波使能; 0-with,1-no
				//;Bit2: C1FIEN：比较器 C1 数字滤波使能; 0-with,1-no
				//;Bit1: T1GSS：T1 门控源 ； 0-比较器C2的输出，1-T1G 引脚 (PA6 配置为输入模式)
				//;Bit0: C2SYNC：比较器 C2 输出同步控制； 0-异步输出，1-与 T1 时钟的下降沿同步
				
		CMCON0 = 0x3A;	//0011 1010
				//;Bit7：C2OUT：比较器 C2 输出结果
				//;Bit6：C1OUT：比较器 C1 输出结果
				//;Bit5：C2INV：比较器 C2 输出极性;	0=normal,1=inv
				//;Bit4：C1INV：比较器 C1 输出极性;	0=normal,1=inv
				//;Bit3：CIS：比较器输入切换
				//;B2~0: CMCH<2:0>：比较器模式选择
					//000=关闭
					//001=2 个比较器，公共参考端，3 路输入
					//010=2 个比较器，公共内部参考电压 CVREF，4 路输入
					//011=2 个比较器，公共参考端，2 路输入
					//100=2 个独立比较器
					//101=1 个独立比较器
					//110=2 个带输出比较器，公共参考端，2 路输入
					//111=关闭
		FC1IF = 0;
		FC1IE = 1;
		FC2IF = 0;
		FC2IE = 1;
		PEIE = 1;	//with
		GIE = 0;
		
		WDTE=0;
		asm("NOP");
		SLEEP();		
		WDTE=1;
	}
	#elif(COMP_MODE == COMP_MODE3)	//[CMCH<2:0>=011]
	{
//	C1IN-(PA1)	------	|-╲	
//						| △ ＞-C1OUT
//					|--	|+╱	
//	C2IN-(PC1)	---|---	|-╲
//					|	| △ ＞-C2OUT
//	C2IN+(PC0)	----|--	|+╱
		TRISA |= TRISA1;
		ANSEL |= ANSEL_PA1;
		
		TRISC |= (TRISC0);
		ANSEL |= (ANSEL_PC0);
		TRISC |= (TRISC1);
		ANSEL |= (ANSEL_PC1);
		
		VRCON = 0x00;	//0-0- 0000
				//;Bit7：VREN：内部参考电压 CVREF	;0-DIS, 1-EN
				//;Bit5：VRR：CVREF 范围	;0-HIGH， 1-LOW
				//;B3~0: VR<3:0>：CVREF 值
				
		CMCON1 = 0x0E;	//---- 1110
				//;Bit3：C2FIEN：比较器 C2 数字滤波使能; 0-with,1-no
				//;Bit2: C1FIEN：比较器 C1 数字滤波使能; 0-with,1-no
				//;Bit1: T1GSS：T1 门控源 ； 0-比较器C2的输出，1-T1G 引脚 (PA6 配置为输入模式)
				//;Bit0: C2SYNC：比较器 C2 输出同步控制； 0-异步输出，1-与 T1 时钟的下降沿同步
				
		CMCON0 = 0x33;	//0011 0011
				//;Bit7：C2OUT：比较器 C2 输出结果
				//;Bit6：C1OUT：比较器 C1 输出结果
				//;Bit5：C2INV：比较器 C2 输出极性;	0=normal,1=inv
				//;Bit4：C1INV：比较器 C1 输出极性;	0=normal,1=inv
				//;Bit3：CIS：比较器输入切换
				//;B2~0: CMCH<2:0>：比较器模式选择
					//000=关闭
					//001=2 个比较器，公共参考端，3 路输入
					//010=2 个比较器，公共内部参考电压 CVREF，4 路输入
					//011=2 个比较器，公共参考端，2 路输入
					//100=2 个独立比较器
					//101=1 个独立比较器
					//110=2 个带输出比较器，公共参考端，2 路输入
					//111=关闭
	}
	#elif(COMP_MODE == COMP_MODE4)	//[CMCH<2:0>=100]
	{
//	C1IN-(PA1)	------	|-╲	
//						| △ ＞-C1OUT
//	C1IN+(PA0)	------	|+╱	
//	C2IN-(PC1)	------	|-╲
//						| △ ＞-C2OUT
//	C2IN+(PC0)	------	|+╱
		TRISA |= TRISA0;
		ANSEL |= ANSEL_PA0;
		TRISA |= TRISA1;
		ANSEL |= ANSEL_PA1;
		
		TRISC |= (TRISC0);
		ANSEL |= (ANSEL_PC0);
		TRISC |= (TRISC1);
		ANSEL |= (ANSEL_PC1);
		
		VRCON = 0x00;	//0-0- 0000
				//;Bit7：VREN：内部参考电压 CVREF	;0-DIS, 1-EN
				//;Bit5：VRR：CVREF 范围	;0-HIGH， 1-LOW
				//;B3~0: VR<3:0>：CVREF 值
				
		CMCON1 = 0x0E;	//---- 1110
				//;Bit3：C2FIEN：比较器 C2 数字滤波使能; 0-with,1-no
				//;Bit2: C1FIEN：比较器 C1 数字滤波使能; 0-with,1-no
				//;Bit1: T1GSS：T1 门控源 ； 0-比较器C2的输出，1-T1G 引脚 (PA6 配置为输入模式)
				//;Bit0: C2SYNC：比较器 C2 输出同步控制； 0-异步输出，1-与 T1 时钟的下降沿同步
				
		CMCON0 = 0x34;	//0011 0100
				//;Bit7：C2OUT：比较器 C2 输出结果
				//;Bit6：C1OUT：比较器 C1 输出结果
				//;Bit5：C2INV：比较器 C2 输出极性;	0=normal,1=inv
				//;Bit4：C1INV：比较器 C1 输出极性;	0=normal,1=inv
				//;Bit3：CIS：比较器输入切换
				//;B2~0: CMCH<2:0>：比较器模式选择
					//000=关闭
					//001=2 个比较器，公共参考端，3 路输入
					//010=2 个比较器，公共内部参考电压 CVREF，4 路输入
					//011=2 个比较器，公共参考端，2 路输入
					//100=2 个独立比较器
					//101=1 个独立比较器
					//110=2 个带输出比较器，公共参考端，2 路输入
					//111=关闭
	}
	#elif(COMP_MODE == COMP_MODE5)	//[CMCH<2:0>=101]
	{
//	C1IN-(PA1)	------	|-╲	
//						| △ ＞-off
//	C1IN+(PA0)	------	|+╱	
//	C2IN-(PC1)	------	|-╲
//						| △ ＞-C2OUT
//	C2IN+(PC0)	------	|+╱
		TRISC |= (TRISC0);		ANSEL |= (ANSEL_PC0);
		TRISC |= (TRISC1);		ANSEL |= (ANSEL_PC1);
		
		VRCON = 0x00;	//0-0- 0000
				//;Bit7：VREN：内部参考电压 CVREF	;0-DIS, 1-EN
				//;Bit5：VRR：CVREF 范围	;0-HIGH， 1-LOW
				//;B3~0: VR<3:0>：CVREF 值
				
		CMCON1 = 0x0E;	//---- 1110
				//;Bit3：C2FIEN：比较器 C2 数字滤波使能; 0-with,1-no
				//;Bit2: C1FIEN：比较器 C1 数字滤波使能; 0-with,1-no
				//;Bit1: T1GSS：T1 门控源 ； 0-比较器C2的输出，1-T1G 引脚 (PA6 配置为输入模式)
				//;Bit0: C2SYNC：比较器 C2 输出同步控制； 0-异步输出，1-与 T1 时钟的下降沿同步
				
		CMCON0 = 0x35;	//0011 0101
				//;Bit7：C2OUT：比较器 C2 输出结果
				//;Bit6：C1OUT：比较器 C1 输出结果
				//;Bit5：C2INV：比较器 C2 输出极性;	0=normal,1=inv
				//;Bit4：C1INV：比较器 C1 输出极性;	0=normal,1=inv
				//;Bit3：CIS：比较器输入切换
				//;B2~0: CMCH<2:0>：比较器模式选择
					//000=关闭
					//001=2 个比较器，公共参考端，3 路输入
					//010=2 个比较器，公共内部参考电压 CVREF，4 路输入
					//011=2 个比较器，公共参考端，2 路输入
					//100=2 个独立比较器
					//101=1 个独立比较器
					//110=2 个带输出比较器，公共参考端，2 路输入
					//111=关闭


		FC2IF = 0;
		FC2IE = 1;

		PEIE = 1;	//with
		GIE = 1;

		WDTE = 0;
		asm("NOP");
		SLEEP();
		WDTE = 1;



	}
	#elif(COMP_MODE == COMP_MODE6)	//[CMCH<2:0>=110]
	{
//	C1IN-(PA1)	------	|-╲	
//						| △ ＞-C1OUT
//				  |---	|+╱		└---PA2
//	C2IN-(PC1)	-|----	|-╲
//				  |		| △ ＞-C2OUT
//	C2IN+(PC0)	--|---	|+╱		└---PC4

		TRISA |= (TRISA1);		ANSEL |= (ANSEL_PA1);
		
		TRISC |= (TRISC0);		ANSEL |= (ANSEL_PC0);
		TRISC |= (TRISC1);		ANSEL |= (ANSEL_PC1);
		
		VRCON = 0x00;	//0-0- 0000
				//;Bit7：VREN：内部参考电压 CVREF	;0-DIS, 1-EN
				//;Bit5：VRR：CVREF 范围	;0-HIGH， 1-LOW
				//;B3~0: VR<3:0>：CVREF 值
				
		CMCON1 = 0x0E;	//---- 1110
				//;Bit3：C2FIEN：比较器 C2 数字滤波使能; 0-with,1-no
				//;Bit2: C1FIEN：比较器 C1 数字滤波使能; 0-with,1-no
				//;Bit1: T1GSS：T1 门控源 ； 0-比较器C2的输出，1-T1G 引脚 (PA6 配置为输入模式)
				//;Bit0: C2SYNC：比较器 C2 输出同步控制； 0-异步输出，1-与 T1 时钟的下降沿同步
				
		CMCON0 = 0x36;	//0011 0110
				//;Bit7：C2OUT：比较器 C2 输出结果
				//;Bit6：C1OUT：比较器 C1 输出结果
				//;Bit5：C2INV：比较器 C2 输出极性;	0=normal,1=inv
				//;Bit4：C1INV：比较器 C1 输出极性;	0=normal,1=inv
				//;Bit3：CIS：比较器输入切换
				//;B2~0: CMCH<2:0>：比较器模式选择
					//000=关闭
					//001=2 个比较器，公共参考端，3 路输入
					//010=2 个比较器，公共内部参考电压 CVREF，4 路输入
					//011=2 个比较器，公共参考端，2 路输入
					//100=2 个独立比较器
					//101=1 个独立比较器
					//110=2 个带输出比较器，公共参考端，2 路输入
					//111=关闭
	}
	#endif
}

//****main function****//
void main(void) 
{
	System_Init();
	GPIO_Init();
	CLR_RAM_EveryBank();

	COMP_Init();
	
	while(1) 
	{ 
		CLRWDT();
		
		PORTA = PORTA^0x08;	
		DelayUs(20);
		if(C1OUT)	PA4=~PA4;
		if(C2OUT)	PC2=~PC2;
	} 
} 


//****GPIO configuration****//
void GPIO_Init(void) 
{
//;PORTA
	PORTA = 0b00000000;		//--00 0000	
	TRISA = 0b00000000;		//0000 0000 :0-OUT;1-IN 	
	
	PAODCON = 0b00000000;	//--11 -111 :1-EN;0-DIS (Open-drain)	
	PAHCON = 0b11111111;	//--11 1111 :1-DIS;0-EN (UpPull)	
	PADCON = 0b11111111;	//--11 1111 :1-DIS;0-EN (DownPull)	
	WUACON = 0b00000000;	//--00 0000	:1-EN;0=DIS (WakeUp)
	
	PAIC0 = 0b00000000;		//1111 1111 :1-EN;0-DIS (Drive)
	
	
//;PORTC
	PORTC = 0b00000000;	
	TRISC = 0b00000000;		//--00 0000 :0-OUT;1-IN
	
	PCDCON = 0b11111111;	//---- 1111 :1-DIS;0-EN (DownPull)
	PCHCON = 0b11111111;	//---- 1111 :1-DIS;0-EN (UpPull)
	
	PCIC0 = 0b00000000;		//1111 1111 :1-EN;0-DIS (Drive)
} 


//****System _Init function****// 
void System_Init(void)
{
	OPTION = 0b000000000;	 //-000 0000	(Initialization state:0011 1111)
			//;Bit6：INTEDG：外部中断触发方式选择位（PC1）	;0-falling edge, 1-rising edge
			//;Bit5：T0CS：TMR0时钟源选择位					;0-fcpu, 1-ExitClock
			//;Bit4：T0SE：TMR0时钟源边沿选择位				;0-falling edge, 1-rising edge
			//;Bit3：PSA：预分频分配位						;0-TMR0, 1-WDT
			//;B2~0：PS2:PS0：预分频比率选择位
				//000		2T-TMR0			1T-WDT
				//001		4T-TMR0			2T-WDT
				//010		8T-TMR0			4T-WDT
				//011		16T-TMR0		8T-WDT
				//100		32T-TMR0		16T-WDT
				//101		64T-TMR0		32T-WDT
				//110		128T-TMR0		64T-WDT
				//111		256T-TMR0		128T-WDT
	

	PCON  = 0b10110000;		//1-1- ----	(Initialization state:1011 1111)
			//;Bit7：WDTE: WDT（看门狗定时器）使能位	;0-DIS, 1-EN
			//;Bit5：LVREN: 低电压复位使能位			;0-DIS, 1-EN
	
	INTCON = 0B00000000;	//0000 0000 (Initialization state:0000 0000)
			//;Bit7：GIE：全局中断使能位	;0-DIS, 1-EN
			//;Bit6：PEIE：外设总中断使能	;0-DIS, 1-EN
			//;Bit5：T0IE：Timer0 溢出中断使能位	;0-DIS, 1-EN
			//;Bit4：INTIE：外部中断使能位（PC1）	;0-DIS, 1-EN
			//;Bit3：PAIE: PORTA 输入状态变化中断使能位
			//;Bit2: T0IF: Timer0 溢出中断标志位，软件复位
			//;Bit1: INTIF:	外部中断标志位（PC1），软件复位
			//;Bit0: PAIF: PORTA 输入状态变化中断标志位，软件复位
			
	PIE1 = 0B00000000;		//-0-- -000
			//;Bit6：ADCIE：ADC 中断使能位
			//;Bit2: CCP1IE: 捕捉、比较中断使能位
			//;Bit1: T2IE: 定时器 T2 中断使能位
			//;Bit0: T1IE: 定时器 T1 中断使能位
			
	PIR1=0B00000000;	//-0-- -000
			//;Bit6：ADCIF：ADC 中断使能标志位，软件复位
			//;Bit2: CCP1IF: 捕捉、比较中断标志位，软件复位
			//;Bit1: T2IF: 定时器 T2 中断标志位，软件复位
			//;Bit0: T1IF: 定时器 T1 中断标志位，软件复位
			
	PIE2 = 0B00000000;	//-00- 000-
			//;Bit6：C2IE: 比较器 C2 中断使能位
			//;Bit5：C1IE: 比较器 C1 中断使能位
			
			//;Bit3：T5IE: 定时器 T5 中断使能位
			//;Bit2: T4IE: 定时器 T4 中断使能位
			//;Bit1: T3IE: 定时器 T3 中断使能位
			
	PIR2 = 0B00000000;	//-00- 000-
			//;Bit6：C2IE: 比较器 C2 中断标志位，软件复位
			//;Bit5：C1IE: 比较器 C1 中断标志位，软件复位
			
			//;Bit3：T5IE: 定时器 T5 中断标志位，软件复位
			//;Bit2: T4IE: 定时器 T4 中断标志位，软件复位
			//;Bit1: T3IE: 定时器 T3 中断标志位，软件复位
			
	OSCM = 0B00000000;	//0000 0000
			//;Bit7：MONIF：外振时钟停振监测标志位; 0= 未监测到外振时钟停振，1=测到外振时钟停振
			//;Bit6：WAKEMODE：低速模式下睡眠唤醒后系统时钟选择位; 0=内外低速，1=高速RC
			//;Bit5：GREENEN：绿色模式使能位；0=普通模式，1=绿色模式
			//;Bit4：RTCEN：RTC 模式软件使能位；0=EN，1=DIS
			//;Bit3：SLCON：内外低速时钟控制位；0=Open内外低速，1=关闭内外低速
			//;Bit2: XTSEL：内外低速选择位；0=内部低速，1=外部低速
			//;Bit1: STPHX：内部高速振荡器控制位；0=run，1=Stop
			//;Bit0: CLKMD: Timer0 溢出中断使能位；0=普通模式，1=低速模式
			
	//RCREG = 0;
}


//****************************************************  
//对用户寄存器进行清0操作 
//分BANK区清楚 
//嵌入汇编操作 
//IRP:FSR7:	间接寻址寻址空间（充分理解 间接寻址操作原理）
//	0 0		BANK0
//	0 1		BANK1
//	1 0		BANK2
//	1 1		BANK3
//****************************************************    
void CLR_RAM_EveryBank(void)
{
	#asm   
		MOVLW	0x5F  //个数
		MOVWF	0x20  //个数存放地址 
		MOVLW 	0x7F  //REG从后往前 清理 
		MOVWF	_FSR,F 
	CLR_RAM_LOOP:   
		CALL	CLR_RAM_Demo
		
		DECF	_FSR,F   
		DECFSZ	0X20,F   
		GOTO	CLR_RAM_LOOP
		
		CALL	CLR_RAM_Demo
		RETURN
		
	CLR_RAM_Demo:		
	//	0 1		BANK1
		//BCF	_STATUS,7	//IRP
		BSF		_FSR,7		//01:BANK1
		CLRF	_INDF  
		
	//	0 0		BANK0
		//BCF		_STATUS,7
		BCF		_FSR,7	//00:BANK0
		CLRF	_INDF 
		
		RETURN
	#endasm	
}   


//****delay function****// 
//;Fcpu=8MHz （误差4us）
void DelayUs(unsigned char delayUs)
{
	while(delayUs--);
} 