C单片微机的串行口原理及应用PPT学习教案_第1页
C单片微机的串行口原理及应用PPT学习教案_第2页
C单片微机的串行口原理及应用PPT学习教案_第3页
C单片微机的串行口原理及应用PPT学习教案_第4页
C单片微机的串行口原理及应用PPT学习教案_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

1、会计学1 C单片微机的串行口原理及应用单片微机的串行口原理及应用PPT课件课件 第1页/共90页 通信:计算机与外界的数据传送。通信:计算机与外界的数据传送。 单台仪器仪表或控制器往往会带有不止一个的单片单台仪器仪表或控制器往往会带有不止一个的单片 微机,微机, 多个智能仪器仪表或控制器在单片微机应用系统多个智能仪器仪表或控制器在单片微机应用系统 中又常常会构成一个分布式采集、控制系统,上层由中又常常会构成一个分布式采集、控制系统,上层由 PC进行集中管理等。进行集中管理等。 第2页/共90页 传送方式传送方式 并行传送方式并行传送方式 在数据传输时,一个数据编码字符的所有各位在数据传输时,一

2、个数据编码字符的所有各位 都同时发送、并排传输,又同时被接收。都同时发送、并排传输,又同时被接收。 并行传送方式要求物理信道为并行内总线或者并行外并行传送方式要求物理信道为并行内总线或者并行外 总线。总线。 第3页/共90页 串行传送方式串行传送方式 在数据传输时,一个数据编码字符的所有各位在数据传输时,一个数据编码字符的所有各位 按一定顺序,一位接着一位在信道中被发送和接收。按一定顺序,一位接着一位在信道中被发送和接收。 串行传送方式的物理信道为串行总线。串行传送方式的物理信道为串行总线。 计算机与外界的数据传送大多是串行的,其传送计算机与外界的数据传送大多是串行的,其传送 距离可以从几米直

3、到几千公里。距离可以从几米直到几千公里。 第4页/共90页 单工方式、半双工方式、全双工方式单工方式、半双工方式、全双工方式 单工单工方式方式 信号信号(不包括联络信号不包括联络信号) 在信道中只能沿一个方向传送。在信道中只能沿一个方向传送。 半双工半双工方式方式 通信的双方均具有发送和接收信息的能力,信道通信的双方均具有发送和接收信息的能力,信道 也具有双向传输性能,通信的任何一方在指定的时刻,也具有双向传输性能,通信的任何一方在指定的时刻, 只能沿某一个方向传送信息。只能沿某一个方向传送信息。 全双工全双工方式方式 若信号在通信双方之间沿两个方向同时传送,任何一若信号在通信双方之间沿两个方

4、向同时传送,任何一 方在同一时刻既能发送又能接收信息。方在同一时刻既能发送又能接收信息。 第5页/共90页 异步异步传输和传输和同步同步传输传输 在数据通信中,要保证发送的信号在接收端能在数据通信中,要保证发送的信号在接收端能 被正确地接收,必须采用同步技术。被正确地接收,必须采用同步技术。 常用的同步技术有两种方式,一种称为异步传常用的同步技术有两种方式,一种称为异步传 输也称起止同步方式,另一种称为同步传输也称同步输也称起止同步方式,另一种称为同步传输也称同步 字符同步方式。字符同步方式。 第6页/共90页 异步传输异步传输 以字符为单位进行数据传输,每个字符都用起以字符为单位进行数据传输

5、,每个字符都用起 始位、停止位包装起来,在字符间允许有长短不一的间始位、停止位包装起来,在字符间允许有长短不一的间 隙。隙。 同步传输同步传输 对数据块进行传输,一个数据块中包含着许多对数据块进行传输,一个数据块中包含着许多 连续的字符,在字符之间没有空闲。同步传输可以方便连续的字符,在字符之间没有空闲。同步传输可以方便 地实现某一通信协议要求的帧格式。地实现某一通信协议要求的帧格式。 第7页/共90页 波特率波特率(BAUD RATE) 串行通信的传送速率用于说明数据传送的快慢串行通信的传送速率用于说明数据传送的快慢 ,“波特率波特率”表示每秒种传输离散信号事件的个数,或表示每秒种传输离散信

6、号事件的个数,或 每秒信号电平的变化次数,单位为每秒信号电平的变化次数,单位为band(波特)。(波特)。“ 比特率比特率”是指每秒传送二进制数据的位数,单位为比特是指每秒传送二进制数据的位数,单位为比特 /秒,记作秒,记作bits/s或或b/s或或bps。 在二进制的情况下,波特率与比特率数值相等在二进制的情况下,波特率与比特率数值相等 。 第8页/共90页 串行通信常用的标准波特率在串行通信常用的标准波特率在RS-232C标准中已有规定,如波特率为标准中已有规定,如波特率为600、1200、2400、4800、9600、19200等等。等等。 假若数据传送速率为假若数据传送速率为120字符

7、字符/s,而每一个字符帧已规定为,而每一个字符帧已规定为10个数据位,则传输速率为个数据位,则传输速率为120101200bit/s,即波特率为,即波特率为1200,每一位数据传送的时间为波特率的倒数:,每一位数据传送的时间为波特率的倒数: T112000.833ms 第9页/共90页 串行数据通信主要有两个技术问题,一个是数据传送,另一个是数据转换。串行数据通信主要有两个技术问题,一个是数据传送,另一个是数据转换。 数据传送主要解决传送中的标准、数据帧格式及工作方式等。数据传送主要解决传送中的标准、数据帧格式及工作方式等。 数据转换要解决把数据进行串、并行的转换,这种转换通常由通用异步接收发

