第8章MCS-51串行口 8.1串口通讯的基本方式 8.2串口控制 8.3串行接口的工作方式 8.4串口的应用
第8章 MCS-51串行口 8.1 串口通讯的基本方式 8.2 串口控制 8.3 串行接口的工作方式 8.4 串口的应用
8.1串口通讯的基本方式 (一).异步通讯 以字符为传送单位用起始位和停止位标识每个字符的开始和结束 字符间隔不固定,只需字符传送时同步。 异步通讯常用格式:一个字符帧 起始 DoX DIX D2 D5XD6XD)停止位 异步通讯的双方需要两项约定: 1.字符格式 帧字符位数的规定:数据位,校验位,起始位和停止位。 2.波特率(位/秒)对传送速率的规定 例:要求每秒传送120个字符,每帧为10位。 解:B=120×10=1200波特每位0.83ms 数据位传输率=120×8=960位/秒 二).同步通讯 以一串字符为一个传送单位,字符间不加标识位,在一串字符开 始用同步字符标识,硬件要求高,通讯双方须严格同步
8.1 串口通讯的基本方式 (一).异步通讯 以字符为传送单位用起始位和停止位标识每个字符的开始和结束 字符间隔不固定,只需字符传送时同步。 异步通讯常用格式:一个字符帧 异步通讯的双方需要两项约定: 1.字符格式 一帧字符位数的规定:数据位,校验位,起始位和停止位。 2.波特率(位/秒)对传送速率的规定 例:要求每秒传送120个字符,每帧为10位。 解: B=120×10=1200波特 每位0.83ms 数据位传输率=120×8=960位/秒 (二).同步通讯 以一串字符为一个传送单位,字符间不加标识位,在一串字符开 始用同步字符标识,硬件要求高,通讯双方须严格同步。 起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止位
二.串行接口功能 1.发送器:并→>串数据格式转换,添加标识位和校验 位,一帧发送结束,设置结束标志,申请中断 2.接收器:串→并数据格式转换,检查错误,去掉标 识位,保存有效数据,设置接收结束标志,申请中断。 3.控制器:接收编程命令和控制参数,设置工作方式: 同步/异步、字符格式、波特率、校验方式、数据位与同 步时钟比例等。 串行数据传送方向 单工通讯:数据单向传送。 半双工通讯:数据可分时双向传送。 全双工通讯:可同时进行发送和接收。 发送器 接收器 接收器 发送器
二.串行接口功能 1.发送器:并→串数据格式转换,添加标识位和校验 位,一帧发送结束,设置结束标志,申请中断。 2.接收器:串→并数据格式转换,检查错误,去掉标 识位,保存有效数据,设置接收结束标志,申请中断。 3.控制器:接收编程命令和控制参数,设置工作方式: 同步/异步、字符格式、波特率、校验方式、数据位与同 步时钟比例等。 三.串行数据传送方向 单工通讯:数据单向传送。 半双工通讯:数据可分时双向传送。 全双工通讯:可同时进行发送和接收。 发送器 接收器 接收器 发送器
8.2MCS-51串行控制 1个全双工串行接口,可同时进行发送和接收。 串行接口输入/输出引脚:TXD(P3.1)、RXD(P3.0 数据格式(P.237图):按不同方式,一帧位数 8/10/11发送/接收时,数据皆低位在前。 Do X DIX D2X D3X D4X Ds 起始DD1D2XD3XD4 X DS X D6X D)停止位 起始DD,XD2)D3XDD5XDD,XD停止位 帧字符发送/接收结束,置位标志位(T/RI)并申请SI0中断。 中断控制:中断允许位ES 中断入口:0023H
8.2 MCS-51串行控制 1个全双工串行接口,可同时进行发送和接收。 串行接口输入/输出引脚:TXD(P3.1)、RXD(P3.0) 数据格式(P.237图):按不同方式,一帧位数 8/10/11发送/接收时,数据皆低位在前。 一帧字符发送/接收结束,置位标志位(TI/RI)并申请SIO中断。 中断控制:中断允许位ES 中断入口:0023H 起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止位 D0 D1 D2 D3 D4 D5 D6 D7 起始位 D0 D1 D2 D3 D4 D5 D6 D7 D8 停止位
串行接口控制 1.数据缓冲器SBUF 发送SBUF和接收SBUF共用一个地址99H 1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。 发送指令: MOV SBUF,A 2)接收SBUF存放已接收成功的8位数据,供CPU读取。 读取串行口接收数据指令 Mov A, SBUF 2.串行口控制/状态寄存器SCON(98H) SMO SMI SM2 REN TB8 RBS TIRI SM电難制霉择轟间种工作方式。 S城2O机控特率加幗捆制位。 RID许援址棓,REM蚱搠峤加嘧。0,禁止接收 TB8发送的第9位数据位,可用作校验位和地址/数据标识位 RB8:接收的第9位数据位或停止位 TI:发送中断标志,发送一帧结束,TI=1,必须软件清零 RI:接收中断标志,接收一帧结束,RI=1,必须软件清零
串行接口控制 1.数据缓冲器SBUF 发送SBUF和接收SBUF共用一个地址99H。 1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。 发送指令: MOV SBUF,A 2)接收SBUF存放已接收成功的8位数据,供CPU读取。 读取串行口接收数据指令: MOV A,SBUF SM0 SM1 SM2 REN TB8 RB8 TI RI 2.串行口控制/状态寄存器SCON(98H) SM0,SM1:选择串行口4种工作方式。 SM2:多机控制位,用于多机通讯。 REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。 TB8发送的第9位数据位,可用作校验位和地址/数据标识位 RB8:接收的第9位数据位或停止位 TI:发送中断标志,发送一帧结束,TI=1,必须软件清零 RI:接收中断标志,接收一帧结束,RI=1,必须软件清零 3.节电控制寄存器PCON SMOD(PCON.7):波特率加倍控制位。 SMOD=1,波特率加倍, SMOD=0,则不加倍
8.3串行接口的工作方式 SM0,SM1选择四种工作方式。 (1)方式0:同步移位寄存器方式。用于扩展并行I/O接口。 1.一帧8位,无起始位和停止位。 2.RXD:数据输入/输出端。 TXD:同步脉冲输出端,每个脉冲对应一个数据位。 3.波特率B=fosc/12 如:fosc=12MHz,B=1MHz,每位数据占1μso 4.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。 接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。 TXD 发送时 「 LLLLL「LL (a) 写入 SBUF 序RxD输出二 X Do X DIX D2 X D3X D4 X DSX DX D, X□ 接收时 收写REN=1 RIO 序RXD输入 RI
8.3 串行接口的工作方式 SM0,SM1选择四种工作方式。 (1) 方式0:同步移位寄存器方式。用于扩展并行I/O接口。 1.一帧8位,无起始位和停止位。 2.RXD:数据输入/输出端。 TXD:同步脉冲输出端,每个脉冲对应一个数据位。 3.波特率B = fosc/12 如: fosc=12MHz, B=1MHz,每位数据占1s。 4.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。 接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。 发 送 时 序 写入 SBUF RXD输出 TXD TI D0 D1 D2 D3 D4 D5 D6 D7 写REN=1 RI=0 RXD输入 RI 接 收 时 序 (a) (b)
移位寄存器方式 数据从RXD(P3.0)引脚串行输出,低位在 先,高位在后;TXD(P3.1)引脚输出移位 脉冲,其频率为foc/12;发送完毕后,中断 标志位∏为1。如要发送数据,如下所示: MOV SCON#0OH;串行口方式0 MOV SBUEA 将数据送出 JNB TI S 等待数据发送完毕
• 数据从RXD(P3.0)引脚串行输出,低位在 先,高位在后;TXD(P3.1)引脚输出移位 脉冲,其频率为foc/12;发送完毕后,中断 标志位TI为1。如要发送数据,如下所示: • MOV SCON,#00H ;串行口方式0 • MOV SBUF,A ;将数据送出 • JNB TI,$ ;等待数据发送完毕 移位寄存器方式
(2)方式1 8位数据异步通讯方式。 1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。 2.RXD:接收数据端。TXD:发送数据端。 3.波特率:用T1作为波特率发生器,B=(2SM0D/32)×T1溢出率 4.发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。 接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1 (或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否 则丢弃接收数据,不置位RI s金限,CP开始采样RX引脚负跳变信号,若出现鱼跳变,才 进入数据接D失测起始定D第x色改m线擦将朮金 卷 则,停正接收,重新米样负跳变 数据辭速率为波特率16备频送鄱敷位中间,用第7、8、9个 脉采歌数据位,并3中取2保留采样值。 输入数据起始仪< Do X D, X D2 X D3 X D X Ds X D X D,冷停止位 采样 山 RI (b)接收时序图
(2) 方式1 8位数据异步通讯方式。 1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。 2.RXD:接收数据端。 TXD:发送数据端。 3.波特率:用T1作为波特率发生器,B=(2SMOD/32)×T1溢出率。 4.发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。 接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1 (或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否 则丢弃接收数据,不置位RI。 当REN=1,CPU开始采样RXD引脚负跳变信号,若出现负跳变,才 进入数据接收状态,先检测起始位,若第一位为0,继续接收其余 位;否则,停止接收,重新采样负跳变。 数据采样速率为波特率16倍频,在数据位中间,用第7、8、9个 脉冲采样3次数据位,并3中取2保留采样值。 写入 SBUF 采样 (a) 发送时序图 TXD 数据输出 TI D0 D1 D2 D3 D4 D5 D6 D7 停止位 起始位 RXD 输入数据 (b) 接收时序图 D0 D1 D2 D3 D4 D5 D6 D7 停止位 起始位 RI 检测 负跳变
(3)方式2和方式3 9位数据异步通讯方式。 1.一帧为1位立:9位数据位,1个起始位(0),1个停止位(1)。 第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。 2.RXD:接收数据端,TⅫD:发送数据端。 3.波特率:方式2:B=(2SM0D/64)×fosc 方式3:B=(2SMOD/32)×T1溢出率。 4.发送:先装入TB8,写入SBUF并启动发送,发送结束,TI=1。 接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1 (或SM2=0),将接收数据装入接收SBUF,第9位装入RB8,使RI=1; 否四丢弃接收数据,不置位RI。 SBUF 发送时序接收时序 IXD输出一起始 DoX DIX D2XDX① D4 X,X D6①DXTB停正位时 I 检测 负跳变 RXD输入婚仪DxDD2 D3 X DAX DS X D X①,XR停正位收 RI
(3) 方式2和方式3 9位数据异步通讯方式。 1.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。 第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。 2.RXD:接收数据端,TXD:发送数据端。 3.波特率: 方式2:B=(2SMOD/64)×fosc 。 方式3:B=(2SMOD/32)×T1溢出率 。 4.发送:先装入TB8,写入SBUF并启动发送,发送结束,TI=1。 接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1 (或SM2=0),将接收数据装入接收SBUF,第9位装入RB8,使RI=1; 否则丢弃接收数据,不置位RI。 发 送 时 序 写入 SBUF TXD输出 TI RXD输入 接 收 时 RI 序 D0 D1 D2 D3 D4 D5 D6 TB8 停止位 起始位 D7 D0 D1 D2 D3 D4 D5 D6 RB8 停止位 起始位 D7 检测 负跳变
(4)计算波特率 方式0为固定波特率:B=fosc/12 方式2可选两种波特率:B=(2S0D/64)×fosc 方式1、3为可变波特率,用T作波特率发生器。 B=(2SMOD/32)×T1溢出率 T1为方式2的时间常数:X=28-t/T 溢出时间:t=(28-X)T=(28-X)×12/fosc T1溢出率=1/t=fosc/[12×(2n-X)] 波特率B=(2SMoD/32)×foSc/[12×(28x)] 串行口方式1、3,根据波特率选择T1工作方式,计算时间常数。 T1选方式2:TH1=X=28-fosc/12×2SMoD/(32×B) T1选方式1用于低波特率,需考虑T重装时间常数时间
(4)计算波特率 方式0为固定波特率:B=fosc/12 方式2可选两种波特率: B=(2SMOD /64)×fosc 方式1、3为可变波特率,用T1作波特率发生器。 B=(2SMOD/32)×T1溢出率 T1为方式2的时间常数: X = 28 - t/T 溢出时间: t= (28 -X)T = (28 -X)×12/ fosc T1溢出率=1/t= fosc /[12×(2n -X)] 波特率B=(2SMOD /32)×fosc/[12×(28-X)] 串行口方式1、3,根据波特率选择T1工作方式,计算时间常数。 T1选方式2: TH1=X= 28-fosc/12×2 SMOD/(32×B) T1选方式1用于低波特率,需考虑T1重装时间常数时间