《内串行通信》PPT课件.ppt_第1页
《内串行通信》PPT课件.ppt_第2页
《内串行通信》PPT课件.ppt_第3页
《内串行通信》PPT课件.ppt_第4页
《内串行通信》PPT课件.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、本节课学习内容,一、对8051串行口的工作方式进行回顾 二、对8051串行口各工作方式传输波特率进行总结。 三、对单片机串行总线多机通信方法进行学习。 四、举例对串行口的各工作方式进行的使用进行巩固。,串行口控制寄存器SCON,D7 D6 D5 D4 D3 D2 D1 D0,串行口数据缓冲器SBUF,发送缓冲器 接收缓冲器,D7 D6 D5 D4 D3 D2 D1 D0,特殊功能寄存器PCON,1、串行口通信常用特殊功能寄存器,一、对串行口的工作方式回顾,2、串行口的四种工作方式,方式0:同步移位寄存器方式。 RXD端输出或输入串行数据 TXD端输出同步脉冲 方式1:波特率可变的8位异步通信方

2、式。 方式2:9位异步通信方式。 方式3:波特率可变的9位异步通信方式。,二、串行通信的波特率 串行通信的4种工作方式对应着3种波特率。 (1)对于方式0,波特率是固定的,为单片机时钟的十二分之一。 即:方式0波特率=振荡器频率/12 (2)对于方式2,波特率是由振荡器的频率和SMOD(PCON.7)所确定: 方式2波特率=2SMOD 振荡器频率/64,(3)对于方式1和方式3,波特率都由定时器T1的溢出率和SMOD来决定,对应于以下公式: 方式1和方式3波特率= 2SMOD(定时器T1的溢出率)/32,而对于定时器T1的溢出率,在计算的时候应注意: 定时器T1作为波特率发生器使用时,应禁止T

