单片机_07(10)-第七章 MCS-51单片机串行接口 ppt_第1页
单片机_07(10)-第七章 MCS-51单片机串行接口 ppt_第2页
单片机_07(10)-第七章 MCS-51单片机串行接口 ppt_第3页
单片机_07(10)-第七章 MCS-51单片机串行接口 ppt_第4页
单片机_07(10)-第七章 MCS-51单片机串行接口 ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、1 串行口控制寄存器(SCON) SCON是MCS-51单片机的一个可位寻址的专用寄存器,用于串行数据通信的控制。单元地址为98H,位地址为98H9FH。寄存器的内容及位地址表示如下:位地址 9FH 9EH9DH9CH 9BH9AH 99H98H位符号 SM0 SM1SM2RENTB8RB8TIRI7-1 7-1 串行口控制寄存器串行口控制寄存器各位的说明如下:1)SM0 、SM1串行口工作方式选择位 其状态组合和对应工作方式为: SM0 SM1 工作方式 0 0 方式0 0 1 方式1 1 0 方式2 1 1 方式32)M2允许方式2、3的多机通信控制位 在方式2和3中,若SM21且接收到的

2、第九位数据(RB8)为1,才将接收到的前8位数据送入接收SBUF中,并置位RI产生中断请求;否则丢弃前8位数据。若 SM20,则不论第九位数据(RB8)为1还是为0,都将 前8位送入接收SBUF中,并产生中断请求。 方式0时,SM2必须置0。3)REN允许接收位 REN0 禁止接收数据 REN1 允许接收数据4)TB8发送数据位8 在方式2、3时,TB8的内容是要发送的第9位数据,其值由用户通过软件来设置。5)RB8接收数据位8 在方式2、3时,RB8是接收的第9位数据。 在方式1时,RB8是接收的停止位 在方式0时,不使用RB86)TI发送中断标志位 在方式0时,发送完第8位数据后,该位由硬

3、件置位。 在其它方式下,于发送停止位之前,由硬件置位。 因此,TI1表示帧发送结束,其状态既可供软件查询使用,也可请求中断。 TI由软件清“0”。7)RI接收中断标志位 在方式0时,接收完第8位数据后,该位由硬件置位。 在其它方式下,于接收到停止位之前,该位由硬件置位。 因此,RI1表示帧接收结束,其状态既可供软件查询使用, 也可请求中断。 RI由软件清“0”。2 串行口缓冲区SBUF SBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。两个缓冲器只用一个字节地址99H,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。CPU在写SBUF,就是修改发送

4、缓冲器;读SBUF,就是读接收缓冲器。串行口对外也有两条独立的收发信号线RxD、TxD,因此可以同时发送、接收数据,实现全双工。PCON不可位寻址,字节地址为87H。它主要是为CHMOS型单片机80C51的电源控制而设置的专用寄存器。其内容如下: 与串行通信有关的只有D7位(SMOD),该位为波特率倍增位,当SMOD=1时,串行口波特率增加一倍,当SMOD=0时,串行口波特率为设定值。当系统复位时,SMOD=0。 位序D7D6D5D4D3D2D1D0位符号SMOD/GF1GF0PDIDL3 电源控制寄存器(PCON)7-2 MCS-51串行的工作方式SM0 SM1方式功能说明波特率0 0方式0

5、移位寄存器方式fosc/120 1方式18位UART可变1 0方式29位UARTfosc/64 或者fosc/321 1方式39位UART可变表8-1 串行口工作方式 串行口的工作方式由SM0和SM1确定,编码和功能如表8-1所示。 方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由T1的溢出率决定。1数据输出(发送) 当数据写入SBUF后,数据从RXD端在移位脉冲(TXD)的 控制下,逐位移入74LS164,74LS164能完成数据的串并转换。当8位数据全部移出后,TI由硬件置位,发生中断请求。若CPU响应中断,则从0023H单元开始执行串行口中断服务程序,数据由74LS1

