480 likes | 708 Views
第九章 MCS-51 串行通信. 一、通信的两种基本方式. 9.1 串行通信基础. 并行通信 : 数据多位同时传送. 控制简单,传输速度快,传输线较多. 串行通信: 数据字节一位一位在一条传输线上逐个传送。. 二、串行通信的两种方式. 按信息的格式分为 异步通信 和 同步通信 两种方式。. 同步通信: 有严格的同步时钟控制。较少使用。. 异步通信 : 指通信的 发送与接收设备使用各自的时钟 控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。.
E N D
一、通信的两种基本方式 9.1 串行通信基础
并行通信:数据多位同时传送 控制简单,传输速度快,传输线较多
串行通信:数据字节一位一位在一条传输线上逐个传送。串行通信:数据字节一位一位在一条传输线上逐个传送。
二、串行通信的两种方式 按信息的格式分为异步通信和同步通信两种方式。 同步通信:有严格的同步时钟控制。较少使用。 异步通信:指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。
异步通信是以数据帧单位进行传输,帧与帧之间的间隙(时间间隔)是任意的,但每个数据帧中的各位是以固定的时间传送的,即各帧之间不一定有“位间隔”的整数倍的关系,但同一帧内的各位之间的距离均为“位间隔”的整数倍。异步通信是以数据帧单位进行传输,帧与帧之间的间隙(时间间隔)是任意的,但每个数据帧中的各位是以固定的时间传送的,即各帧之间不一定有“位间隔”的整数倍的关系,但同一帧内的各位之间的距离均为“位间隔”的整数倍。
传输速率 波特率是每秒钟传输二进制代码的位数。 单位是:位/秒(bps)。 如每秒钟传送240个字符(数据帧),每帧数据10位 ,则波特率为:10位×240个/秒 = 2400 bps
单工 半双工 全双工 三、串行通信的传输方向 1、单工 指数据传输仅能沿一个方向,不能实现反向传输。 2、半双工 指数据传输可以沿两个方向,但需要分时进行。 3、全双工 指数据可以同时进行双向传输。
9.2 MCS-51单片机串行通信 MCS-51单片机具有一个全双工的串行异步通信接口。 有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H
) 线 ) 9.2.1 串行口寄存器结构
3)TB8 在方式2、方式3下,是发送数据的第9位,可用软件规定其作用; 可以用于数据的奇偶校验位; 在多机通信中,用于地址帧(1)和数据帧(0)的标志位。 在方式0、方式1中,该位未用。 4)RB8 在方式2、方式3下,是接收到数据的第9位; 作奇偶校验位或数据帧/地址帧的标志位。 在方式1时,RB8是接收到的停止位。
5)SM2——多机通信控制位 主要用于方式2和方式3; 当接受机的SM2=1时,可利用收到的RB8来控制是否激活RI: RB8=1时,收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走; RB8=0时,不激活RI,收到的信息丢弃。 当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI。即此时RB8不具有控制RI激活的功能。 方式0时,SM2必须为0。 方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1。
6)RI——接收中断标志位 方式0时,接收完第8位数据后,硬件置位; 其它方式下,接收到停止位中间时,硬件置位; RI=1,表示帧字符接收结束。其状态可软件查询,也可申请中断; 软件清零。 7)TI——发送中断标志位 方式0时,发送完第8位数据后,硬件置位; 其它方式下,发送停止位开始时,硬件置位; TI=1,表示帧字符发送结束。其状态可软件查询,也可申请中断; 软件清零。
字节地址:87H SMOD=1,串行口波特率加倍; SMOD=0,波特率正常。 系统复位时,SMOD=0。 PCON不可以位寻址。
3) 中断允许控制寄存器 IE 字节地址:A8H ES: 串行口中断允许位 ES=0,禁止串行口中断; ES=1,允许串行口中断。
一、方式0 8位同步移位寄存器方式。 RXD (P3.0) :数据移位的入口和出口。 TXD(P3.1):移位脉冲输出端。 移位数据:一帧8位。低位在前,高位在后。 没有起始位和停止位。
1、方式0数据发送 写入SBUF,启动发送;8位数据全部移出后,TI自动置位。
数据发送:须有串进并出移位寄存器配合使用。数据发送:须有串进并出移位寄存器配合使用。 并行输出 串行输入 Q0 Q7 时钟 锁存端 (1并行输出,0锁存)
2、方式0数据接收 当REN=1,启动接收;接收到8位数据时,RI自动置位。
数据接收:须有并进串出移位寄存器配合使用。数据接收:须有并进串出移位寄存器配合使用。 串行输出端 移位脉冲 控制端 0:可串行输出(并行输入关闭) 1:可并行输入(串行输出关闭)
二、方式1 8位数据异步通信方式。 字符帧10位。 1位起始位(低)、8位数据位(D0~D7)、1位停止位(高)
三、方式2、方式3 9位数据异步通信方式。 字符帧11位: 1位起始位(低)、8位数据位(D0~D7)、 1位控制位/校验位、1位停止位(高)
串行口工作之前,应进行初始化,具体步骤如下:串行口工作之前,应进行初始化,具体步骤如下: • 确定波特率; • 确定T1的工作方式(编程TMOD寄存器); • 计算T1的初值,装载TH1、TL1; • 确定串行口控制(编程SCON、PCON寄存器); • 启动T1(编程TCON中的TR1位); 若串行口在中断方式工作时,要进行中断设置 (编程IE、IP寄存器)。
实验内容 甲机的P1口分别接8个开关,读取开关状态并发送出去; 乙机的P1口分别接8个LED指示灯,用来显示从串行口接收的数据。 波特率为1200bps,晶振fosc=6MHz。
START: MOV TMOD,#20H MOV TL1,#0F3H MOV TH1,#0F3H MOV PCON,#00H MOV SCON,#40H SETB TR1 LOOP2: MOV A,P1 MOV SBUF,A LOOP1: JNB TI,LOOP1 CLR TI SJMP LOOP2
START: MOV TMOD,#20H MOV TL1,#0F3H MOV TH1,#0F3H MOV PCON,#00H MOV SCON,#50H SETB TR1 LOOP1: JNB RI,LOOP1 CLR RI MOV A,SBUF MOV P1,A SJMP LOOP1
乙机接收程序:中断方式 ORG 0000H SJMP START ORG 0023H SJMP SJIE START: MOV TMOD,#20H MOV TL1,#0F3H MOV TH1,#0F3H MOV PCON,#00H MOV SCON,#50H SETB EA SETB ES SETB TR1 SJMP $ SJIE: CLR RI MOV A,SBUF MOV P1,A RETI END
例题 甲、乙双机串行通信,甲机将片内30H~3FH单元的数据发送给乙机,乙机将接收到的数据保存到片内40H开始的单元。 波特率为1200bps,晶振频率fosc=12MHz,方式1(8位数据异步通信方式)。
由于选择的是方式1,波特率由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定。则须对定时/计数器T1初始化。 设SMOD=0,甲、乙两机的振荡频率为12MHz,由于波特率为1200bps。定时/计数器T1选择为方式2,则初值为: 初值=256-fosc×2SMOD /(12×波特率×32) =256-12,000,000/(12×1200×32) ≈230 =E6H 根据要求定时/计数器T1的方式控制字为20H。
乙机接收程序: RSTART:MOV TMOD, #20H MOV TL1, #0E6H MOV TH1, #0E6H MOV PCON, #00H MOV R0, #40H;首地址 MOV R7, #10H;个数 MOV SCON, #50H SETB TR1 WAIT: JNB RI, WAIT CLR RI MOV A, SBUF MOV @R0, A INC R0 DJNZ R7, WAIT SJMP $ END 甲机的发送程序: TSTART:MOV TMOD, #20H MOV TL1, #0E6H MOV TH1, #0E6H MOV PCON, #00H MOV SCON, #40H MOV R0, #30H;首地址 MOV R7, #10H;个数 SETB TR1 LOOP: MOV A, @R0 MOV SBUF, A WAIT: JNB TI, WAIT CLR TI INC R0 DJNZ R7, LOOP SJMP $ END