单片机串行口课件_第1页
单片机串行口课件_第2页
单片机串行口课件_第3页
单片机串行口课件_第4页
单片机串行口课件_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章MCS-51串口,6.1串口通信的基本知识,6.2串口的结构,6.3串口的四种工作模式,6.4多机通信的编程和应用,6.5串口,异步通信模式,0,1,停止位,开始位,低位,高位,7位数据位,奇偶校验,停止位,第N个字符,字符N-1,同步数据通信,串行通信的波特率,带速率是每秒传输的二进制码的位数(位)角色:1。反映串行通信的速率;2.反映对传输通道的要求:波特率越高,所需传输通道的带宽就越宽。异步通信:波特率是每秒传输的字符数和每个字符的位数的乘积。6.2、MCS-51串行端口结构,MCS-51具有可编程全双工串行通信接口,可用作通用异步收发器,也可用作同步移位寄存器。它的帧格式是8位、

2、10位和11位,可以设置为固定波特率和可变波特率,因此给用户很大的灵活性。串行端口内部结构示意图显示,只有串行端口控制寄存器SCON、(1)SCON(98H)、(2)PCON(87H)电源控制寄存器PCON中的SMOD位与串行端口的操作相关,如下图所示。电源控制寄存器PCON,6.3串口四种工作模式,模式选择由SM0,SM1完成。四种模式的比较:1 .串行端口模式0-同步移位寄存器模式,模式0将8位数据作为一帧,不设置起始位和停止位,先发送或接收最低位。帧格式如下:串行数据通过RXD输入或输出,而TXD用于输出移位时钟作为外部元件的同步信号。这种方法不适合两个8051之间的串行通信,但单片机的

3、输入输出接口扩展可以通过外部移位寄存器来实现。对于串行端口模式0 (P150、P169)的应用,串行端口扩展显示示例1使用8位串行输入和输出移位寄存器74HC164来扩展显示。功能:将数据从显示缓冲区发送到数码管。入口;要显示的数字放在由DIS0开头的8个单元格中。退出:输出预设号码以更新原始显示。写程序实现:MOV R7,# 08h显示8个谢妮管MOV R0,# dis 0;显示缓冲器未寻址到r0dl0: mova。 r0取要显示的数字作为查表偏移量MOVDPTR,#标签;指着MOVC的字形头像。查表得到字形代码MOV斯堡,一;发送显示DL1: JNBT1,DL1;正在等待发送一帧clrti

4、清除中断标志并准备继续发送DECR0更新显示单元DJNZ R7、dl0重复显示所有电子管rettab: db0c0h、0F9H、0A4H、0B0H、99H。0,1,2,3,4,DB 92H,82H,0F8H,80H,90H5,6,7,8,9,DB 88H,83H,0C6H,0A1H,86Ha、B、C、D、E、DB 8EH、0BFH、8CH、0FFHF,-,p,暗,74LS165,其中A,B,C,D,E,F,G,H并联输入。QH串行输出。时钟:时钟输入。时钟抑制:时钟抑制侧。当时钟抑制CLK2为低电平时,允许时钟输入。换档/加载:换档并设置控制端子。服务:扩展多个74LS165的端到端连接。74

5、LS165是一个移位寄存器,具有并行输入和串行输出。图(b)模式0的接收电路和时序,串行端口模式0 (P150,P169)的应用,带串行端口扩展的键盘,org 0100h start:clrp 1.0;加载数据NOP国家警察;SETB 1.0;数据输出CLR P1.1允许时钟输入rcvi: movscon,# 10hjnbri,$ clrlimova,SBUF;判断键值,分散opr0: ljmpstart,tab : ajmppr 0 ajmppr 1ajmppr 7,2。串行端口模式1-10位UART,模式1每帧10位传输,1个起始位(0)、8个数据位和1个停止位(1)。其帧格式为:模式1实