6、64并行输出。其接口逻辑如图8.3所示。RXDTXD0D7D。CLK74LS1648051STB0 . 1PAB图8.3接口逻辑一、串行工作方式02 数据输入(接收) 要实现接收数据,必须首先把SCON中的允许接收位REN设置为1。当REN设置为1时,数据就在移位脉冲的控制下,从RXD端输入。当接收到8位数据时,置位接收中断标志位RI,发生中断请求。其接口逻辑如图8.4所示。由逻辑图可知,通过外接74LS165,串行口能够实现数据的并行输入。RXDTXD0D7D.CLK74LS1658051STB0 . 1PQ图8.4 外接移位寄存器输入 【例7-1】使用74LS164的并行输出端接8支发光二

7、极管,利用它的串入并出功能,把发光二极管从左到右依次点亮,并反复循环。假定发光二极管为共阴极接法。RXDTXD0D7D.CLK74LS1648051AB。STB0.1P图8.5 电路设计 ORG0000H LJMPMAIN ORG1000HMAIN:MOVSCON,#00H ;串行口工作在方式0 CLRES ;禁止串行中断 MOVA, #80H ;发光二极管从左边亮起DELR: CLRP1.0 ;关闭并行输出 MOVSBUF, A ;串行输出WAINT: JNBTI, WAIT ;状态查询 SETB P1.0 ;开启并行输出 ACALLDELAY ;调用延时子程序 CLRTI ;清发送中断标志