8、送器数据转换要解决把数据进行串、并行的转换,这种转换通常由通用异步接收发送器(UART) 电路来完成。数据发送端,要把并行数据转换为串行数据,而在数据接收端,要把串行数据转换为并行数据。电路来完成。数据发送端,要把并行数据转换为串行数据,而在数据接收端,要把串行数据转换为并行数据。 80C51中已集成有中已集成有UART。 8XC552中就增加了具有中就增加了具有I2C总线功能的串行口。总线功能的串行口。 第10页/共90页 80C51中的串行口是一个全双工的异步串行通信接口,它可作中的串行口是一个全双工的异步串行通信接口,它可作UART(通用异步接收和发送器)用,也可作同步移位寄存器用。(通

9、用异步接收和发送器)用,也可作同步移位寄存器用。 口内的接收缓冲器和发送缓冲器在物理上是隔离的。口内的接收缓冲器和发送缓冲器在物理上是隔离的。 可以通过访问特殊功能寄存器可以通过访问特殊功能寄存器SBUF,来访问接收缓冲器和发送缓冲器。接收缓冲器具有双缓冲的功能,即它在接收第一个数据字节后,能接收笫二个数据字节。但是在接收完第二个字节后,若笫一个数据字节还未取走,那么该数据字节将丢失。,来访问接收缓冲器和发送缓冲器。接收缓冲器具有双缓冲的功能,即它在接收第一个数据字节后,能接收笫二个数据字节。但是在接收完第二个字节后,若笫一个数据字节还未取走,那么该数据字节将丢失。 80C51串行口基本结构如

10、串行口基本结构如图图71所示。所示。 第11页/共90页 波特率发生器波特率发生器 由由T1、T2 及内部的一些控制开关和分频器所及内部的一些控制开关和分频器所 组成。它提供串行口的时钟信号为组成。它提供串行口的时钟信号为 TXCLOCK和和 RXCLOCK。 控制波特率发生器的特殊功能寄存器控制波特率发生器的特殊功能寄存器: TMOD、TCON、T2CON、PCON、TL1、TH1、TL2 、TH2等。等。 第12页/共90页 串行口内部串行口内部 串行数据缓冲寄存器串行数据缓冲寄存器SBUF 有接收缓冲器有接收缓冲器SBUF和发送缓冲器和发送缓冲器SBUF,占,占 用同一个地址用同一个地址

11、(99H) 。 串行口控制寄存器串行口控制寄存器SCON 第13页/共90页 串行数据输入输出引脚串行数据输入输出引脚 接收方式下,串行数据从接收方式下,串行数据从RXD引脚输入,串引脚输入,串 行口内部在接收缓冲器之前还有移位寄存器,从而构行口内部在接收缓冲器之前还有移位寄存器,从而构 成了串行接收的双缓冲结构,可以避免在数据接收过成了串行接收的双缓冲结构,可以避免在数据接收过 程中出现帧重叠错误。程中出现帧重叠错误。 在发送方式下,串行数据通过在发送方式下,串行数据通过TXD引脚输出。引脚输出。 第14页/共90页 串行口控制逻辑串行口控制逻辑 接受来自波特率发生器的时钟信号接受来自波特率

12、发生器的时钟信号 TXCLOCK和和RXCLOCK; 控制内部的输入移位寄存器将外部的串行数控制内部的输入移位寄存器将外部的串行数 据转换为并行数据;据转换为并行数据; 控制内部的输出移位寄存器将内部的并行数控制内部的输出移位寄存器将内部的并行数 据转换为串行数据输出;据转换为串行数据输出; 控制串行中断(控制串行中断(RI和和TI)。)。 第15页/共90页 串行口状态控制寄存器串行口状态控制寄存器 SCON 控制串行通信的方式选择、接收,指示串行口控制串行通信的方式选择、接收,指示串行口 的中断状态。的中断状态。 位地位地 址址 9FH 9EH 9DH9CH 9BH 9AH 99H 98H

13、 位功位功 能能 SM0SM1SM2R E N TB8 RB8 TI RI 第16页/共90页 SM0、SM1:串行口工作方式选择位。其功能见:串行口工作方式选择位。其功能见表表71。 SM2 :允许方式:允许方式2、3中的多处理机通信位。中的多处理机通信位。 方式方式0时,时,SM20。 方式方式1时,若时,若SM2l,只有接收到有效的停止位,接收中断,只有接收到有效的停止位,接收中断RI才置才置1。 方式方式2和方式和方式3时,时, SM21,则只有当接收到的第,则只有当接收到的第9位数据位数据RB8为为1时,才将接收到的前时,才将接收到的前8位数据送入缓冲器位数据送入缓冲器SBUF中,并