6、际上用于串行传输或接收,是一个10位通用异步接口。TXD(P3.1)引脚发送数据,RXD(P3.0)引脚接收数据。数据传输的波特率由T1的溢出率决定,可由程序设定。接收时,停止位进入SCON的RB8。串行端口模式1的发送和接收时序如图(a)和(b)所示。模式1发送和接收定时,只有当REN=1时才能检测到RXD。RI=0 .也就是说,当接收到前一帧的数据时,由RI=1发出的中断请求已经被响应,并且SBUF中的数据已经被移除。RI=0由软件设置,以提供“接收SBUF为空”的信息。(2) SM2=0或接收到的停止位为1(在模式1中,停止位进入RB8)。满足以上两个条件,将接收到的数据加载到串口的SB

7、UF和RB8中(RB8加载到停止位),设置R1通知中央处理器取数据;否则,接收到的数据将无法加载到SBUF中,这意味着帧信息将会丢失。例如,通过MCS-51串行端口传输存储在片内RAM 20H3FH中的数据,传输所需的波特率为1200bps。编写相关的沟通程序。fosc=11.0592MHz。分析:取SMOD=0 (TH1)=232=0E8H,设置串口为模式1,定时器/计数器T1为模式2,作为串口波特率发生器。可以避免在计数溢出后用软件重新加载初始定时值的工作。ORG 0100H MOV TMOD,# 20H让T1成为模式2 MOV TL1,# 0e8hT1时序常数MOV TH1,# 0e8h

8、setbt1启动T1 MOV SCON,# 0100000b将串口设置为模式1 MOV R0,# 20h设置发送数据区报头MOV R7,# 32;发送32个ASCII码数据环LOOP:MOV A. r0获取ASCII数据acalsp _ out调用串口发送子程序incr0如果没有发送出去,继续DJNZ R7,LOOP ,主程序:sp _ out: movsbuf,a;用奇偶校验位发送JNB时间间隔,$;发送等待clrti清除TI标志RET,串口发送子程序:示例:机器B通过串口接收数据块。解决方案:使用查询方法,这个例子对应于上面的例子。接收器以与上述相同的波特率将接收到的32个数据存储在20H

9、-3FH单元中。MOV SCON,# 01010000B设置串口模式1,允许接收MOV TMOD,# 20h将定时器T1设置为模式2 MOV TL1,# 0e8h初始值,波特率1200b/s MOV TH1,# 0e8hsetbt1启动T1运行MOV R0,# 20h数据存储器MOV R7的第一地址,# 32;块长度循环:a调用。调用子程序MOV R0,A接收一帧;存储接收数据INC R0 DJNZ R7,循环.主程序:JNB国际:美元;RI由硬件设置。软件清除国际扶轮MOV协会,美国扶轮基金会,并接收一个帧子程序。串行端口模式2和3-11位UART、模式2和模式3在11位的帧中传输,其中有1

10、个起始位(0)、8个数据位、1个附加的第9位和1个停止位(1)。帧格式为:软件将额外的第9位(D8)设置为1或清0。在传输时,它在TB8中,在接收时,它在RB8中。模式2的波特率是固定的,是振荡器频率的1/32或1/64。模式3的波特率由T1的溢出率决定,可由程序设置。模式2和模式3的发送和接收时序如图所示。其操作类似于模式1。模式2、模式3发送和接收时序,只有当REN=1时才能检测到RXD。发送前,软件根据通信协议设置TB8(如奇偶校验位或地址/数据标志位),然后将待发送的数据写入SBUF,开始发送过程。串口可以自动取出TB8,加载到第9个数据位位置,并一个一个发送出去。传输后,使TI=1。

11、在发送和接收期间,SCON的REN=1允许接收。当在RXD(P3.0)检测到10转换(起始位)时,接收9位数据并将其发送到移位寄存器(9位)。当满足RI=0和SM2=0,或者接收的第9位数据为1时,前8位数据被发送到SBUF,并且附加的第9位数据被发送到SCON的RB8,将R1设置为1;否则,接收将无效,并且将不会设置RI。接收过程,例如:编译一个发送程序,在片内RAM中串行发送50H5FH数据。串行端口设置为工作模式2,TB8用作奇偶校验位。传输波特率为375 kb/s,晶体振荡器为12 MHz,SMOD=1。解决方案:在将数据写入发送方SBUF之前,将数据的奇偶校验标志P写入TB8。此时,

