六、串口通信
- 串口接口介绍
- 使用串口向电脑发送数据
- 电脑发送数据控制LED灯
串口接口介绍
SBUF是串口数据缓存器,物理上是两个独立的寄存器,但占用相同的地址。写操作时,写入的是发送寄存器;读操作时,读出的是接收寄存器
使用串口向电脑发送数据
#include <REGX52.H>
void UART_Init()
{
SCON=0x40; // SBUf不同配置
PCON |= 0x80; // 波特率加倍
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x20; //设置定时器模式,自动重装
TL1 = 0xF3; //设定定时初值
TH1 = 0xF3; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
void UART_SendByte(unsigned char Byte)
{
SBUF=Byte;
while(TI==0);// 检测是否发送成功
TI=0;// 需要手动置位
}
unsigned char Sec;
// 向电脑发送一个以1秒递增的数据
void main()
{
UART_Init(); //串口初始化
while(1)
{
UART_SendByte(Sec); //串口发送一个字节
Sec++; //Sec自增
Delay(1000); //延时1秒
}
}
电脑发送数据控制LED灯
void UART_Routine() interrupt 4
{
if(RI==1) //如果接收标志位为1,接收到了数据
{
P2=~SBUF; //读取数据,取反后输出到LED
UART_SendByte(SBUF); //将受到的数据发回串口
RI=0; //接收标志位清0,硬件只负责置1,需要软件清零
}
}
void main()
{
UART_Init(); //串口初始化
while(1)
{}
}