14、把中,并把RI置置1、同时向、同时向CPU申请中断;如果接收到的第申请中断;如果接收到的第9位数据位数据RB8为为0,RI置置0,将接收到的前,将接收到的前8位数据丢弃。位数据丢弃。 SM20时,则不论接收到的笫时,则不论接收到的笫9 9位数据是位数据是0 0或或1 1,都将前,都将前8 8位数据装入位数据装入SBUFSBUF中,并申请中断。中,并申请中断。 第17页/共90页 REN :允许串行接收位。:允许串行接收位。 REN1时,允许串行接收;时,允许串行接收;REN0时,禁止串行接收。时,禁止串行接收。 TB8 :方式:方式2和方式和方式3中要发送的第中要发送的第9位数据。位数据。 在

15、通信协议中,常规定在通信协议中,常规定TB8作为奇偶校验位。在作为奇偶校验位。在80C51多机通信中,多机通信中,TB8=0用来表示数据帧;用来表示数据帧;TB8=1表示是地址帧。表示是地址帧。 RB8 :方式:方式2和方式和方式3中接收到的第中接收到的第9位数据。位数据。 方式方式1中接收到的是停止位。方式中接收到的是停止位。方式0中不使用这一位。中不使用这一位。 第18页/共90页 TI :发送中断标志位。:发送中断标志位。 方式方式 0中,在发送第中,在发送第 8位末尾置位;在其它方位末尾置位;在其它方 式时,在发送停止位开始时设置。式时,在发送停止位开始时设置。 由硬件置位,用软件清除

16、。由硬件置位,用软件清除。 RI : 接收中断标志位。接收中断标志位。 方式方式 0中,在接收第中,在接收第 8位末尾置位;在其它方位末尾置位;在其它方 式时,在接收停止位中间设置。式时,在接收停止位中间设置。 由硬件置位,用软件清除。由硬件置位,用软件清除。 第19页/共90页 电源控制及波特率选择寄存器电源控制及波特率选择寄存器 PCON 最高位最高位SMOD与串行口控制有关,其它位与低与串行口控制有关,其它位与低 功耗工作方式有关。功耗工作方式有关。 D7 D6 D5 D4 D3 D2 D1 D0 S M O D WLF GF1 GF0 PD IDL SMOD:串行通信波特率系数控制位。

17、:串行通信波特率系数控制位。 当当SMOD1时,使波特率加倍。时,使波特率加倍。 复位后,复位后,SMOD0。 第20页/共90页 串行数据寄存器串行数据寄存器SBUF 包含在物理上是隔离的两个包含在物理上是隔离的两个8位寄存器:发送位寄存器:发送 数据寄存器和接收数据寄存器,它们共用一个地址数据寄存器和接收数据寄存器,它们共用一个地址99H 。 D7 D6 D5 D4 D3 D2 D1 D0 SD7 SD6 SD5 SD4 SD3 SD2 SD1 SD0 读读SBUF(MOVA,SBUF),则访问接收),则访问接收 数据寄存器;数据寄存器; 写写SBUF(MOV SBUF,A),则访问发送)

