程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> PIC16F1829 串口初始化程序及應用

PIC16F1829 串口初始化程序及應用

編輯:C++入門知識

//------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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved