首页 理论教育 单片机实用教程:串行通信方式10位数据传输指南

单片机实用教程:串行通信方式10位数据传输指南

时间:2026-01-26 理论教育 蝴蝶 版权反馈
【摘要】:在方式1时,串行通信口可以发送和接收每帧10位的串行数据。在方式1中,一帧数据中有10位,包括1位起始位(低电平)、8位数据位和1位停止位(高电平)。 如图6-8所示,将10脚与11脚短路,让串行数据输出连接到串行输入,利用串行通信的方式1,将P2所连接的开关的状态通过P0端口连接的LED显示出来。另外,将SCON中将串行口设置为方式1,即可将P2所读取的数据放入SBUF缓冲器,CPU随即自动发送。

当寄存器SCON中的SM0=0、SM1=1时,串行通信口工作在方式1。在方式1时,串行通信口可以发送和接收每帧10位的串行数据。其中TXD端用来发送数据,RXD端用来接收数据。在方式1中,一帧数据中有10位,包括1位起始位(低电平)、8位数据位(低位在前)和1位停止位(高电平)。在方式1时,串行通信口又分两种工作情况:发送数据和接收数据。

1.方式1——发送数据

在发送数据时,若执行写SBUF指令(如MOV SBUF,#36H),发送控制器在移位脉冲(由定时/计数器T1产生的信号再经16或32分频而得到)的控制下,先从TXD端送出一个起始位(低电平),然后再逐位将8位数据从TXD端送出,当最后一位数据发送完成,发送控制器马上将SCON的TI位置“1”,向CPU发出中断请求,同时从TXD端输出停止位(高电平)。

2.方式1——接收数据

在方式1时,需要设置SCON中的REN=1,串行通信口才允许接收数据。由于不知道外部设备何时会发送数据,所以串行通信口会不断检测RXD端,当检测到RXD端有负跳变(由“1”变为“0”)时,说明外部设备发来了数据的起始位,于是启动RXD端接收,将输入的8位数据逐位移入内部的输入移位寄存器。

8位数据全部进入输入移位寄存器后,如果满足R1位为“0”、SM2位为“0”(若SM2不为“0”,但接收到的数据停止位为“1”也可以)的条件,输入移位寄存器中的8位数据才可以放入SBUF,停止位的“1”才能送入SCON的RB8位中,R1位就会被置“1”,向CPU发出中断请求,让CPU取走SBUF中的数据,如果条件不满足,输入移位寄存器中的数据将无法送入SBUF而丢弃,重新等待接收新的数据。

【例6-3】 如图6-8所示,将10脚与11脚短路,让串行数据输出连接到串行输入,利用串行通信的方式1,将P2所连接的开关的状态通过P0端口连接的LED显示出来。(https://www.xing528.com)

图示

图6-8 串行数据传输电路

解答:采用波特率9600Baud,首先利用TMOD将定时器T1设置为方式2,再将PCON的SMOD位设置为“0”,然后利用TH1寄存器加载FDH(即253),最后启动定时器T1,可产生9600Baud的波特率。另外,将SCON中将串行口设置为方式1,即可将P2所读取的数据放入SBUF缓冲器,CPU随即自动发送。另一方面CPU也自动接收,当接收的SBUF缓冲器满了,即发生R1中断。流程图和程序如下:

图示

图示

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