18、,则访问发送 数据寄存器。数据寄存器。 第21页/共90页 在串行口控制寄存器在串行口控制寄存器SCON中,中,SM0和和SM1位位 决定串行口的工作方式。决定串行口的工作方式。80C51串行口共有串行口共有4 4种工作方种工作方 式。式。 第22页/共90页 SM00、SM10。同步移位寄器方式。同步移位寄器方式。 数据传输波特率固定为(数据传输波特率固定为(112)fosc。 由由RXD引脚输入或输出数据,引脚输入或输出数据, 由由TXD引脚输出同步移位时钟。引脚输出同步移位时钟。 接收发送的是接收发送的是8位数据,传输时低位在前。位数据,传输时低位在前。 帧格式如帧格式如图图72所示。所

19、示。 方式方式0 0时工作原理图的如时工作原理图的如图图73所示。所示。 第23页/共90页 发送发送 当执行任何一条写当执行任何一条写SBUF的指令(的指令(MOV SBUF,A)时,就启动串行数据的发送。)时,就启动串行数据的发送。 在执行写入在执行写入SBUF的指令时,选通内部的指令时,选通内部D触发器置触发器置1 ,构成发送移位寄存器的第,构成发送移位寄存器的第9位,位,并使发送控制器开始发送。当发送脉冲有效之后,移位寄存器的内容由并使发送控制器开始发送。当发送脉冲有效之后,移位寄存器的内容由RXD引脚串行移位输出;移位脉冲由引脚串行移位输出;移位脉冲由TXD引脚输出。引脚输出。 在发

20、送有效的期间,每个机器周期,发送移位寄存器右移一位,在其左边补在发送有效的期间,每个机器周期,发送移位寄存器右移一位,在其左边补0。当数据最高位移到移位寄存器的输出位时,原写入第。当数据最高位移到移位寄存器的输出位时,原写入第9位的位的 l正好移到最高位的左边一位,由此向左的所有位均为正好移到最高位的左边一位,由此向左的所有位均为 0,零检测器通知发送控制器要进行最后一次移位,并撤销发送有效,同时使发送中断标志,零检测器通知发送控制器要进行最后一次移位,并撤销发送有效,同时使发送中断标志TI置位,若置位,若CPU响应中断,则执行从响应中断,则执行从0023H开始的串行口发送中断服务程序。开始的

21、串行口发送中断服务程序。 第24页/共90页 接收接收 当当REN1 且且RI位清除时,就会启动一次接收过程。位清除时,就会启动一次接收过程。 在下一机器周期的在下一机器周期的S6P2时刻,接收控制器将时刻,接收控制器将1111 1110写入接收移位寄存器,并在下一时钟周期写入接收移位寄存器,并在下一时钟周期S1P1使接收控制器的接收有效,打开使接收控制器的接收有效,打开“与非门与非门” ,同时由,同时由TXD引脚输出移位脉冲。在移位脉冲控制下,接收移位寄存器的内容每一个机器周期左移一位,同时由引脚输出移位脉冲。在移位脉冲控制下,接收移位寄存器的内容每一个机器周期左移一位,同时由RXD引脚接收

22、一位输入信号。引脚接收一位输入信号。 每当接收移位寄存器左移一位,原写入的每当接收移位寄存器左移一位,原写入的1111 1110也左移一位。当最右边的也左移一位。当最右边的0移到最左边时,标志着接收控制器要进行最后一次移位。在最后一次移位即将结束时,接收移位寄存器的内容送入接收数据缓冲寄存器移到最左边时,标志着接收控制器要进行最后一次移位。在最后一次移位即将结束时,接收移位寄存器的内容送入接收数据缓冲寄存器SBUF,然后在启动接收的第,然后在启动接收的第10个机器周期的个机器周期的S1P1时,清除接收信号,置位时,清除接收信号,置位SCON中的中的RI,发出中断申请。完成一帧数据的接收过程。若

23、,发出中断申请。完成一帧数据的接收过程。若CPU响应中断,则执行从响应中断,则执行从0023H开始的串行口接收中断服务程序开始的串行口接收中断服务程序 第25页/共90页 SM00、SM1l。 数据传输波特率由数据传输波特率由T1和和T2的溢出决定,可用的溢出决定,可用 程序设定。当程序设定。当T2CON寄存器中的寄存器中的RCLK和和TCLK置位置位 时,采用时,采用T2作为串行口接收和发送的波特率发生器。作为串行口接收和发送的波特率发生器。 而当而当RCLK和和TCLK都为零时,采用都为零时,采用T1作为串行口接收作为串行口接收 和发送的波特率发生器。和发送的波特率发生器。 由由 TXD引

24、脚发送数据。引脚发送数据。 由由 RXD引脚接收数据。引脚接收数据。 第26页/共90页 发送或接收一帧信息为发送或接收一帧信息为10位:位:1位起始位(位起始位(0)、)、 8位数据位位数据位(低位在前低位在前)和和l位停止位(位停止位(1)。)。 帧格式如帧格式如图图74所示。所示。 第27页/共90页 发送:方式发送:方式1时,发送的工作原理图如时,发送的工作原理图如图图75所示。所示。 当执行任何一条写当执行任何一条写 SBUF的指令时,就启动串行数据的发送。在执行写入的指令时,就启动串行数据的发送。在执行写入SBUF的指令时,也将的指令时,也将1写入发送移位寄存器的第写入发送移位寄存

25、器的第9位位(由由SBUF和和1个独立的个独立的D触发器构成触发器构成),并通知发送控制器有发送请求。,并通知发送控制器有发送请求。 第28页/共90页 开始发送后的一个位周期,发送信号有效,开始将起始位送开始发送后的一个位周期,发送信号有效,开始将起始位送TXD引脚。一位时间后,数据信号有效。发送移位寄存器将数据由低位到高位顺序输出至引脚。一位时间后,数据信号有效。发送移位寄存器将数据由低位到高位顺序输出至TXD引脚。一位时间后,第一个移位脉冲出现将最低数据位从右边移出,同时引脚。一位时间后,第一个移位脉冲出现将最低数据位从右边移出,同时0从左边挤入。当最高数据位移至发送移位寄存器的出端时,

26、先前装入的第从左边挤入。当最高数据位移至发送移位寄存器的出端时,先前装入的第9位的位的l,正好在最高数据位的左边,而它的右边全部为,正好在最高数据位的左边,而它的右边全部为0。这种状态被零检测器检测到,在第。这种状态被零检测器检测到,在第10个位周期(个位周期(16分频计数器回分频计数器回0时),发送控制器进行最后一次移位,清除发送信号,同时使时),发送控制器进行最后一次移位,清除发送信号,同时使SCON寄存器中寄存器中TI置位,完成了一帧数据发送的全过程。置位,完成了一帧数据发送的全过程。 若若CPU响应中断,则执行从响应中断,则执行从0023H开始的串行口发送中断服务程序。开始的串行口发送

27、中断服务程序。 第29页/共90页 接收接收 方式方式1时,接收的工作原理图如时,接收的工作原理图如图图76所示。所示。 当当REN1且清除且清除RI后,若在后,若在RXD引脚上检测到一个引脚上检测到一个1到到0的跳变,立即启动一次接收。同时,复位的跳变,立即启动一次接收。同时,复位16分频计数器,使输入位的边沿与时钟对齐,并将分频计数器,使输入位的边沿与时钟对齐,并将1FFH(即(即9个个l)写入接收移位寄存器。接收控制器以波特率的)写入接收移位寄存器。接收控制器以波特率的16倍的速率继续对倍的速率继续对RXD引脚进行检测,引脚进行检测, 计数器的计数器的16个状态把每一位的时间分为个状态把

28、每一位的时间分为16份,对每一位时间的第份,对每一位时间的第7、8、9个计数状态,位检测器对个计数状态,位检测器对RXD端的值采样,这端的值采样,这3 3个状态理论上对应于每一位的中央值。若发送端与接收端的波特率有差异,就会发生偏移,只要这种差异在允许范围内,就不至于发生错位或漏码。在上述个状态理论上对应于每一位的中央值。若发送端与接收端的波特率有差异,就会发生偏移,只要这种差异在允许范围内,就不至于发生错位或漏码。在上述3 3个状态下,取得个状态下,取得3 3个采样值,其中至少有两个值是一致的,即采用个采样值,其中至少有两个值是一致的,即采用3取取2的多数表决法,可抑制噪声。的多数表决法,可

29、抑制噪声。 第30页/共90页 如果在第如果在第1个时钟周期中接收到的不是个时钟周期中接收到的不是0,说明它不是一帧数据的起始位,则复位接收电路,继续检测,说明它不是一帧数据的起始位,则复位接收电路,继续检测RXD引脚上引脚上l到到0的跳变。如果接收到的是起始位,就将其移入接收移位寄存器,然后接收该帧的其它位。接收到的位从右边移入,原来写入的的跳变。如果接收到的是起始位,就将其移入接收移位寄存器,然后接收该帧的其它位。接收到的位从右边移入,原来写入的1,从左边移出,当起始位移到最左边时,接收控制器将控制进行最后一次移位,把接收到的,从左边移出,当起始位移到最左边时,接收控制器将控制进行最后一次

30、移位,把接收到的9位数据送入接收数据缓冲器位数据送入接收数据缓冲器SBUF和和RB8,而且置位,而且置位RI。 在进行最后一次移位时,能将数据送入接收数据缓冲器在进行最后一次移位时,能将数据送入接收数据缓冲器SBUF和和RB8,而且置位,而且置位RI的条件是:的条件是: RI0 即上一帧数据接收完成时发出的中断请求已被响应,即上一帧数据接收完成时发出的中断请求已被响应,SBUF中数据已被取走。中数据已被取走。 SM20或接收到的停止位或接收到的停止位1。 若以上两个条件中有一个不满足,将不可恢复地丢失接收到的这一帧信息。若以上两个条件中有一个不满足,将不可恢复地丢失接收到的这一帧信息。 第31

31、页/共90页 SM01、SM10,选择方式,选择方式2; SM11、SM01,选择方式,选择方式3。 由由TXD引脚发送数据。引脚发送数据。 由由RXD引脚接收数据。引脚接收数据。 发送或接收一帧信息为发送或接收一帧信息为11位:位:1位起始位(位起始位(0) 、8位数据位位数据位(低位在前低位在前) 、1位可编程位和位可编程位和1位停止位(位停止位(l )。发送时可编程位)。发送时可编程位TB8可设置为可设置为1或或0,接收时可编程,接收时可编程 位进入位进入SCON寄存器的寄存器的RB8位。位。 方式方式2的波特率是固定的,为振荡器频率的的波特率是固定的,为振荡器频率的1/32或或1/64

32、 。. .方式方式3的波特率则由的波特率则由T1和和T2的溢出决定,可用程序的溢出决定,可用程序 设定。设定。 第32页/共90页 帧格式如帧格式如如如图图 7-7所示。所示。 方式方式 2时的工作原理图如时的工作原理图如图图 7-8所示。所示。 第33页/共90页 在进行最后一次移位时,能将数据送入接收数据缓冲器在进行最后一次移位时,能将数据送入接收数据缓冲器SBUF和和RB8,而且置位,而且置位RI的条件是:的条件是: RI0; SM20或接收到的停止位或接收到的停止位1。 若以上两个条件中有一个不满足,将不可恢复地丢失接收到的这一帧信息。若以上两个条件中有一个不满足,将不可恢复地丢失接收

33、到的这一帧信息。 第34页/共90页 SM2:多处理机通信位。:多处理机通信位。 当串行口以方式当串行口以方式2或方式或方式3接收时,若接收时,若SM21,只有当接收到的第,只有当接收到的第9位数据位数据RB8为为1时,才将数据送入接收缓冲器时,才将数据送入接收缓冲器SBUF,并使,并使RI置置1,申请中断,否则数据将丢失;若,申请中断,否则数据将丢失;若SM20,则无论第,则无论第9位数据位数据RB8是是1还是还是0,都能将数据装入,都能将数据装入SBUF,并且发中断。,并且发中断。 利用这一特性,便可实现主机与多个从机之间的串行通信。利用这一特性,便可实现主机与多个从机之间的串行通信。图图

34、79为多机通信连线示意图,系统中左边的为多机通信连线示意图,系统中左边的80C51为主机,其余的为为主机,其余的为1n号从机,并保证每台从机在系统中的编号是惟一的。号从机,并保证每台从机在系统中的编号是惟一的。 第35页/共90页 系统初始化时,将所有从机中的系统初始化时,将所有从机中的SM2位均设置为位均设置为1,并处于允许串行口中断接收状态。,并处于允许串行口中断接收状态。 主机欲与某从机通信,先向所有从机发出所选从机的地址,从机地址符合后,接着才发送命令或数据。主机欲与某从机通信,先向所有从机发出所选从机的地址,从机地址符合后,接着才发送命令或数据。 在主机发地址时,置第在主机发地址时,

35、置第9位数据(位数据(RB8)为)为1,表示主机发送的是地址帧;,表示主机发送的是地址帧; 当主机呼叫某从机联络正确后,主机发送命令或数据帧时,将第当主机呼叫某从机联络正确后,主机发送命令或数据帧时,将第9位数据(位数据(RB8)清)清0。 第36页/共90页 各从机由于各从机由于SM2置置1,将响应主机发来的第,将响应主机发来的第9位数据(位数据(RB8)为)为1的地址信息。从机响应中断后,有两种不同的操作:的地址信息。从机响应中断后,有两种不同的操作: 若从若从机的地址与主机点名的地址不相同,则该从机将继续维持机的地址与主机点名的地址不相同,则该从机将继续维持SM2为为l,从而拒绝接收主机

36、后面发来的命令或数据信息,等待主机的下一次点名。,从而拒绝接收主机后面发来的命令或数据信息,等待主机的下一次点名。 若从机的地址与主机点名的地址相同,该从机将本机的若从机的地址与主机点名的地址相同,该从机将本机的SM2清清0,继续接收主机发来的命令或数据,响应中断。,继续接收主机发来的命令或数据,响应中断。 第37页/共90页 串行口的波特率发生器如串行口的波特率发生器如图图7-10所示。所示。 方式方式0时的波特率由振荡器的频率(时的波特率由振荡器的频率(fosc)所确定:波特率为)所确定:波特率为fosc/12。 方式方式2时的波特率由振荡器的频率(时的波特率由振荡器的频率(fosc)和)

37、和SMOD位确定:位确定: 当当SMOD位位1时,波特率时,波特率fosc/32;当;当SMOD0时,波特率时,波特率fosc/64。 方式方式1和和3时的波特率由定时器时的波特率由定时器T1和和T2的溢出率和的溢出率和SMOD确定。确定。 第38页/共90页 (1)用定时器)用定时器T1(0)产生波特率)产生波特率 定时器定时器T1工作于方式工作于方式0: T1为为13位计数器。位计数器。 式中:式中:TC13位计数器初值;位计数器初值; X中断服务程序的机器周期数,在中断服务程序中重新对定时器置数。中断服务程序的机器周期数,在中断服务程序中重新对定时器置数。 第39页/共90页 定时器定时

