/********* UART1串口操作 **********/
/***********************************************************
函数名:UART1_Init()
功 能:串口1初始化
参 数:无
返回值:无
/**********************************************************/
void UART1_Init(void)
{
IP |= 0x10; //PS=1
IPH |= 0x10; //PSH=1
//设置串口中断优先级为最高3级
P_SW1 |= 0x40; //串口1引脚切换到P3.6,P3.7
SCON |= 0x50; //串口1选择模式1(8位数据位,可变波特率),使能UART1接收
T2L = BRT;
T2H = BRT>>8; //设置T2定时器波特率为9600(主频12MHz)
AUXR = 0x15; //选择T2定时器作为波特率发射器,并开启T2定时器(1T模式)
ES = 1; //使能UART1接收/发送中断
EA = 1; //使能全局中断
}
/***********************************************************
函数名:UART1_Send_Byte()
功 能:串口1发送一字节数据
参 数:byte --- 串口1欲发送的一字节数据内容
返回值:无
/**********************************************************/
void UART1_Send_Byte(uchar byte)
{
while(Uart1_Send_Busy); //等待前面的数据发送完成
Uart1_Send_Busy = 1; //置位串口1发送数据忙标志位,准备发送数据
SBUF = byte; //加载一字节数据内容
}
看下这端代码,先初始化硬件UART,就是设置好串口通信的波特率、数据位、停止位、中断优先级等等参数,然后就是发送一个字节的数据,SBUF寄存器是硬件UART的发送/接收寄存器,你往这个寄存器写入一字节数据,它自动就把这个字节的数据按照设定的波特率、停止位发送出去了,发送完了产生一个标志位,你再读取或者响应中断就行了。
|