/****************************************************************************************
 * KF8AϵеƬ	KF8A100EON_DEMO	ʾ
 *     : ͨȫ˫첽ʵ
 * Ŀ: 07- UART_Sample
 * ChipON IDE
 *                V1.0 (2019/07/23)
 *  : Ϻо΢޹˾
 * ܼ: 2յ,0x0D,0x0AβظPC
 * Ӳ˵ UART2ΪP43P44ӵTTL-USBоƬUSBPCͨ
 * ߽ӷ ƬñѡΪ3.3V5V
 ****************************************************************************************/
#include<KF8A100GQT.h>
#include "includes.h"

unsigned char Rev_Flag,Rev_StopFlag;
unsigned char Rev_count;

void delay_ms(uint16 num)
{
	uint16 i,j;
	for(i=0;i<num;i++)
	{
		j=1000;
		while(j--);
	}
}

void SYS_Init(void)
{
	//ʹⲿʱ룬ѡⲿʱл
	SCLKCTL = SYSYCLK_SEL_SCKS|SYSCLK_SCLK_SEL_INTHF|SYSCLK_FREQ_DIV1;	//INTHFΪʱ
	_NOP();_NOP();	//ʱȶ
	PLLEN=0;
	PLLCTL = PLL_SEL_DIV1|PLL_SEL_INTHF|PLLBIAS_CUR_MIN|PLLPMUL_2;
	PLLEN=1;
	delay_ms(200);
	SCLKCTL|=SYSYCLK_SEL_SCKS|SYSCLK_SCLK_SEL_UPCK;		//UPCKΪʱ	32M
	SCLKOE = 0;		//ڽ,IOת
	CLKOUTSEL = 0;
	HFCKCTL = 0xCE;	//ʱӿ,ѡINTHFΪHFCLKʱź

	TR0 = 0;	TR1	= 0;	TR2	= 0;	TR3 = 0;
	TR4 = 0;	TR5 = 0;	TR6 = 0;	TR7 = 0;
	TR9 = 0;	TRA = 0;	TRB = 0;
	P0LR = 0;	P1LR = 0;	P2LR = 0;	P3LR = 0;
	P4LR = 0;	P5LR = 0;	P6LR = 0;	P7LR = 0;
	P9LR = 0;	PALR = 0;	PBLR = 0;
}

void main()
{
	unsigned char i;
	SYS_Init();
	UART2_Init();

	//жϿ
	AIE=1;
	PUIE=1;

	while(1)
	{
		if(Rev_Flag == 1)
		{
			Rev_Flag=0;
			for(i=0;i<Rev_count;i++)
			{
				UART2_SendBuf(UART2_BUF[i]);
			}
			Rev_count=0;
		}
	}

}


//жϺ0:0X04ڵַ
void int_fun0() __interrupt (0)
{
	volatile uint8 revBuf; // ŻδȡRXSDR2

	if(RC2IE && RC2IF)
	{
		P9LR1=!P9LR1;
		if(FRER2)
		{
			revBuf=	RXSDR2; //RC2IF,FRER2
		}
		else if(OVFER2)
		{
			CRXEN2=0;		// OVFER2
			revBuf=	RXSDR2; //RC2IF
			CRXEN2=1;		// صʹ
		}
		else
		{
			UART2_BUF[Rev_count]=RXSDR2;  	// RX2IF
			if(UART2_BUF[Rev_count] == 0x0D)
			{
				Rev_StopFlag=1;
			}
			else
			{
				if(Rev_StopFlag)
				{
					if(UART2_BUF[Rev_count] == 0x0A)
						Rev_Flag=1;
					else Rev_StopFlag=0;
				}
				else
				{
					Rev_StopFlag=0;
				}
			}
			Rev_count++;
		}
	}
}


//жϺ1:0x14ڵַ
void int_fun1() __interrupt (1)
{

}
