下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六章 MCS-51单片机的串行通信接口,6.1 串行通信概述 6.2 MCS-51单片机的串行通信接口 6.3 串行口编程举例,6.1 串行通信概述 6.1.1 并行通信与串行通信 计算机与计算机或外设之间的数据交换称为通信。,计算机与外部设备的通信有两种基本方式:并行通信和串行通信。 一个信息的各位数据被同时传送的通信方法称为并行通信。并行通信依靠并行I/O接口实现。并行通信速度快,但传输线根数多,成本高,适合近距离通信,通常传送距离小于30米。 一条信息的各位数据被逐位顺序传输的通信方式称为串行通信。串行通信通过串行接口实现。串行通信速度慢,但传输线少,适宜长距离传输。,6.1.2 串行
2、通信的两种基本方式 串行通信的两种基本方式:根据信息传送的格式分为:异步通信和同步通信。 异步通信是以字符为单位传送的,数据传送可靠性高,适合低速通信的场合。 同步通信方式是以多个字符组成的数据块为单位的方式传送的,数据传输率高,适合高速率、大容量的数据通信。,1.异步通信,异步通信用起始位“0”表示字符的开始,然后从低位到高位逐位传送数据,最后用停止位“1”(长度可以是一位、一位半或两位)表示字符的结束。一个字符又称为一帧信息。 在MCS-51单片机系统中,第九位数据D8可以用作奇偶效验位,也可以用作地址/数据帧标志,D8=1表示该帧信息传送的是地址,D8=0表示传送的是数据。 两帧信息之间
3、可以有间隔,也可以无间隔,且间隔时间可以任意改变,间隔用空闲位“1”(长度不固定)填充。,异步通信方式: 异步通信中计算机与外设间必须约定(通信协议): (1)字符格式约定好字符的编码形式、奇偶效验位形式以及起始位和停止位的规定。 每秒数据传输的位数: 波特率(Baud rate) 或比特率(bit rate)。 1波特 = 1bps (位/秒) 异步通信要求发送与接收以相同的波特率进行。,波特率或比特率有效数据位的传送速率,同步通信方式: 同步通信在数据开始处用12个同步字符来指示。 同步通信中,由同步时钟来实现发送和接收的同步。在发送时要插入同步字符,接收端在检测到同步字符后,就开始接收串
4、行数据。可见,同步通信具有较高的传输速率,通常在几十至几百千波特,但在硬件上要求较高。,6.1.3 串行通信中数据的传送方向,全双工异步串行接口(UART),数据通信的几个术语: 并行:数据各位同时进行传送 串行:数据逐位顺序进行传送,全双工:(串行通信)收/发可同时进行 半双工:(串行通信)收/发不可同时进行,异步串行通信:以字符为单位进行传送 同步串行通信:以数据块为单位进行传送 波特率(bps.):单位时间传送的位数,6.2 MCS-51单片机的串行通信接口 6.2.1 串行口结构及工作原理,串行口工作原理: 串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的当向SBUF发
5、“写”命令时(执行“MOV SBUF,A”指令),即是向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。 在满足串行口接收中断标志位RI=0的条件下,置允许接收位REN=1就会接收一帧数据进入移位寄存器,并装载到SBUF中,同时使RI=1.当89C51发出读SBUF命令时(MOV A,SBUF),便由接收缓冲器SBUF取出数据送入A。,6.2.2 串行通信接口的控制寄存器 1.串行口控制寄存器SCON (98H) 可位寻址(98H9FH),SM0,SM1:串行口4种工作方式的选择位。 0 0 方式0:8位移位寄存器I/O,波特率固定为 fosc/12
6、 0 1 方式1:8位UART(1+8+1位),波特率可变,(T1溢出率控制) 1 0 方式2:9位UART(1+8+1+1位),波特率固定=fosc /32或1/64 1 1 方式3:9位UART(1+8+1+1位),波特率可变,(T1溢出率控制),SM2:串行口多机通信控制位 (方式2、3的附加控制位) 在方式0时:SM2必须为0。 在方式1时: 若SM2=1,则只有接收到有效的停止位时,才能置位RI。 若SM2=0,则接收一帧信息的第九位数据不管是0还是1,都由软件置位RI。 在方式2或方式3时: 若SM2=1,当接收到的第9位数据RB8=0时,不能置位RI,接收数据无效。 若SM2=0
7、,不管接收到的第9位数据为0或1,前8位数据都送入SBUF,并使RI=1。,REN:串行口接收允许控制位,由软件置位或清0。 = 1 表示允许接收; = 0 禁止接收 TB8:方式2、3中,是要发送的第9位数据。 多机通信中,TB8=0 表示发送的是数据;TB8=1 表示发送的是地址。 (奇偶校验) RB8:在方式2、3中,是收到的第9位数据。 多机通信中,用作区别地址帧/数据帧的标志。(奇偶校验) RI,TI:串行口接收 / 发送数据申请中断标志位 1 申请中断; 0 不申请中断,2. 电源控制寄存器PCON (87H) PCON不可位寻址,SMOD:在串行口工作方式 1、2、3 中,是波特
8、率加倍位 =1 时,波特率加倍 =0 时,波特率不加倍。 (在PCON中只有这一个位与串口有关) 单片机复位时,SMOD=0。,6.2.3 串行口的工作方式 1.方式0:8位移位寄存器I/O方式 工作方式0时,移位脉冲由机器周期的第6个状态周期S6给出,每个机器周期产生一个移位脉冲,发送或接收一位数据。因此,波特率是固定的,为振荡频率的1/12,不受PCON寄存器中SMOD的影响。,发送:SBUF中的串行数据由RxD逐位移出; TxD输出移位时钟,频率=fosc/12; 每送出8位数据 TI就自动置1; 需要用软件清零 TI。 接收:串行数据由RxD逐位移入SBUF中; TxD输出移位时钟,频
9、率=fosc/12; 每接收 8位数据RI就自动置1; 需要用软件清零 RI。,经常配合“串入并出”“并入串出”移位 寄存器一起使用扩展接口。,复位时,SCON 已经被清零,缺省值: 方式0。,接收前,务必先置位 REN=1 允许接收数据。,.串行工作方式1:8位UART 方式1为10位为一帧的异步串行通信方式。其帧格式为1个起始位、8个数据位和1个停止位。如下图所示。 数据发送 数据写入SBUF后,开始发送,此时由硬件加入起始位和停止位,构成一帧数据,由TXD串行输出。输出一帧数据后,TXD保持在高电平状态下,并将TI置位,通知CPU可以进行下一个字符的发送。,数据接收 当REN=1且接收到
10、起始位后,在移位脉冲的控制下,把接收到的数据移入接收缓冲寄存器(SBUF)中,停止位到来后,把停止位送入RB8中,并置位RI,通知CPU接收到一个字符。 波特率的设定 串行通信方式1的波特率是可变的,计算公式为: 其中,SMOD为PCON寄存器最高位的值,其值为1 或0。,3. 串行工作方式2 方式2为11位为一帧的异步串行通信方式。其帧格式为1个起始位、9个数据位和1个停止位。如下图所示。 由于方式2下的波特率固定为2SMODfosc/64,因而常用于单片机间多机通讯。 D0D7为8位数据(1B),D8为SCON中的TB8,可由用户编程软件置位或清零,用作多机通信中的地址、数据标志或作为数据
11、的奇偶校验位。 SETB TB8 ;TB8位置“1” CLR TB8 ;TB8位置“0”,4.串行工作方式3 方式3为波特率可变的9位异步通信接口,除波特率外,方式3与方式2类似。方式3下波特率可变,其确定方式同方式1,即,5. 串行口工作方式对比,6.2.4 波特率的设定,方式0:波特率固定不变,为fosc/12 方式2:波特率为波特率 = 2SMOD fosc /64 方式1、3时,波特率是可变的,,考虑到重装时间常数(X)会带来定时误差,定时器T1用作波特率发生器时采用8位自动装载方式(方式2)。,方式1、方式3下常用波特率和定时器T1各参数的关系,6.3 串行口编程举例 6.3.1.
12、工作方式0的应用 串行口工作方式0主要用于扩展并行I/O接口。扩展成并行输出口时,需要外接一片8位串行输入并行输出的同步移位寄存器74LS164或CD4094。扩展成并行输入口时,需要外接一片并行输入串行输出的同步移位寄存器74LS165或CD4014。,例: 利用串行口工作在方式0,外扩一片74LS164构成一个3位LED动态显示器,并将片内RAM显示单元65H、66H和67H单元中的段码输出显示。,利用串行口工作在方式0,外扩一片74LS164构成一个3位LED动态显示器,并将片内RAM显示单元65H、66H和67H单元中的段码输出显示,其硬件电路如图所示:,ORG 0100H STPRT
13、:MOV SCON, #00H ;串口工作方式0 SETB P1.2 ;消去最高显示位 SETB P1.1 ;消去次高显示位 MOV SBUF, 65H ;传送最低显示位 JNB TI, $ ;等待发送 CLR P1.0 ;最低位显示 CLR TI ;清中断标志位 LCALL DSSJ ;调延时子程序 SETB P1.0 ;消去最低显示位 MOV SBUF, 66H ;传送中间显示位 JNB TI, $ ;等待传送结束 CLR P1.1 ;显示中间位 CLR TI ;清中断标志位,LCALL DSSJ ;调延时子程序 SETB P1.1 ;消去中间显示位 MOV SBUF, 67H ;传送最高
14、显示位 JNB TI, $ ;等待传送结束 CLR P1.2 ;显示最高位 CLR TI ;清中断标志位 LCALL DSSJ SETB P1.2; 消显 RET DSSJ:-; 延时子程序, LED显示时间 RET END,例:甲机为发送,乙机为接收。编写双机通信程序。 串行口都工作在方式1,波特率为9600,fosc=11.0592MHz。甲机将内部RAM的203FH的32个字节的ASCII码数据,在最高位加上奇校验,后由串行口送出。乙机接收到32个字节数据后,存放在内部RAM203FH单元中,波特率和时钟频率和甲机相同。若接收到的数据奇校验出错,则置相应单元为0FFH。,6.3.2 串行
15、口在方式1下的应用,分析: 波特率选用T1方式2,查表7-4知初值为0FDH。,ASCII码奇校验用下面程序设置: MOV A, #DATA MOV C, P CPL C MOV ACC.7, C ; 使A中1个数总为奇数,甲机发送程序清单:,ORG2000H START:MOV TMOD, #20H; T1方式2 MOVTL1, #0FDH MOVTH1, #0FDH; 9600 bps (11.0592MHz) SETBTR1; 启动T1 MOV SCON, #40H; 串口方式1, REN=0 MOVR0, #20H; 起始地址 MOVR7, #20H; 数据个数 LOOP:MOVA,
16、R0 MOVC, P CPLC MOVACC.7, C; 添加奇校验 MOVSBUF, A NEXT: JNB TI, NEXT; 发送完一帧数? CLRTI INCR0 DJNZR7, LOOP; 数据全部发送完? AJMPSTART; 重新发送数据,乙机接收程序清单:,ORG 2000H START:MOVTMOD, #20H; T1方式2 MOVTL1, #0FDH MOVTH1, #0FDH; 9600 bps (11.0592MHz) SETBTR1; 启动T1 MOVR0, #20H; 数据单元起始地址 MOVR7, #20H; 接收数据 LOOP:MOVSCON, #50H; 串
17、口方式1, REN=1 NEXT:JNB RI, NEXT; 等待接收完整一帧数据 CLR RI MOV A, SBUF; 接收数据 MOV C, P JNC ERROR; 奇检验, A中1个数应为奇数 ANL A, #7FH; 去掉检验位 MOV R0, A; 保存数据,INCR0; 修改存储单元地址指针 DJNZR7, LOOP ; 全部接收完数据? AJMPSTART ERROR: MOVR0, #0FFH; 接收数据错误处理 SJMPLOOP,例: 利用串行口方式2编制一发送程序,将片内RAM中60H6FH单元的数据串行发送出去,第9数据位TB8作偶校验位。 根据要求,将串行口设置为方
18、式2、单工发送,则SCON控制字为80H。波特率选为fosc/64。,6.3.3 串行口在方式2下的应用,采用中断方式发送的主程序和中断程序如下: ORG0000H AJMPMAIN ; 转主程序 ORG0023H ; 串口中断服务程序 INCR0; 发送数据地址增1 MOVA, R0 ; 取出待发数据 MOVC, P ; 将奇偶位送TB8 MOVTB8, C MOVSBUF, A ; 发送数据 DJNZR7, SSJS ; 判断数据是否发送完 CLR ES; 发送完关中断 SSJS:CLR TI ; 清中断标志 RETI,MAIN:ORG 0100H ; 主程序 MOV SP, #20H ;
19、 置堆栈指针 MOV SCON, #80H ; 串口设置为方式2 MOV PCON, #00H ; 波特率选为fosc/64 MOV R0, #60H ; 数据块首址送R0 MOV R7, #10H ; 数据块长度送R7 SETB EA ; 开总中断 SETB ES ; 开串行口中断 MOV A, R0 ; 取出待发数据 MOV C, PSW.0 ; 将奇偶位送TB8 MOV TB8, C MOV SBUF, A ; 发送数据 SJMP $ ; 等待中断发下个数据 END,例: 试编制串行口在方式3下接收数据块的程序。设单片机晶振为11.0592MHz,波特率为2400 b/s,接收的数据存在
20、片内RAM的40H起始单元的一段区间内,数据块长度由发送方先发送过来(不超过允许值),每接收一个数据都核对其奇偶校验位,正确则存储数据,否则给出出错标志。 解:根据要求,设置T1工作于方式2,当SMOD=0时,T1计数初值为F4H。,6.3.4 串行口在方式3下的应用,查询法源程序如下: START:MOV TMOD, #20H ; T1定时方式2 MOV TL1, #0F4H ; 置T1计数初值 MOV TH1, #0F4H; 2400bps (11.0592MHz) SETB TR1 ; 启动T1 MOV SCON, #0D0H ; 串口方式3,允许接收 MOV PCON, #00H ;
21、设SMOD=0 MOV R0, #40H ; 接收数据区首址送R0 JNB RI, $; 等待接收数据块长度 CLR RI ; 接收后清RI MOV A, SBUF ; 数据块长度存R7中 MOV R7, A,DRec:JNB RI, $ ; 等待接收数据 CLR RI ; 清RI MOV A, SBUF ; 将接收字符读入A JB P, PChk ; 进行奇偶位校验 (PSW.0) JB RB8, ERR; P=0, RB8=1 = Err SJMP DSav PChk: JNB RB8, ERR ; P=1; RB8=0 = Err DSav:MOV R0, A ; 校验正确保存数据 IN
22、C R0 ; 存储单元地址增1 CLR F0 ; 设置正确的标志 (PSW.5) DJNZ R7, DRec ; 未接收完,继续 SJMP $ ; 接收完停机 ERR: SETB P ; 置校验出错标志 SJMP $ ; 停机 END,6.3.4 多机通信 双机通信时,两台单片机地位是平等的,此时,两台单片机的串行口均可工作于方式1。 多机通信是指多台单片机间的通信。 在多机通信中,有主机和从机之分。多机通信时,主机发送的信息可以传送到各个从机,而各从机发送的信息只能被主机接收,其主要问题是怎样识别地址和维持主机与指定从机之间的通信。,在串行方式2或方式3条件下,可实现一台主机和多台从机之间的
23、通信,其连接电路如图所示。,1. 多机通信原理 多机通信时,主机向从机发送的信息分为地址帧和数据帧两类,以第9位可编程TB8作区分标志,TB8=1,表示地址;TB8=0,表示数据。,地址范围: 000FFH 串口通信中传送数据为低位在先 (D0D7) 例:上表中传送地址/数据:41H,SM2=0:接收任何信息(包括地址和数据) SM2=1:只有当接收到RB8=1时才接收信息(只收地址祯),2、多机通信过程:,定义从机地址,000FEH,最多接入255台从机。 从机在初始化过程中,将串行口编程为方式2或3;并使SM2=1,处于只接收地址帧状态。REN=1,允许串行口接收。 主机的TB8设置为1,
24、表示发送地址,发送欲通信的从机地址。 若从机的串行口接收到主机发来的串行地址帧时,由于第9位TB8=1,置中断标志RI为1。,各从机分别响应中断,并进入各自的中断服务程序进行地址核对。 被寻址的从机确认后,将自身的SM2清0,准备和主机通信。地址不符的从机SM2保持为1,无法接收主机的数据。 主机按一定的通信协议确认无误后,进行正式通信。 主机向被寻址的从机发送命令,准备与从机进行一对一通信。,3、多机通信的协议及程序设计:,主机发送地址,从机验证地址,并把地址消息反馈回主机。 主机验证反馈地址,如相符把TB8清0,开始发送数据;如不相符把TB8置1,继续发送地址。,主机呼叫“1号从机”程序:
25、,Num EQU 01H Main: MOV SCON, #98H; 方式2,TB8=1,REN=1 AddrS:MOV SBUF, #Num ; 发送从机地址 MS1:JBC TI, MS2 SJMP MS1 MS2: JBC RI, MR1; 等待1号从机回传地址 SJMP MS2 MR1:MOV A, SBUF; 地址判断 XRL A, #Num JZ YES SJMP AddrS; 地址不匹配,重发从机地址 YES:CLR TB8 ,从机响应呼叫程序,Num EQU 01H SUB:MOVSCON,#0B0H; 方式2,SM2=1, REN=1 SR1:JBCRI,SR2; 接收地址 SJMPSR1 SR2: MOVA,SBUF XRLA,#Num ; 地址判断 JNZ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年南昌市西湖区政务服务中心(窗口人员)招聘笔试参考试题及答案详解
- 2026年连云港市连云区医疗系统事业编人员招聘笔试备考题库及答案详解
- 2026年青岛市市南区工会人员招聘考试备考试题及答案详解
- 沧州机箱机柜钣金加工生产作业指导书
- 2026年双鸭山市宝山区政务服务中心(窗口人员)招聘笔试模拟试题及答案详解
- 2026年浙江省金华市工会人员招聘考试备考试题及答案详解
- 2026年山东省烟台市医疗系统事业编人员招聘笔试参考题库及答案详解
- 关于咯血护理的多项选择题及答案集
- 2026年云南省普洱市医疗系统事业编人员招聘笔试参考试题及答案详解
- 2026年舟山市定海区政务服务中心(窗口人员)招聘笔试备考试题及答案详解
- 2026年四川省拟任县处级党政领导职务政治理论水平任职资格考试冲刺试题及答案
- 2026年度全国保密教育线上培训题库(选择+判断)及参考答案
- 2026年比亚迪网申在线测试题及答案
- 无人机数字化管控平台搭建方案
- 乐平市市属国资控股集团有限公司面向社会公开招聘人员【15人】笔试历年常考点试题专练附带答案详解
- TCABEE080-2024零碳建筑测评标准(试行)
- 审计署工作保密制度
- 医疗器械质量意识培训资料
- 2026年中医内科临床诊疗指南-尘肺病
- 会展策划书案例
- 2025ACP临床指南:门诊预防发作性偏头痛的药物治疗解读课件
评论
0/150
提交评论