12、第9位数据可用于奇偶校验。可以使用查询和中断两种方式发送。ORG 0000H AJMP MAIN开机,转到主程序ORG 0100H主程序MAIN: MOV SCON,# 80H设置工作模式2 MOV PCON,# 80H波特率取fosc/32 MOV R0,# 50H第一地址50H至R0 MOV R7,# 10H数值长度发送至R7回路: MOV A . R0;以MOV公司的数据为例;MOV TB8,C;奇数和偶数标记被发送到tb8movesbuf,a;发送数据等待: JBC时间,继续等待;等待中断标志TI=1,循环;该值尚未发出,下一个数据SJMP $ END将继续发出。例如,接收程序将被编程

13、为将接收到的16B数据发送到片上随机存取存储器的50H-5FH单元。将串行端口设置为在模式2下工作,波特率为375bps。源程序如下:MAIN: MOV SCON,# 080H串口在方块2中工作;REN=1,可以接收MOV PCON,# 80H设定SMOD=1 MOV R0,# 50H第一地址50H至R0 MOV R7,# 10H数字长度发送到r7 setbren开始接收等待: JBC RI,PR1在接收到一帧数据后,清除R1并转移到PR1 SJMP等待;否则,等待MOV机场;读入数据JNB P,PNPP=0,PNP JNB RB8,ERRP=1,RB8=0,转到错误处理SJMRIGHT PN

14、P : JBRb8,ERRP=0,RB8=1,转至错误处理权限: MOV R0,A;数据发送到存储器INC R0修改地址指针DJNZ R7,WAIT数据尚未完全接收;继续接收下一个数据CLR F0设置正确的接收完成标志F0=0 SJMP结束时间:设置B0结束时间: SJMP $,4。波特率设置要求串行通信中接收和发送数据的波特率必须一致。通过软件编程MCS-51串口,可以约定四种工作模式。模式0和模式2的波特率是固定的。模式1和模式3的波特率是可变的,由定时器T1的溢出率(T1每秒溢出的次数)决定。串口的四种工作模式对应三种波特率。由于输入移位时钟的来源不同,各种方法的波特率计算公式也不同。(

15、1)从下图可以看出模式0的波特率。在模式0中,为每个机器周期生成一个移位时钟,以发送或接收一位数据。因此,波特率固定为振荡频率的1/12,不受PCON寄存器中SMOD位的影响。串行端口模式0波特率生成,(2)模式2波特率模式2波特率取决于PCON的SMOD位的值:当SMOD=0时,波特率为fosc的1/64;当SMOD=1时,波特率为fosc的1/32。即,模式2波特率(2 SMD/64)fos cfsc=12 MhZ,SMOD=0,187.5kbps smod=1,375 kbps,(3)模式1和模式3波特率模式1和模式3移位时钟脉冲由定时器T1产生,如图所示。因此,MCS-51串行端口模式

16、1和模式3的波特率由定时器T1的溢出率和SMOD值决定。即模式1和模式3波特率(2SMOD/32)T1溢出率,产生串口模式1和模式3波特率,其中T1溢出率取决于T1计数率(计数率fosc/12)和T1预置初始值。其中k是定时器T1的位定时器模式0,k=13定时器模式1,k=16定时器模式2,k=8。例如,如果定时器T1以11.059兆赫兹的晶体振荡器在模式1下工作,并且要求定时器1产生1200bps的波特率,那么可以计算SMOD=0作为初始值,那么TH1的初始值是0FFH,而TL1的初始值是0E8H。相关程序如下:MOV TMOD大街:号,# 10h将定时器T1设置为模式1 MOV TL1,# 0e8h加载初始值MOV TH1,# 0f fhfmovpcon,# 00hSMOD=0 SETB EA;打开中央处理器中断设置1;开启定时器T1中断setbt1启动T1运行.如果定时器T1工

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论