3、1中断。 T1的工作方式一般选择方式2。 T1的计数脉冲可以为8051的振荡脉冲的12分频(C/T=0),也可以选择从外部T1(P3.5)上输入作为T1的计数信号(C/T=1)。 此外,定时计数器T1在作为串行口的波特率发生器使用时,其输出的溢出脉冲分频信号是由内部硬件自动与串行口的时钟脉冲输入端连接的。,定时器T1的溢出率= 振荡器频率/(12(2n-X) ( 计算过程:定时器T1溢出需要的时间为 T= (2n-X) 12/振荡器频率) 对于定时器方式2,取n=8; 方式1和方式3的波特率= 2SMOD 振荡器频率/32 12 (28-(TH1),表56 常用波特率和定时器T1初值,最大值,

4、最大值,三 、多机通信 多台单片机之间的相互配合是按照实际需要将它们组成一定形式的网络,使之相互通信,以完成各种功能。目前,最常用的多机通信网络形式有如下4种:,总线型,星型,环形,树型,计算机数据通信网络性能比较,类型,从表中可见,总线型网络结构接口简单,使用灵活,因此许多场合都使用这种网络结构。,串行总线型主从式全双工多机通信系统,SM2:多机通信控制位。 在方式2和方式3中,如SM2=1,则接收到的第9位数据(RB8)为0时不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;RB8为1时,才将接收到的前8位数据送入SBUF,并置位RI产生中断请求。 当SM2=0时,则不论

5、第9位数据为0或1,都将前8位数据装入SBUF中,并产生中断请求。在方式0时,SM2必须为0。,多机通信的步骤举例,1、所有从机的SM2位置1,以便能接收主机发来的地址; 2、主机令第9位数据为1,发送出需要与之通信的从机地址到各个从机; 3、所有从机都收到地址,向本机的CPU申请中断,进入服务程序后比较和确认地址; 4、被寻址的从机,用指令清除SM2,准备接收数据,并向主机发回地址以便核对,这次不参与通信的其余从机退出中断服务程序。 5、主机发送控制信号和数据给已被寻址的从机。 6、从机SM2置1,准备进行下一组通信。,串行口编程需要注意以下几点: 1、收发双方字符格式必须相同。 2、波特率

6、必须一致。 3、所用电平必须一致。 4、对通信双方所用各种字符的含义必须统一。 在此基础上,编程者可以通过设置特殊功能寄存器,来对串行口进行初始化。 使用到的特殊功能寄存器:SCON、PCON、TMOD、TCON、TH1、TL1、IE、IP、SBUF,四、串行口应用程序举例,SCON,PCON,TMOD,TCON,IE,IP,除此之外,还要用到TH1、TL1、SBUF特殊功能寄存器。,串行通信编程时经常用到的特殊功能寄存器,串行口的编程 串行口需初始化后, 才能完成数据的输入、输出。其初始化过程如下: (1) 按选定串行口的操作模式设定SCON的SM0、SM1两位二进制编码,如有接收,则置RE

7、N为“1”。 (2) 对于操作模式 2 或 3, 应根据需要在 TB8 中写入待发送的第 9 位数据。 (3) 若选定的操作模式不是模式 0, 还需设定接收/发送的波特率。 设定SMOD的状态, 以控制波特率是否加倍。 若选定操作模式1或3, 则应对定时器 T1进行初始化以设定其溢出率,并关T1中断。,例1:用8051串行口外接CD4094扩展8位并行口,8位并行口的各位都接发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环。设发光二极管为共阴极接法,如图:,当STB=1时,打开输出控制门,实现并行输出。,解:设数据串行发送采用中断方式,显示的延迟依靠调用延迟程序DELAY来实现

8、。 参考程序如下: ORG 0023H ;串行中断入口 AJMP SER ;转入串行中断服务程序 ORG 2000H ;主程序起始地址 MOV SCON,#00H ;串行口方式0初始化 MOV IE,#90H ;打开串行口中断允许开关IE MOV A,#80H ;最左一位发光二极管先亮 CLR P1.0 ;关闭并行输出 MOV SBUF,A ;开始串行输出,LOOP:SJMP $ ;等待中断 SER :SETB P1.0 ;启动并行输出 ACALL DELAY ;显示延时一段时间 CLR TI ;清发送中断标志 RR A ;准备右边一位显示 CLR P1.0 ;关闭并行输出 MOV SBUF,

9、A ;再一次串行输出 RETI ;中断返回,例2:8051串行口按双工方式收发ASC2字符,最高一位用来作为奇偶校验位,采用奇校验方式。要求传送的波特率为1200波特。(单片机的振荡频率为6MHz)编写有关的通信程序。 解:确定工作方式:采用方式1。 定时器1采用工作方式2,单片机时钟频率为6MHz,查表可知,初值为F4H。 发送数据首地址:20H 接收数据首地址:40H 采用中断方式,MAIN:MOV TMOD,#20H ;定时器1设置为方式2 MOV TL1,#0F4H ;定时器初值 MOV TH1,#0F4H ;8位重装值 MOV IE,#90H ;打开中断开关 SETB TR1 ;启动

10、定时器1 MOV SCON,#50H ;串行口方式1,REN=1 MOV R0,#20H ;发送数据区首址 MOV R1,#40H ;接收数据区首址 ACALL SOUT ;先输出一个字符 LOOP: SJMP $ ;等待中断,中断服务子程序: ORG 0023H ;串行口中断入口 AJMP SBR1 ;转至中断服务程序 SBR1: JNB RI,SEND ;TI=1,为发送中断 ACALL SIN ;RI=1,为接收中断 SJMP NEXT ;转至统一的出口 SEDN:ACALL SOUT ;调用发送子程序 NEXT:RETI ;中断返回,发送子程序: SOUT:MOV A,R0 ;取发送数

11、据到A MOV C,P ;奇偶标志赋予C CPL C ;奇校验 MOV ACC.7,C ;加到ASC2码高位 INC R0 ;修改发送数据指针 CLR TI ;清发送中断标志 MOV SBUF,A ;发送ASC2码 END1 RET ;返回,接收子程序: SIN:MOV A,SBUF ;读出接收缓冲区内容 MOV C,P ;取出校验位 CPL C ;奇校验 ANL A,#7FH ;删去校验位 MOV R1,A ;读入接收缓冲区 INC R1 ;修改接收数据指针 CLR RI ;清接收中断标志 RET ;返回,例 3 利用串行口进行双机通信。 把甲机中40H开始的10H个数据单元中的数据用串行口

12、传输给乙机,并放在乙机60H开始的单元中,发送和接收均采用方式2,第9位数据为奇偶校验位,发送数据速率为时钟频率的1/64,发送和接收均采用查询方式。 ,甲机发送(采用查询方式): MOV SCON, 80H ; 设置工作方式2 MOV PCON, 00 ; 置SMOD=0, 波特率不加倍 MOV R0, 40H ; 数据区地址指针 MOV R2, 10H ; 数据长度 LOOP: MOV A, R0 ; 取发送数据 MOV C, P ; 奇偶位送TB8 MOV TB8, C MOV SBUF, A ; 送串口并开始发送数据,WAIT: JBC TI, NEXT ; 检测是否发送结束并清TI

13、SJMP WAIT NEXT: INC R0 ; 修改发送数据地址指针 DJNZ R2, LOOP RET 乙机接收(查询方式): MOV SCON, 90H; 模作模式2, 并允许接收 MOV PCON, 00H; 置SMOD=0 MOV R0, 60H ; 置数据区地址指针 MOV R2, 10H ; 等待接收数据长度,LOOP: JBC RI, READ ; 等待接收数据并清RI SJMP LOOP READ: MOV A, SBUF ; 读一帧数据 MOV C, P JNC LP0 ; C不为 1 转LP0 JNB RB8, ERR ; RB8=0, 即 RB8不为 P转ERR AJM

14、P LP1 LP0: JB RB8, ERR ; RB8=1, 即 RB8不为 P转ERR LP1: MOV R0, A ; RB8=P, 接收一帧数据 INC R0 DJNZ R2, LOOP RET ERR: ; 出错处理程序 ,例4:设有甲、乙两台单片机,以工作方式2、全双工串行通信、每帧为11位、可程控的第9位数据位用于奇偶校验的补偶位。编出能实现如下功能的程序:甲机:每发送1帧信息,乙机对接收的数据进行奇偶校验,若补偶正确,则乙机向甲机发出“数据发送正确”的信息(例中以00H作为回答信号),甲机接收到该回答信号后再发送下1字节;若奇偶校验错,则乙机发出“数据发送不正确”的信息(例中以

15、AAH作为回答信号)给甲机,要求甲机再次发送原数据,直至发送正确。甲机发送128个字节后就停止发送,采用中断的方法。,乙机:接收甲机发送来的数据并进行奇偶校验,与此同时发出相应的回答信息(即00H或AAH),直到接收完128个字节为止。 解:能实现上述通信要求的甲、乙机的流程图如图525所示。,图525双工串行口应答式通信流程图 (a)甲机发送流程图; (b)乙机发送流程图,相应的程序如下: 甲机 主程序: ORG 0000H LJMP MAIN ;转至主程序入口处 ORG 0023H ;串行中断入口 LJMP INTSE1 ;转至中断服务程序 ORG 2000H,MAIN : MOV SCO

16、N,90H ;置工作方式2并允许接收 MOV PCON,80H ;波特率加倍 MOV DPTR,ADDR1 ;置数据块指针 MOV R0,80H ;设置发送字节数初值 SETB EA ;CPU开中断 SETB ES ;允许串行口中断 MOVX A,DPTR ;取第1个发送数据 MOV C,P ;奇偶标志位送C MOV TB8,C ;奇偶标志位送TB8 MOV SBUF,A ;发送数据 SJMP $ ;等待中断,中断服务程序: INTSE1: JB RI,LOOP1 ;检测是否接收口中断,是则转 CLR TI ;是发送中断,则先清除该标志 SJMP ENDT1 ;转至ENDT1处 LOOP1:

17、CLR RI ;是接收中断,则先清除该标志 MOV A,SBUF ;取乙机的应答信息 CJNE A,00H,LOOP2 ;发送不正确转 DJNZ R0,LOOP3 ;128个数据发送完否?未完转中断返回 CLR ES ;已发送完毕,则禁止串行口中断 LOOP3: INC DPTR ;修改地址指针 MOVX A,DPTR ;取下1个发送数据,MOV C,P MOV TB8,C ;将奇偶校验位送TB8 MOV SBUF,A ;启动串行口,发送新的数据 ENDT1: RETI ;中断返回 LOOP2: MOVX A,DPTR ;准备重发1次数据 MOV C,P MOV TB8,C ;奇偶校验位送TB

18、8 MOV SBUF,A ;启动串行口,重发1次数据 SJMP ENDT1 ;转至中断返回处,乙机 主程序: ORG 0000H LJMP MAINR ORG 0023H LJMP INTSE2 ORG 2000H,MAINR:MOV PCON,80H ;波特率加倍 MOV SCON,90H ;工作方式2,允许接收 MOV DPTR,ADDR2 ;置数据指针 MOV R0,80H ;传送128个字节 SETB EA ;CPU开中断 SETB ES ;允许串行口中断 SJMP $ ;等待中断,中断服务程序: INTSE2:JNB RI,LOOP6 ;不是接收中断则转 CLR RI ;是,则清接收中断标志 MOV A,SBUF ;接收数据 MOV C,P ;判奇偶标志 JC LOOP4 ;为奇数时转 ORL C,RB8 ;为偶数时判RB8 JC LOOP5 ;RB8为1时(出错)转,LOOP3:M

温馨提示

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

最新文档

评论

0/150

提交评论