#include "h\uart.h"

bit UART_Flag = 0;


/*****************************************************
*函数名称：void Uart0_Init(uint Freq,unsigned long int baud)
*函数功能：Uart0中断初始化
*入口参数：Freq-主频，baud-波特率
*出口参数：void
*****************************************************/
void Uart0_Init(unsigned int Freq,unsigned long int baud)    //选择Timer1作为波特率信号发生器
{
	P1CON &= 0xF3;   //TX/RX设置为输入带上拉
	P1PH  |= 0x0C;
	
	SCON  |= 0X50;   //设置通信方式为模式一，允许接收
	TMCON |= 0X02;
	TMOD  |= 0X20;
	PCON  |= 0X00;	//SMOD=1
	TH1 = (Freq*1000000/baud)>>8;	  //波特率为T1的溢出时间；
	TL1 = Freq*1000000/baud;
	TR1 = 0;
	ET1 = 0;
	EUART = 1;     //开启Uart0中断
	EA = 1;
}
/**************************************************
*函数名称：void Uart_SendByte(uchar byte) 
*函数功能：模拟串口发送一byte
*入口参数：void
*出口参数：void
*说明：定时器延时
**************************************************/
void Uart_SendByte(unsigned char byte)
{
	  SBUF =  byte;
	  while(!UART_Flag);
	  UART_Flag = 0;	 		 	 
}
/**************************************************
*函数名称：void Uart_SendString(uchar *str,uchar strlen) 
*函数功能：模拟串口发送一byte
*入口参数：void
*出口参数：void
**************************************************/
void Uart_SendString(unsigned char *str,unsigned char strlen)
{
    unsigned char i;
  	for(i=0;i<strlen;i++)
    {
        Uart_SendByte(*str++);
    }
}
void Uart(void) interrupt 4
{		
    if(TI)					//如果完成发送，进入清中断标志
	{		
        TI=0;       
		UART_Flag = 1;			
	}
	if(RI)					//如果接收数据完成
	{
		RI = 0;				    //清除接收标志，SBUF缓存完成数据读取				
	}
}