38、器T1工作于方式工作于方式1: T1为为16位的计数器。位的计数器。 式中:式中:TC16位计数器初值;位计数器初值; X中断服务程序的机器周期数,在中断服务程序中重新对定时器置数。中断服务程序的机器周期数,在中断服务程序中重新对定时器置数。 定时器定时器Tl工作于方式工作于方式2: T1为为8位可重装的方式,用位可重装的方式,用TL1计数,用计数,用TH1装初值。装初值。 第40页/共90页 例:例: 使用使用74LS164的并行输出端接的并行输出端接8只发光二只发光二 极管,利用它的串入并出功能,把发光二极管从左向极管,利用它的串入并出功能,把发光二极管从左向 右依次点亮,并不断循环之。右

39、依次点亮,并不断循环之。发光二极管扩展连接路发光二极管扩展连接路 如如图图7-11所示所示。 第41页/共90页 MOVSCON,#00H;设串行口为方式;设串行口为方式0,CLRES ;禁止串行口中断;禁止串行口中断 MOVA,#80H;先显示最左边发光二极管;先显示最左边发光二极管 LED:MOVSBUF,A;串行输出;串行输出 JNBTI,$;输出等待;输出等待 CLRTI ;软件清中断标志;软件清中断标志 ACALLDELAY;轮显间隔;轮显间隔 RRA;发光右移;发光右移 AJMPLED;循环;循环 DELAY:;延时子程序;延时子程序 RET 第42页/共90页 例:试编写双机通信

