PIC16F1829 串口初始化程序及应用

2014-11-23 22:13:33 · 作者: · 浏览: 5
//------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