/******************************************************************************
;  *   	@MCU				 : MC51F003A4
;  *   	@Create Date         : 2021.10.11
;  *   	@Author/Corporation  : Martin/SinoMCU
;  *   	@晟矽微技术支持QQ 	 : 2048615934
;  *    @晟矽微官网		     : http://www.sinomcu.com/
;  *   	@Copyright           : 2020 SINOMCU Corporation,All Rights Reserved.
;  *----------------------Abstract Description---------------------------------
;  *			           T2定时器使用  
						TIMER.h中修改TIMER_MODE的值切换不同的方式
						方式0	P00D 1ms翻转
						方式1	P21输入捕获	串口输出
						方式3	P00D、P20D 1ms翻转                           		
******************************************************************************/

#include "User_Def.h"

//全局变量
__O bit_flag flag1;
__O bit_flag SFR_interrupt_buff_H;
__O bit_flag SFR_interrupt_buff_L;
__O uint16_t High_Overflow_Num = 0;
//私有变量
uint32_t High_Level_Time = 0;

/************************************************
;  *    @Function Name       : delay
;  *    @Description         : 普通延时
;  *    @IN_Parameter      	 :
;  *    @Return parameter    :
;  ***********************************************/
void delay(uint16_t Num)
{
	for (; Num > 0; Num--)
	{
		_nop_();
	}
}
void main(void)
{
	DISABLE_GIE(); //关闭总中断
	GPIO_Init();
	UART1_Init();
	Timer2_Init();
	ENABLE_GIE(); //打开总中断
	delay(100);
	printf("Sinomcu\r\n");
	flag1.byte = 0; //清除标志位
	while (1)
	{
#if (TIMER_MODE == 1)	 //方式1 输入捕获
		if (FLAG_T2_DOWN) //
		{
			FLAG_T2_DOWN = 0;
			High_Level_Time = RCAPL2;
			High_Level_Time += RCAPH2 << 8; //读取数据  中断已经关闭TR=0;

			TL2 = 0;
			TH2 = 0;
			RCAPL2 = 0;
			RCAPH2 = 0;
			FLAG_T2_UP = 0;
			High_Level_Time=High_Level_Time+(High_Overflow_Num<<16);
			printf("%lu\r\n",High_Level_Time);	//溢出时间=High_Overflow_Num*4 us
			High_Overflow_Num = 0;
			T2CON1 |= DEF_SET_BIT2; //上升沿
		}
//		if(Flag_T2_Up)
//		{
//			Flag_T2_Up=0;
//			High_Level_Time=RCAPL2;
//			High_Level_Time+=RCAPH2<<8;

//			TL2=0;
//			TH2=0;
//			RCAPL2=0;
//			RCAPH2=0;
//			Flag_T2_Down=0;
//			High_Level_Time=High_Level_Time+(High_Overflow_Num<<16);
//			printf("%lu\r\n",High_Level_Time);	//溢出时间=High_Overflow_Num*4 us
//			High_Overflow_Num=0;
//			T2CON1&=~DEF_SET_BIT2;		//下降沿触发
//		}
#endif
	}
}

/**************************** end of file *********************************************/