40、程序。甲、乙双机均为串行口方式例:试编写双机通信程序。甲、乙双机均为串行口方式1,并以定时器,并以定时器T1的方式的方式2为波特率发生器,波特率为为波特率发生器,波特率为2400。 波特率的计算:这里使用波特率的计算:这里使用6MHz晶振,以晶振,以T1的方式的方式2制定波特率。制定波特率。 计算定时器计算定时器T1的计数初值:的计数初值: 波特率波特率= 2smod = 2smod fosc fosc 1 1 32 1232 12 2 28 8 TH1TH1 TH1=2TH1=28 8(2(2SMODSMODf fosc)osc)( (波特率波特率323212)12) =256 =256(2

41、(20 06 610106 6) )(2400(2400323212)12) =256 =2566.5=249.5=FAH6.5=249.5=FAH 第43页/共90页 甲机发送:甲机发送: 将以片内将以片内RAM的的78H及及77H的内容为首地址、以的内容为首地址、以76H及及75H的内容减的内容减1为末地址的数据块内容,通过串行口传至乙机。为末地址的数据块内容,通过串行口传至乙机。 例:例:(78H) 20H;首地址高位;首地址高位 (77H)00H (76H)20H;末地址高位;末地址高位 (75H)20H 即要求程序将片外即要求程序将片外RAM的的2000H20lFH中的内容输出到串行

