串口通信是通过波特率来使机器通信的。串口通信中,使用的是串行通信协议,数据以字节的形式进行传输。通信的两端需要通过相同的波特率(即数据传输速率)来进行配置,以确保数据能够正确地传输。常用的有4800,9600,115200。
串口中断:
串口的工作方式寄存器SCON
串行控制寄存器SCON用于选择串行通信的工作方式和某些控制功能。其格式如下:SCON :串行控制寄存器(可位寻址)
其中SMO、SM1按下列组合确定串行口的工作方式:
TI: 发送中断请求中断标志位。在方式0,当串行发送数据第8位结束时,由内部硬件自动
置位,即TI=1,向主机请求中断,响应中断后必须用软件复位,即TI=0。在其他方式中,则在停止位开始发送时由内部硬件置位,必须用软件复位。
RI:接收中断请求标志位。在方式0,当串行接收到第8位结束时由内部硬件自动置位RI=1,向主机请求中断,响应中断后必须用软件复位,即RI=0。在其他方式中,串行接收到停止位的中间时刻由内部硬件置位,即RI=1(例外情况见SM2说明),必须由软件复位,即RI=0。
80C51串行口结构图:
串口初始化函数:
void UART_Init()
{
SCON=0X50;
PCON|=0X80;
TMOD &= 0x0F; //定时器时钟模式
TMOD |= 0x20; //设置定时器模式
TL1 = 0xF3; //设定定时初值
TH1 = 0xF3; //设定定时器重装值
ET1=0;
TR1 = 1; //启动定时器1
EA=1;
ES=1;
}
void UART_SendByte(unsigned char Byte)
{
SBUF=Byte;
while(TI==0);
TI=0;
}