单片机-07(10)-第七章mcs-51单片机串行接口.资料

上传人:n**** 文档编号:93086041 上传时间:2019-07-16 格式:PPT 页数:31 大小:963KB
返回 下载 相关 举报
单片机-07(10)-第七章mcs-51单片机串行接口.资料_第1页
第1页 / 共31页
单片机-07(10)-第七章mcs-51单片机串行接口.资料_第2页
第2页 / 共31页
单片机-07(10)-第七章mcs-51单片机串行接口.资料_第3页
第3页 / 共31页
单片机-07(10)-第七章mcs-51单片机串行接口.资料_第4页
第4页 / 共31页
单片机-07(10)-第七章mcs-51单片机串行接口.资料_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《单片机-07(10)-第七章mcs-51单片机串行接口.资料》由会员分享,可在线阅读,更多相关《单片机-07(10)-第七章mcs-51单片机串行接口.资料(31页珍藏版)》请在金锄头文库上搜索。

1、7第七章 MCS-51单片机串行接口,1 串行口控制寄存器(SCON) SCON是MCS-51单片机的一个可位寻址的专用寄存器,用于串行数据通信的控制。单元地址为98H,位地址为98H9FH。寄存器的内容及位地址表示如下:,7-1 串行口控制寄存器,各位的说明如下: 1)SM0 、SM1串行口工作方式选择位 其状态组合和对应工作方式为: SM0 SM1 工作方式 0 0 方式0 0 1 方式1 1 0 方式2 1 1 方式3,2)M2允许方式2、3的多机通信控制位 在方式2和3中,若SM21且接收到的第九位数据(RB8)为1,才将接收到的前8位数据送入接收SBUF中,并置位RI产生中断请求;否

2、则丢弃前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时,不使用RB8 6)TI发送中断标志位 在方式0时,发送完第8位数据后,该位由硬件置位。 在其它方式下,于发送停止位之前,由硬件置位。 因此,TI1表示帧发送结束,其

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

4、xD,因此可以同时发送、接收数据,实现全双工。,PCON不可位寻址,字节地址为87H。它主要是为CHMOS型单片机80C51的电源控制而设置的专用寄存器。其内容如下:,与串行通信有关的只有D7位(SMOD),该位为波特率倍增位,当SMOD=1时,串行口波特率增加一倍,当SMOD=0时,串行口波特率为设定值。当系统复位时,SMOD=0。,3 电源控制寄存器(PCON),7-2 MCS-51串行的工作方式,表8-1 串行口工作方式,串行口的工作方式由SM0和SM1确定,编码和功能如表8-1所示。,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由T1的溢出率决定。,1 数据输出(

5、发送) 当数据写入SBUF后,数据从RXD端在移位脉冲(TXD)的 控制下,逐位移入74LS164,74LS164能完成数据的串并转换。当8位数据全部移出后,TI由硬件置位,发生中断请求。若CPU响应中断,则从0023H单元开始执行串行口中断服务程序,数据由74LS164并行输出。其接口逻辑如图8.3所示。,图8.3接口逻辑,一、串行工作方式0,2 数据输入(接收) 要实现接收数据,必须首先把SCON中的允许接收位REN设置为1。当REN设置为1时,数据就在移位脉冲的控制下,从RXD端输入。当接收到8位数据时,置位接收中断标志位RI,发生中断请求。其接口逻辑如图8.4所示。由逻辑图可知,通过外

6、接74LS165,串行口能够实现数据的并行输入。,图8.4 外接移位寄存器输入,【例7-1】使用74LS164的并行输出端接8支发光二极管,利用它的串入并出功能,把发光二极管从左到右依次点亮,并反复循环。假定发光二极管为共阴极接法。,图8.5 电路设计,ORG 0000H LJMP MAIN ORG 1000H MAIN: MOV SCON,#00H ;串行口工作在方式0 CLR ES ;禁止串行中断 MOV A, #80H ;发光二极管从左边亮起 DELR: CLR P1.0 ;关闭并行输出 MOV SBUF, A ;串行输出 WAINT: JNB TI, WAIT ;状态查询 SETB P

7、1.0 ;开启并行输出 ACALL DELAY ;调用延时子程序 CLR TI ;清发送中断标志 RR A ;发光右移 AJMP DELR ;继续 EDN,解:电路如图8.5。软件部分如下:,方式1为10位为一帧的异步串行通信方式。其帧格式为1个起始位、8个数据位和1个停止位。如图8.6所示:,图8.6 方式1的帧格式,1. 数据输出(发送) 数据写入SBUF后,开始发送,此时由硬件加入起始位和停止位,构成一帧数据,由TXD串行输出。输出一帧数据后,TXD保持在高电平状态下,并将TI置位,通知CPU可以进行下一个字符的发送。,二、串行工作方式1,2 数据输入(接收) 当REN=1且接收到起始位

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

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

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

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

12、ARR2: MOV A, SBUF XRL A,#0BBH JNZ ATT1 ;判断是否是应答信号“00” ATT2: MOV R0, #30H MOV R7,#10 MOV R6,#00H ATT3: MOV SBUF, R0 MOV A,R6 ADD A,R0 MOV R6,A INC R0 AWAIT2: JBC TI,ATT4 SJMP AWAIT2 ;发送有效数据 ATT4: DJNZ R7, ATT3 ;判断是否传送完毕 MOV SBUF, R6,AWAIT3: JBC TI, ARR3 SJMP AWAIT3 ;等待 ARR3: JBC RI, ARR4 SJMP ARR3 ;等

13、待 ARR4: MOV A, SBUF JNZ ATT2 AEND: RET B机通信程序: BSTART: MOV TMOD, #20H ;设定定时器1工作方式2 MOV TH1,#0F2H ;设定计数初值 MOV TL1,#0F2H ;计数重装值 MOV PCON,#00H ;波特率不倍增 SETB TR1 MOV SCON,#50H,BRR1: JBC RI,BRR2 SJMP BRR1 ;等待 BRR2: MOV A,SBUF ;把接收到的数据送入A XRL A,#0AAH ;判断接收到数据是否是“AA” JNZ BRR1 ;如果不是继续等待 BTT11: MOV SBUF,0BBH

14、;发送应答信号 BWAIT1: JBC TI, BRR3 ;等待 SJMP BWAIT1 BRR3: MOV R0,#30H ;接收有效数据 MOV R7,#10 MOV R6,#00H BRR4: JBC RI,BRR5 SJMP BRR4,BRR6: MOV A, SBUF XRL A,R6 JZ BEND MOV SBUF,#0FFH BWAIT3: JBC TI, BRR3 SJMP BWAIT3 BEND: MOV SBUF, #00H RET,方式2为11位为一帧的异步串行通信方式。其帧格式为1个起始位、9个数据位和1个停止位。 如图8.8所示。,图8.8 方式2的帧格式,三、串行

15、工作方式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基本类似,所不同的只在第9数据位上,串行口把接收到的前8个数据位送入SBUF,而把第九数据位送入RB。 方式2的波特率时固定的,而且有两种。一种是晶振频率的三十二分之一;另一种是晶振频率的六十四分之一。即fosc/32和fosc/64。如用公式表示则为:,由此公式可知,当SMOD为0时,波特率为fosc/64,当SMOD为1时,波特率为fosc/32。,方式3同方式2几乎完全一样,只不过方式3的波特率是可变的,有用户来确定。其波特率的确定同方式1。,四、串行工作方式3,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号