PIC16F1829 串口初始化程序及应用

2014-11-23 22:13:33 ? 作者: ? 浏览: 4
//------Fcpu=32M时滤特率设置------------
#define		UART_RATE_1200  (uint16)6661
#define		UART_RATE_2400  (uint16)3331
#define		UART_RATE_4800  (uint16)1666	
#define		UART_RATE_9600  (uint16)833	
#define		UART_RATE_19200  (uint16)417



//*************************************
// 函数名称:Init_Uart
// 函数功能:串口初始化
// 入口参数:
// 出口参数:
// 波特率公式: Fosc/[4(n+1)]
//***************************************
void Init_Uart(uint16 Tcon)
{
	SPBRGH = (Tcon>>8); //设置波特率
	SPBRGL = (Tcon & 0XFF);

	TXSTA = 0X04;    //使能串口发送,选择高速波特率 
	RCSTA = 0X80;    //使能串口工作,连续接收使能接收器
	BAUDCON = (1<<3) ; //16位波特率发生器
	TXEN = 1 ;//使能发送
//	RX9 = 1 ;//第九位接收使能
	CREN = 1 ;//使能接收
	RCIE = 1; //使能接收中断
}



//*************************************
// 函数名称:UartSendByte
// 函数功能:串口发送一字节数据
// 入口参数:要发送的数据
// 出口参数:无
// 返 回 值:无
//***************************************
void Uart1SendByte(uint8 Byte)
{	
	while(!TRMT);//发送数据寄存器为满时 等待
	TXREG = Byte ;	
}
//*************************************
// 函数名称:UartSendByte
// 函数功能:串口发送一串数据
// 入口参数:要发送的数据
// 出口参数:无
// 返 回 值:无
//***************************************
void Uart1SendString(uint8 *a ,uint8 DatLong)
{	
	uint8 i = 0 ;
	
	for(i=DatLong;i>0;i--,a++)
	{
		while(!TRMT);//发送数据寄存器为非空 等待
		TXREG = *a ;						
	}	

}


//----应用实例----
	//串口初始化
	Init_Uart(UART_RATE_1200) ; //初始化UART波特率1200

-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: