第9章MCS-51串行通信接口.ppt_第1页
第9章MCS-51串行通信接口.ppt_第2页
第9章MCS-51串行通信接口.ppt_第3页
第9章MCS-51串行通信接口.ppt_第4页
第9章MCS-51串行通信接口.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、第9章 MCS-51系统串行通信接口,一、MCS-51串行口结构,1 MCS-51单片机串行口结构及控制,1、SBUF(发送)和SBUF(接收) 8位缓冲寄存器共用一个端口地址99H SBUF(发送) 存放将要发送的字符数据 SBUF(接收) 存放串行口接收到的字符数据 MOV SBUF,A (发送) 产生写SBUF脉冲 MOV A, SBUF (接收) 产生读SBUF脉冲,2、在异步通信中,发送和接收都是在发送时钟和接收时钟控制下进行的,发送和接收时钟即可由主机频率经分频后提供,也可由内部定时器T1或T2的溢出率经过16分频后提供。,3、串行口的发送,MOV SBUF,A,自动在发送字符前后

2、添加起始位、停止位和其它控制位,然后在移位脉冲控制下,一位一位地从TXD线上串行发送字符帧。,4、串行口的接收,接收电路连续接收到一帧字符后就自动的去掉起始位并使RI=1,向CPU提出中断请求(设串行口中断是开放的)。 CPU响应中断 MOV A,SBUF,二、串行口工作方式,1、方式0 该方式只能与串行口设备寄存器方式连接,不能实现双机之间通信,每次传送8位数据,其波特率固定为fosc/12,传输距离一般不超2米。,2、方式1 该方式是典型的双机异步通信方式,字符帧格式为10位(8位数据位、一位起始位和一位停止位),波特率由定时器T1的溢出率决定。,SMOD:波特率倍增选择,由PCON寄存器

3、的最高位设置。SMOD的选择与波特率误差有关。,fosc:51单片机主时钟。一般选6MHz12MHz。 K:定时器T1的计数器长度,T1若选工作方式2,则K=8。 N:定时器定时常数的初值。,三、串行口工作方式设置,串行口工作方式的设置和控制是通过SCON(98H)和PCON(87H) 实现。,SM0和SM1:串行口方式控制位,设定串行口的工作方式,SM2:多机通信控制位,方式2、3使用。方式0 、1不用,应设置为0状态。,REN:允许接收控制位。 REN=0,则禁止串行口接收 REN=1,则允许串行口接收,TB8:发送数据第9位,方式2、3时存放发送数据第9 位。TB8由软件置位或复位。,R

4、B8:接收数据第9位,方式2、3时存放接收数据第9 位。在方式1下,若SM2=0,RB8存放接收到的停止位。方式0下,不使用RB8,TI:发送中断标志位,用于指示一帧数据是否发送完。 在方式0下,发送电路发送完第8位数据时,TI由硬件置位;在其它方式下,TI在发送电路开始发送停止位时置位。TI在发送前必须由软件复位,发送完一帧后由硬件置位的。TI位也可供CPU查询。,RI:为接收中断标志位,用于指示一帧信息是否接收完。在方式0下,RI在接收电路接收到第8位数据 时由硬件置位;在其它方式下,RI是在接收电路接收到停止位的中间位置时置位的。RI也可供CPU查询,以决定CPU是否需要从“SBUF(接

5、收)”中提取接收到的字符或数据。RI也由软件复位。,2 串行口各种工作方式应用举例,一、 方式0 SM2、TB8、RB8不起作用,应设置“0”态,发送(TI=0), MOV SBUF,A, A 数据送入SBUF(发送),RxD线发出8位数据,TxD线发送同步脉冲。8位数据发送完后,TI由硬件置位,向CPU请求中断(若中断开放)。CPU响应中断后先用软件使TI清零,然后再给“SBUF(发送)”送下一个欲发送字符。,接收(RI=0和REN=1) 串行数据由RxD线输入,TxD线输出同步脉冲。 接收电路接收到8位数据后,RI自动置“1”并发出串行口中断请求。CPU查询到RI=1或响应中断后便可通过

6、MOV A,SBUF SBUF(接收)数据送入A。,例1 请编出发光二极管自左至右以一定速度显示的程序。设发光二极管为共阴极接法。,主程序 ORG 2000H MOV SCON,#00H ;串行口初始化为方式0 MOV IE,90H ;开串口中断 CLR P1.0 ;禁止CD4094并行输出 MOV A,#80H ;起始显示码送A MOV SBUF,A ;8031串行输出 LOOP: SJMP LOOP ;等待串行口输出完,中断服务程序 ORG 0023H LJMP SBV ;转SBV ORG 0100H SBV: SETB P1.0 ;点亮发光二极管 LCALL DELAY ;点亮一段时间

7、CLR TI ;清发送中断标志 RR A ;准备点亮下一位 CLR P1.0 ;灭显示 MOV SBUF,A ;串行口输出 RETI ;中断返回 DELAY: ;延时程序 END,二、方式1,串行口设定为10位异步通信方式。8位数据位,1位起始位,1位停止位。 发送(TI=0), MOV SBUF,A 发送电路自动在8位发送字符前后分别添加1位起始位和停止位,并在移位脉冲的作用下在TxD线上依次发送一帧信息,发送完后自动维持TxD线为高电平。 TI由硬件在发送停止位时置位,由软件将它复位。,接收(RI=0和REN=1) 在接收到有效停止位时,接收电路必须同时满足以下两个条件:RI=0和SM2=