42、口。对数据块首、末地址的传送以查询方式进行,而数据的传送以中断方式进行。中的内容输出到串行口。对数据块首、末地址的传送以查询方式进行,而数据的传送以中断方式进行。 第44页/共90页 ORG0000H SJMPTRANS ORG 0023H ;串行口中断入口;串行口中断入口 AJMP SINT ORG0030H TRANS:MOV TMOD,20H;置;置T1为定时器方式为定时器方式2 MOVTL1,0FAH ;置;置T1定时常数定时常数(波特率为波特率为 ;2400) MOV TH1,0FAH SETB EA ;允许中断;允许中断 CLR ES ;关串行口中断;关串行口中断 第45页/共90

43、页 MOVPCON,#00H;波特率不倍增;波特率不倍增 CLR TI ;清发送中断;清发送中断 MOV SCON,40H ;置串行口方式;置串行口方式1 MOV SBUF,78H ;输出首地址;输出首地址 WAIT1:JNB TI,WAITI ;查询等待发送结束;查询等待发送结束 CLR TI MOVSBUF,77H WAIT2:JNB TI,WAIT2 ;查询等待发送结束;查询等待发送结束 CLR TI 第46页/共90页 MOV SBUF,76H ;输出末地址;输出末地址 WAIT3:JNB TI,WAIT3 CLR TI MOV SBUF,75H WAIT4:JNB TI,WAIT4

44、CLR TI SETB ES ;允许串行口中断;允许串行口中断 第47页/共90页 MOV DPH,78H;输出数据块中第;输出数据块中第1个数据个数据 MOV DPL,77H MOVX A,DPTR CLR TI MOV SBUF,A SJMP$;中断等待;中断等待 第48页/共90页 ORG0200H;串行口中断服务程序;串行口中断服务程序 SINT:PUSH DPL ;保护现场;保护现场 PUSH DPH PUSH A INC77H;地址加;地址加1 MOVA,77H JNZJP1 INC78H 第49页/共90页 JP1:MOV A,78H CJNE A,76H,END1 ;判数据传送

45、是否结束,未;判数据传送是否结束,未 ;结束则转;结束则转END1 MOV A,77H CJNE A,75H,END1 CLR ES ;结束,关串行口中断;结束,关串行口中断 第50页/共90页 ESCOM:POP A;恢复现场;恢复现场 POP DPH POP DPL RETI END1:MOV DPH,78H;数据输出未结束,则继续发送;数据输出未结束,则继续发送 MOV DPL,77H MOVX A,DPTR CLR TI MOV SBUF,A RETI 第51页/共90页 乙机接收乙机接收 乙机通过乙机通过RXD引脚接收甲机发来的数据,接收波特率与甲机一样。接收的第引脚接收甲机发来的数

46、据,接收波特率与甲机一样。接收的第1、2 2字节是数据块的首地址,第字节是数据块的首地址,第3 3、4 4字节是数据块的末地址减字节是数据块的末地址减1,第,第5 5字节开始是数据,接收到的数据依次存入数据块首地址开始的存储器中。字节开始是数据,接收到的数据依次存入数据块首地址开始的存储器中。 ORG0000H SJMPRECEIVE;乙机接收;乙机接收 ORG0023H AJMPRSINT;串行口中断入口;串行口中断入口 第52页/共90页 ORG0030H RECEIVE:MOV TMOD,#20H;设;设T1T1为定时器方式为定时器方式2 2 MOVTL1,0FAH ;置;置T1定时常数

47、定时常数 MOV TH1,0FAH SETB EA ;允许中断;允许中断 SETB ES ;允许串行口中断;允许串行口中断 CLR TI ;清发送中断;清发送中断 MOV SCON,50H ;置串行口方式;置串行口方式1、接收、接收 CLR 20H ;置地址标志;置地址标志(20H0,为,为 ;地址;地址;20H1,为数据,为数据) 第53页/共90页 MOV 70H,78H SJMP$;中断等待;中断等待 ORG0200H RSINT:PUSH DPL ;保护现场;保护现场 PUSH DPH PUSH ACC MOV A,R0 PUSH ACC JB 20H,DATA ;判别接收的是地址还是

48、数据,;判别接收的是地址还是数据, ;是数据,转移;是数据,转移 第54页/共90页 MOV R0,70H ;是地址,分别送入;是地址,分别送入78H75H中去中去 MOV A,SBUF MOV R0,A DEC 70H CLR RI MOV A, 74H CJNE A,70H,RETURN ;是地址,转结束;是地址,转结束 SETB 20H;地址已接收完,置接收数据标志;地址已接收完,置接收数据标志 第55页/共90页 RETURN:POP ACC ;恢复现场;恢复现场 MOV R0,A POP ACC POP DPH POP DPL RETI DATA:MOV DPH,78H;接收数据;接

49、收数据 MOV DPL,77H 第56页/共90页 MOV A,SBUF MOVX DPTR,A ;将数据送入片外;将数据送入片外RAM CLR RI INC 77H ;地址加;地址加 1 MOV A,77H JNZ DATA1 INC 78H 第57页/共90页 DATA1 MOV A,76H CJNZ A,78H,RETURN MOVA,75H CJNE A,77H,RETURN CLR ES ;结束,关串行口中断;结束,关串行口中断 AJMP RETURN 第58页/共90页 ASCII码由码由7位组成,其最高位可作为奇偶校验位用。数据块通过串行口发送和接收,采用位组成,其最高位可作为奇