8、 RRA ;发光右移 AJMP DELR ;继续 EDN 解:电路如图8.5。软件部分如下:方式1为10位为一帧的异步串行通信方式。其帧格式为1个起始位、8个数据位和1个停止位。如图8.6所示:起始位0D1D2D3D4D5D6D7D停止位图8.6 方式1的帧格式1. 数据输出(发送) 数据写入SBUF后,开始发送,此时由硬件加入起始位和停止位,构成一帧数据,由TXD串行输出。输出一帧数据后,TXD保持在高电平状态下,并将TI置位,通知CPU可以进行下一个字符的发送。二、串行工作方式12 数据输入(接收) 当REN=1且接收到起始位后,在移位脉冲的控制下,把接收到的数据移入接收缓冲寄存器(SBU

9、F)中,停止位到来后,把停止位送入RB8中,并置位RI,通知CPU接收到一个字符。3 波特率的设定 工作在方式1时,其波特率是可变的,波特率的计算公式为:的溢出率)定时器波特率1(322SMOD 其中,SMOD为PCON寄存器最高位的值,其值为1 或0。 当定时器1作波特率发生器使用时,选用工作方式2(即自动加载定时初值方式)。选择方式2可以避免通过程序反复装入定时初值所引起的定时误差,使波特率更加稳定。假定计数初值为X,则计数溢出周期为:)X256(fosc12 溢出率为溢出周期的倒数。则波特率的计算公式为: )X256(12fosc322SMOD波特率 实际使用中,波特率是已知的。因此需要

10、根据波特率的计算公式求定时初值X。用户只需要把定时初值设置到定时器1,就能得到所要求的波特率。 4 应用举例(用方式1实现双机串行通信)(1)通信双方的硬件连接 作为应用系统首先要研究通信双方如何连接。一种办法是把两片8051的串行口直接相连,一片8051的TXD与另一片的RXD相连,RXD与另一片的TXD相连,地与地连通。由于8051串行口的输出是TTL电平,两片相连所允许的距离极短。(2)通信双方的软件约定 为实现双机通信,我们规定如下: 假定A机为发送机,B机为接收机。 当A机发送时,先送一个“AA”信号,B机收到后回答一个“BB”信号,表示同意接收。 当A机接收到“BB”后,开始发送数

11、据,每发送一次求一次“检 查和”,假定数据块长16个字节,起始地址为30H,一个数据块发送完后再发出“检查和”。 HFx2024313256120038411062566 为使波特率不倍增,设定PCON寄存器的SMOD=0,则 PCON00H .(3)基本的通信程序 设计程序框图如图8.7所示。 B机接收的数据并转存到数据区,起始地址也为30H,同时每接收一次也计算一次“检查和”,当一个数据块收齐后,再接收A机发来的“检查和”,并将它与B机的“检查和”进行比较。若两者相等,说明接收正确,B机回答一个00;若两者不相等,说明接收不正确,B机回答一个FF,请求重发。 A机收到00的答复后,结束发送

12、。若收到的答复非0,则重新将数据发送一次。 双方均以1200波特的速率传送。假设晶振频率为6MHz ,计算定时器1的计数初值: 指针初始化检查和清零设置串行口工作方式发请求发送信号B机允许发送?发送一个数据字节求检查和发送检查和B机接收正确码?返回设置波特率启动定时器T1数据块发送完?向A机发应答信号设置串行口工作方式等待A机联络信号A机请求发送吗?指针初始化检查和清零设置波特率启动定时器T1NNNA机通信程序接收一个数据字节求检查和数据块收齐吗?接收A机检查和并比较B机检查和返回接收正确吗?发出错误标志B机通信程序NNN图8.7 双机通信程序结构图 A A机通信程序:机通信程序:ASTART

13、: MOV TMOD,#20H ;设定定时器1工作方式2 MOV TL1,#0F2H ;设定计数初值 MOV TH1,#0F2H ;计数重装值 MOV PCON,#00H ;波特率不倍增 SETB TR1 ;启动T1 MOV SCON,#50H ;设置串行口方式1ATT1: MOV SBUF, #0AAH ;发送“AA”AWAIT1: JBC TI, ARR1 ;等待一帧发送完 SJMP AWAIT1ARR1: JBC RI,ARR2 ;等待应答信号 SJMP ARR1 根据结构图设计出下述通信程序:ARR2: MOVA, SBUF XRLA,#0BBH JNZATT1 ;判断是否是应答信号“

14、00”ATT2: MOVR0, #30H MOVR7,#10 MOVR6,#00HATT3: MOVSBUF, R0 MOVA,R6 ADDA,R0 MOVR6,A INCR0AWAIT2: JBCTI,ATT4 SJMPAWAIT2 ;发送有效数据ATT4: DJNZR7, ATT3 ;判断是否传送完毕 MOVSBUF, R6AWAIT3: JBCTI, ARR3 SJMPAWAIT3 ;等待ARR3: JBCRI, ARR4 SJMPARR3 ;等待ARR4: MOVA, SBUF JNZ ATT2AEND: RETB B机通信程序:机通信程序:BSTART: MOV TMOD, #20H

15、;设定定时器1工作方式2 MOV TH1,#0F2H ;设定计数初值 MOV TL1,#0F2H ;计数重装值 MOV PCON,#00H ;波特率不倍增 SETBTR1 MOV SCON,#50HBRR1: JBC RI,BRR2 SJMP BRR1 ;等待BRR2: MOV A,SBUF ;把接收到的数据送入A XRL A,#0AAH ;判断接收到数据是否是“AA” JNZ BRR1 ;如果不是继续等待BTT11: MOVSBUF,0BBH ;发送应答信号BWAIT1: JBCTI, BRR3 ;等待 SJMPBWAIT1BRR3: MOVR0,#30H ;接收有效数据 MOVR7,#10

16、 MOVR6,#00HBRR4: JBCRI,BRR5 SJMPBRR4 BRR6: MOVA,SBUFXRLA,R6JZBENDMOVSBUF,#0FFHBWAIT3:JBCTI,BRR3SJMPBWAIT3BEND: MOVSBUF,#00HRET方式2为11位为一帧的异步串行通信方式。其帧格式为1个起始位、9个数据位和1个停止位。如图8.8所示。图8.8 方式2的帧格式 三、串行工作方式2 在方式2下,字符还是8个数据位,只不过增加了一个第9个数据位(D8),而且其功能由用户确定,是一个可编程位。 在发送数据时,应先在SCON的TB8位中把第9个数据位的内容准备好。这可使用如下指令完成: SETB TB8 ;TB8位置“1” CLR TB8 ;TB8位置“0”发送数据(D0D7)由MOV指令向SBUF写入,而D8位的内容则由硬件电路从TB 8中直接送到发送移位器的第九位,并以此来启动串行发送。一个字符帧发送完毕后,将TI位置“1”,其他过程与方式1相同。 方式2

温馨提示

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

评论

0/150

提交评论