8、0,才能把接收到的8位字符存入“SBUF(接收)”中,把停止位送入RB8中,并使RI=1和发出串行口中断请求。,例2 请用中断法编出串行口方式1下的发送程序。 设单片机主频为6MHz,定时器T1用作波特率发生器,波特率为2400bps,被发送字符块在内部RAM的地址为TBLOCK单元,字符块长度为LEN。要求奇校验位在数据第8位发送,字符块长度LEN率先发送。,波特率为2400bps,取SMOD=1,由表查得TH1和 TL1的时间常数初值为F4H。,主程序 ORG 2100H TBLOCK DATA 20H LEN DATA 14H START: MOV TMOD, #20H ;定时器T1为方

9、式2 MOV TL1, #0F4H ;波特率为2400bps MOV TH1, #0F4H ;给TH1送重装初值 MOV PCON, #80H ;令SMOD=1 SETB TR1 ;启动T1 MOV SCON, #40H ;串行口为方式1 MOV R0, #TBLOCK ;字符块始址送R0 MOV A, #LEN MOV R2, A ;字符块长度字节送R2 MOV SBUF, A ;发送LEN字节 SETB EA ;开CPU中断 WAIT: SETB ES ;允许串行口中断 SJMP WAIT ;等待中断,中断服务程序 ORG 0023H LJMP TXSVE ;转发送服务程序 ORG 215

10、0H TXSVE: CLR TI ;清TI MOV A, R0 ;发送字符送A MOV C, PSW.0 ;奇偶校验位送C CPL C ;形成奇偶校验位送C MOV ACC.7, C ;使A中成为奇数个1 MOV SBUF, A ;启动发送 DJNZ R2, NEXT ;若字符块未发完,则NEXT CLR ES ;关串行口中断 SJMP STOP ;停止发送 NEXT: INC R0 ;字符块指针加1 STOP: RETI ;中断返回 END,双机之间通信时,SM2=0、REN=1、TB8/RB8可做奇偶位,多机通信时,SM2=0、REN=1、TB8/RB8做多机通信控制位。,发送(TI=0)

11、 发送前要求把第9位数据位预先装入SCON的TB8,由用户安排,可以是奇偶校验位或其他控制位。 SETB TB8 CLR TB8 MOV SBUF,A TI由硬件在发送停止位时置位,由软件将它复位。,接收(RI=0和REN=1) 方式1 RB8存停止位 方式2、3 RB8存放第9数据位,接收有效字符的条件:,RI=0 SM2=0或RB8=1,同时满足两条件,执行 MOV A ,SBUF; 使 RI=1, 否则接收无效, RI=0。,RI=0,SBUF空,SM2或RB8 共同控制接收 RB8 奇偶校验,SM2 =0 SM2 =1, RB8=1,多机通信,例4请用查询法编出串行口在方式2下的发送程

12、序。设单片机主频为6MHz,波特率为fosc/32,发送数据区始址为TBLOCK(内部RAM),接收数据块长度为LEN。要求采用累加和校验,以空出第9位它用。,累加和是指累加所有需要发送或接收的数据(字符)字节后得到的低字节和(大于255部分舍去)。累加和校验要求发送端在发送完数据后把累加和也发送出去,接收端除要计算接收数据的累加和外,还必须接收发送端发来是累加和,并把它同求得的累加和比较。若比较相同,则数据传送正确;否则,数据传送有错。,主程序 ORG 1000H TBLOCK DATA 20H LEN DATA 1EH START: MOV SCON, #80H ;方式2 MOV PCON

13、, #80H ;令SMOD=1 MOV R0, #TBLOCK ;字符块始址送R0 MOV R2, #LEN ;字符块长度字节送R2 MOV R3, #LEN ;存入累加和寄存器R3 ACALL TXSUB ;调用发送子程序 SJMP $ ;停机,发送子程序,ORG 1100H TXSUB: PUSH ACC ;保护A中的内容 PUSH PSW CLR TI ;清TI TXLEN: MOV A , R2 ; 发送字符块长度 MOV SBUF , A JNB TI,$ ;等待发完 CLR TI ;发完后清TI TXD:MOV A,R0 ;发送字符送A MOV SBUF,A ;启动发送 JNB T

14、I,$ ;等待发完,TXSUM: MOV A,R3 ;若已发完则发累加和 MOV SBUF,A JNB TI,$ ;等待发完 CLR TI ;发完后清TI MOV R3,#00H ;清累加和寄存器 POP PSW ;恢复现场 POP ACC RET END,CLR TI ;发完后清TI ADD A,R3 ;求累加和 MOV R3,A ;存入R3 INC R0 ;字符块指针加1 DJNZ R2,TXD ;若字符未全发完,则继续,例5请用查询法编出串行口在方式3下的接收程序。设单片机主频为6MHz,波特率为2400bps,接收数据区始址为RBLOCK(内部RAM),接收数据块长度字节由始发端发送来

15、。要求采用累加和校验,若传输有错,转出错处理程序。,本程序有主程序、接收子程序和出错处理程序组成,主程序: ORG 1000H RBLOCK DATA 30H START: MOV TMOD, #20H ;T1工作于方式2 MOV TH1, #OF4H ;设置时间常数初值 MOV TL1, #0F4H SETB TR1 ;启动T1 MOV SCON, #0D0H ;串行口工作于方式3接收 MOV PCON, #80H ;使SMOD=1 MOV R0, #RBLOCK ;接收数据区始址送R0 MOV R3, #00H ;累加和寄存器清零 ACALL RXSUB ;转接收子程序 SJMP $ ;停机,接收子程序: RXSUB: CLR RI ;清RI RXLEN: JNB RI , $ ;等待接收数据块长度字节 CLR RI ;接收完后清RI MOV A , SBUF ;数据块长度字节送A MOV R2 , A ;存入R2 ADD A , R3 ;开始求累加和 MOV R3, A ;累加和存入R3,RxD: JNB RI , $ ;等待接收字符 CLR

温馨提示

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

评论

0/150

提交评论