50、偶校验位用。数据块通过串行口发送和接收,采用8位异步通信,波特率为位异步通信,波特率为1200,已知,已知fosc11.0592MHz。 从内部从内部RAM单元单元20H3FH中取出中取出ASCII码加上奇偶校验位之后发出。设串行口为方式码加上奇偶校验位之后发出。设串行口为方式1,T1为方式为方式2作为串行口的波特率发生器。作为串行口的波特率发生器。 SMOD0TH1232E8H 第59页/共90页 ORG0000H MOVTMOD,#20H;设;设T1为方式为方式2 MOVTL1,#0E8H;T1定时常数定时常数 MOVTH1,#0E8H MOVSCON,#01000000B;设串行口为方式

51、;设串行口为方式1 MOVR0,#20H;设发送数据区首址;设发送数据区首址 MOVR7,#32;发送;发送32个个ASCII码数据码数据 第60页/共90页 LOOP:MOV A,R0;取;取ASCII码数据码数据 ACALLSP-OUT;调用串行口发送子程序;调用串行口发送子程序 INCR0;未发送完,则继续;未发送完,则继续 DJNZR7,LOOP 第61页/共90页 串行口发送子程序串行口发送子程序 SP-OUT:MOV C,P;设奇校验位;设奇校验位CPLC MOVACC.7,C MOVSBUF,A;带校验位发送;带校验位发送 JNBTI,$;发送等待;发送等待 CLRTI RET

52、第62页/共90页 把接收到的把接收到的32个字节数据存放到个字节数据存放到20H3FH中,波特率为中,波特率为1200,若奇校验出错,将进位标志,若奇校验出错,将进位标志C置置1 。 ORG0000H MOVTMOD,#20H;设;设T1为定时器方式为定时器方式2 MOVTL1,#0E8H ;设;设T1时间常数时间常数 MOVTH1,#0E8H MOVR0,#20H;接收缓冲区首址;接收缓冲区首址 MOVR7,#32;接收字节计数器;接收字节计数器 第63页/共90页 LOOP:ACALLSP-IN;调用带奇校验的串行口接;调用带奇校验的串行口接 ; 收子程序收子程序 JCERROR;校验错

53、,转出错处理;校验错,转出错处理 MOVR0,A;存入;存入 INCR0 DJNZR7,LOOP;未接收完,则继续;未接收完,则继续 ERROR:;校验错,处理;校验错,处理 第64页/共90页 SP-IN:MOV SCON,#01010000B;设串行口为方式;设串行口为方式; 1,启动接收,启动接收 JNBRI,$ CLRRI MOV A,SBUF;接收一个字节;接收一个字节 MOV C,P;检查奇校验位,若出错,;检查奇校验位,若出错,C=1 CPLC ANLA,#7FH;去掉校验位后的;去掉校验位后的ASCII码数据码数据 RET 第65页/共90页 方式方式2接收发送的一帧信息是接收

54、发送的一帧信息是11位:第位:第0位位 是起始位(是起始位(0);第);第18位是数据位;第位是数据位;第9位是程控位位是程控位 ,可由用户置,可由用户置TB8决定;第决定;第10位是停止位。位是停止位。 方式方式2的波特率为:的波特率为: 波特率振荡器频率波特率振荡器频率/n 其中:当其中:当 SMOD0时,时,n64 ; 当当 SMODl时,时,n32。 方式方式2和方式和方式3基本一样,仅波特率设置不同。基本一样,仅波特率设置不同。 第66页/共90页 工作方式工作方式2发送的一帧信息为发送的一帧信息为11位:位:1位起始位,位起始位,8位数位数 据位,据位,1位可编程为位可编程为1或或

55、0的第的第9位(可用作奇偶校验位位(可用作奇偶校验位 或数据地址标志位)和或数据地址标志位)和1位停止位。位停止位。 奇偶校验位的发送是在将发送数据写入发送缓冲器奇偶校验位的发送是在将发送数据写入发送缓冲器 SBUF之前,先将奇偶标志写入之前,先将奇偶标志写入SCON的的TB8位。位。 第67页/共90页 ORG0023H AJMPSPINT SPINT:CLR EA;关中断;关中断 PUSH PSW ;保护现场;保护现场 PUSH ACC SETB EA ;开中断;开中断 SETB PSW.4 ;切换寄存器工作组;切换寄存器工作组 CLR TI ;清除发送中断请求标志;清除发送中断请求标志 MOV A,R0 ;取数据,置奇偶标志位;取数据,置奇偶标志位 第68页/共90页 MOV C,P ;奇偶标志位;奇偶标志位P送送TB8 MOV TB8,C MOV SBUF,A;数据写入发送缓冲器,启动发送;数据写入发送缓冲器,启动发送 INC R0;数据地址指针加;数据地址指针加1 CLR 0AFH;恢复现场;恢复现场 POP ACC POP PSW SETB 0AFH CLR PSW .4 ;切换寄存器工作组;切换寄存器工作组 RETI ;中断

温馨提示

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

评论

0/150

提交评论