Article^ Parent
51 内核单片机方式 1 串口通信设置与使用简介
Date: | 2017-07-25 12:53:05 |
Description: | 51 单片机串口通信方式 1 需要设置的寄存器有串口控制寄存器(SCON),电源管理寄存器(PCON),定时器/计数器控制寄存器,定时器/计数器 1,中断允许寄存器(IE)。 |
Keywords: | 单片机, 串口通信, 方式 1, 中断, 设置 |
Category: | engineering_technology/electronic_electrical/mcu |
Tag: | mcu, serial_port |
Link: | https://www.diewuxi.com/blog/article/21.html |
串行口方式 1 为 10 位异步收发(8 位数据),波特率(由定时器/计数器 1 溢出频率和电源管理寄存器 SMOD 位有关)可变的串口通信方式。此方式需要设置的寄存器有串口控制寄存器(SCON),电源管理寄存器(PCON),定时器/计数器控制寄存器,定时器/计数器 1,中断允许寄存器(IE)。
串口发送与接受的数据都使用 SBUF 寄存器存储。
1 设置中断允许(设置中断允许寄存器 IE)
- EA=1 打开总中断
- ES=1 打开串口中断
2 设置串口(设置串行口控制寄存器 SCON)
- SM0=0, SM1=1 设置串口工作方式为 1
- REN=1 允许接收串口信息
3 设置串口通信波特率
根据公式,由目标波特率计算定时器/计数器 1 的初值和波特率倍率
TH1=X,TL1=X,X 为计算出来的定时器/计数器 1 的初值,SMOD=0 或 SMOD=1 为倍率
设置波特率倍率(设置电源控制寄存器 PCON)
- SMOD=0 设置倍率为 1 波特率不加倍
设置定时器/计数器 1 (设置定时器/计数器控制寄存器 TMOD 和定时器/计数器 1 T1)
- TMOD=0x20 设置定时器 1 工作方式为 2,初值自动重装的 8 位定时器/计数器
- TH1=X,TL1=X,设置定时器/计数器 1 的初值为 X,X 为计算出的值
- TR1=1 启动定时器/计数器 1
4 编写串口中断服务程序,串口中断号为 4
5 发送与接收串口消息
发送
串口发送需要一定时间完成,发送结束时 SCON TI 位被硬件设置为 1,然后请求中断,所以可以通过 TI 的值或是否发生中断判断是否发送结束,确认结束之后需要再把 TI 人工设置为 0 以等待下次硬件置 1。
发送串口消息不必通过是否进入中断服务程序来判断是否发送结束,因为在特定程序代码下,发送的开始处是确定的,发送结束可以通过判断 TI 来确定,而串口接收时,接收开始和结束是不确定的,必须使用中断服务程序判断,以下的发送没有使用串口中断。
- ES=0 关闭串口中断
- SBUF=a 把字符型变量 a 中的字符写入串口缓存数据寄存器
- 等待发送过程结束(等待 SCON 寄存器发送中断标志位 TI=1)
- TI=1 后,再把 TI=0
- ES=1 打开串口中断
接收
以下操作语句位于串口中断服务程序中。进入串口中断服务程序说明可能是发送中断申请或接收中断申请,但在特定程序代码下这是确定的,以下是接收中断。
串口接收需要一定时间完成,接收结束时 SCON RI 位被硬件设置为 1,然后请求中断,所以可以通过是否进入串口中断来判断是否接收结束,确认结束之后需要再把 RI 人工设置为 0 以等待下次硬件置 1。
- RI=0 把 SCON 中接受中断标志位清零
- a=SBUF 把串口缓存数据寄存器中的数据保存到字符型变量 a 中
参考文献
- 郭天祥. 51 单片机 C 语言教程――入门、提高、开发、拓展全攻略. 电子工业出版社, 2009
Comments [0]
There is no comments now.