51单片机串口通信

查阅stc89c51手册后总结:

STC89C52有1个UART。
STC89C52的UART有四种工作模式:

  • 模式0:同步移位寄存器;
  • 模式1:8位UART,波特率可变(常用);
  • 模式2:9位UART,波特率固定;
  • 模式3:9位UART,波特率可变;

 相关重要的寄存器:

在这里插入图片描述

具体如下:

SCON:串口控制寄存器(可位寻址)

 在这里插入图片描述

 重点是相关模式的配置和TI/RI的软硬件置位和清零

在这里插入图片描述

SCON = 0x40/0x50 的由来,将四个工作模式的0或1带入上方表中的8位换算成0x的16进制。

TI: 发送中断请求标志位。在方式0,当串行发送数据第8位结束时,由内部硬件自动置位,即TI=1,向主机请求中断,响应中断后必须用软件复位,即TI=0。在其他方式中,则在停止位开始发送时由内部硬件置位,必须用软件复位;
RI:接收中断请求标志位。在方式0,当串行接收到第8位结束时由内部硬件自动置位RI=1,向主机请求中断,响应中断后必须用软件复位,即RI=0。在其他方式中,串行接收到停止位的中间时刻由内部硬件置位,即RI=1(例外情况见SM2说明),必须由软件复位,即RI=0。

4.2 PCON:电源控制寄存器(不可位寻址)

主要配置波特率是否加倍,在此只做了解,因为可以软件配置。

5.1 发送数据流程
初始化:
• Step1:配置串口控制寄存器SCON为0x50
• Step2:配置电源控制寄存器PCON(计算波特率);
• Step3:配置定时器T1(串口通信只能用定时器1,只能使用8位自动重装工作模式),启动定时器T1;
• Step4:禁止定时器T1中断;

配置好后,删掉AUXR的配置,这是新型单片机的端口,C51并没有,而且千万不要忘了两个中断总开关EA/ES的配置

因为串口通信的底层代码和基础知识都是配置时序逻辑,所以要利用定时器时刻检测,当检测到发送数据时,此时时序会发生变化,在定时器的配置不断扫描下会判断进入中断服务函数。查询手册串口中断向量对应的中断次序号如下图:

在这里插入图片描述

所以要进行 interrupt 4 中断服务函数的配置

串口发送函数,将字节传给串行口数据缓冲寄存器SBUF (实际上时两个缓冲器分别进行读写的操作)

由于TI为 发送中断请求标志位,发送结束后硬件自动置1,所以while(TI==0)TI = 0说明此时Byte写给SBUF的操作还未完成,当TI置1后说明已经完成,此时需要软件清0.

RI为接收中断请求标志位,在ISP上发送字节后,字节被写入SBUF且触发串口中断,进入中断服务函数4,RI硬件置1,然后进行服务函数的编写后将RI软件清0。

大概配置流程如上,实现具体功能主要配置串口服务函数,在后续会继续更新。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值