大三上学习单片机串讲第7章总_第1页
大三上学习单片机串讲第7章总_第2页
大三上学习单片机串讲第7章总_第3页
大三上学习单片机串讲第7章总_第4页
大三上学习单片机串讲第7章总_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

25二月20231第七章89C51/S51串行口及串行通信技术7.1串行通信基本知识7.2串行口及应用7.3RS-232C标准接口总线及串行通信硬件设计7.489C51/S51与89C51/S51点对点异步通信7.589C51/S51与PC机间通信软件的设计7.6PC机与多个单片机间的通信7.7思考题与习题25二月202327.1.3异步通信和同步通信串行通信有两种基本通信方式,即异步通信和同步通信。1、异步通信在异步通信中,数据是一帧一帧(包括一个字符代码或一字节数据)传送的,每一帧的数据格式如图7-3所示图7-3异步通信数据格式25二月202341、异步通信在帧格式中,一个字符由四个部分组成:起始位、数据位、奇偶校验位和停止位。首先是一个起始为(0),然后是5位--8位数据(规定低位在前,高位在后),接下来是奇偶校验位(可省略),最后是停止位(1)。25二月202351、异步通信

起始位(0)信号只占用一位,用来通知接收设备一个待接收的字符开始到达。线路上在不传送字符时应保持为1。接收端不断检测线路的状态,若连续为1以后又测到一个0,就知道发来一个新字符,应马上准备接收。字符的起始位还被用作同步接收端的时钟,以保证以后的接收能正确进行。起始位后面紧接着是数据位,它可以是5位(D0--D4)、6位、7位或8位(D0--D7)。奇偶校验(D8)只占一位,但在字符中也可以规定不用奇偶校验位,则这一位就可省去。也可用这一位(1/0)来确定这一帧中的字符所代表信息的性质(地址/数据等)。停止位用来表征字符的结束,它一定是高电位(逻辑1)。停止位可以是1位、1.5位或2位。接收端收到停止位后,知道上一字符已传送完毕,同时,也为接收下一个字符做好准备--只要再接收到0,就是新的字符的起始位。若停止位以后不是紧接着传送下一个字符,则使线路电平保持为高电平(逻辑1)。25二月202363、波特率(Baudrate)波特率,即数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是b/s。波特率对于CPU与外界的通信是很重要的。假设数据传送速率是120字符/s,而每个字符格式包含1个代码位(1个起始位、1个终止位、8个数据位)。这时,传送的波特率为:

10b/字符×120字符/s=1200b/s25二月202373、波特率(Baudrate)每一位代码的传送时间Td为波特率的倒数。

Td=1b/(1200bs-1)=0.833ms异步通信的传送速率在50b/s--19200b/s之间,常用于计算机到终端机和打印机之间的通信、直通电报以及无线电通信的数据发送等。25二月202387.1.4串行通信的过程及通信协议1、串←→并转换与设备同步两个通信设备在串行线路上成功地实现通信必须解决两个问题:

一是串←→并转换,即如何把要发送的并行数据串行化,把接收的串行数据并行化;

二是设备同步,即同步发送设备与接收设备的工作节拍,以确保发送数据在接收端被正确读出。25二月20239(2)设备同步进行串行通信的两台设备必须同步工作才能有效地检测通信线路上的信号变化,从而采样传送数据脉冲。设备同步对通信双方有两个共同要求:一是通信双方必须采用统一的编码方法;二是通信双方必须能产生相同的传送速率。25二月202310(2)设备同步采用统一的编码方法确定了一个字符二进制表示值的位发送顺序和位串长度,当然还包括统一的逻辑电平规定,即电平信号高低与逻辑1和逻辑0的固定对应关系。通信双方只有产生相同的传送速率,才能确保设备同步,这就要求发送设备和接收设备采用相同频率的时钟。发送设备在统一的时钟脉冲上发出数据,接收设备才能正确检测出与时钟脉冲同步的数据信息。25二月2023112、串行通信协议

通信协议是对数据传送方式的规定,包括数据格式定义和数据位定义等。通信双方必须遵守统一的通信协议。串行通信协议包括同步协议和异步协议两种。在此只讨论异步串行通信协议和异步串性协议规定的字符数据的传送格式。25二月2023122、串行通信协议(1)起始位通信线上没有数据被传送时处于逻辑1状态。当发送设备要发送一个字符数据时,首先发出一个逻辑0信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。起始位所起的作用就是设备同步,通信双方必须在传送数据位前协调同步。25二月2023132、串行通信协议(2)数据位

当接收设备收到起始位后,紧接着就会收到数据位。数据位的个数可以是5、6、7或8。IBM-PC中经常采用7位或8位数据传送,89C51/S51串行口采用8位或9位数据传送。这些数据位被接收到移位寄存器中,构成传送数据字符。在字符数据传送过程中,数据位从最低有效位开始发送,依次顺序在接收设备中被转换为并行数据。25二月2023142、串行通信协议(3)奇偶校验位

数据位发送完之后,可以发送奇偶校验位。奇偶校验用于有限差错检测,通信双方需约定已知的奇偶校验方式。如果选择偶校验,那么组成数据位和奇偶位的逻辑1的个数必须是偶数;如果选择奇校验,那么逻辑1的个数必须是奇数。25二月2023152、串行通信协议(4)停止位约定

在奇偶位或数据位(当无奇偶校验时)之后发送的是停止位。停止位是一个字符数据的结束标志,可以是1位,1.5位或2位的高电平。接收设备收到停止位之后,通信线路上便又恢复逻辑1状态,直至下一个字符数据的起始位到来。25二月2023162、串行通信协议(5)波特率设置

通信线上传送的所有位信号都保持一致的信号持续时间,每一位的信号持续时间都由数据传送速度确定,而传送速度是以每秒多少个二进制位来衡量的,这个速度叫波特率。如果数据以300个二进制位每秒在通信线上传送,那么传送速度为300波特,通常记为300b/s。25二月2023177.2串行口及应用7.2.189C51/S51串行口7.2.289C51/S51串行口的工作方式及应用25二月2023187.2.189C51/S51串行口1、结构2、串行口控制字及控制寄存器3、串行通信工作方式4、波特率设计25二月2023191、结构

89C51/S51通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界进行通信。其内部结构简化示意图如图7-7所示。图中有两个物理独立的接收、发送缓冲器SBUF,它们占用同一低值99H,可同时发送、接收数据。发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。串行发送与接收的速率与移位时钟同步。89C51/S51用定时器T1作为串行通信的波特率发生器,T1溢出率经2分频(或不分频)后又经16分频作为串行发送或接收的移位脉冲。移位脉冲的速率即是波特率。图7-7串行口内部结构示意简图25二月2023211、结构从图中可看出,接收器是双缓冲结构,在前一个字节被从接收缓冲器SBUF读出之前,第二个字节即开始被接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前一个字节CPU未读取时,会丢失前一个字节。串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的。当向SBUF发“写”命令时(执行“MOVSBUF,A”指令),即是向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。在满足串行口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)=1就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1。当发读SBUF命令时(执行“MOVA,SBUF”命令),便由接收缓冲器(SBUF)取出信息通过89C51/S51内部总线送CPU。

对于发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误,一般不需要用双缓冲器结构来保持最大传送速率。25二月2023222、串行口控制字及控制寄存器

89C51/S51串行口是可编程接口,对它初始化编程只用两个控制字分别写入特殊功能寄存器SCON(98H)和电源控制寄存器PCON(87H)中即可。(1)SCON(98H)

89C51/S51串行通信的方式选择、接收和发送控制以及串行口的状态标志等均由特殊功能寄存器SCON控制和指示,其控制字格式如图7-8所示。图7-8串行口控制寄存器SCON25二月2023242、串行口控制字及控制寄存器①SM0和SM1(SCON.7,SCON.6)——串行口工作方式选择位。两个选择位对应4种通信方式,如表7-1所示。其中,fosc是振荡频率。25二月2023252、串行口控制字及控制寄存器②SM2(SCON.5)——多机通信控制位,主要用于方式2和方式3。

若置SM2=1,则允许多机通信。当一片89C51/S51(主机)与多片89C51/S51(从机)通信时,所有从机的SM2位都置1。主机首先发送的一帧数据为地址,即从机机号,其中第9位为1,所有的从机接收到数据后,将其中第9位装入RB8中。各个从机根据收到的第9位数据(RB8中)的值来决定从机可否再接收主机的信息。若(RB8)=0,说明是数据帧,则使接收中断标志位RI=0,信息丢失;若(RB8)=1,说明是地址帧,数据装入SBUF并置RI=1,中断所有从机,被寻址的目标从机清除SM2以接收主机发来的一帧数据。其他从机仍然保持SM2=1。若SM2=0,即不属于多机通信情况,则接收一贞数据后,不管第九位数据是0还是1,都制RI=1,接收到的数据装入SBUF。根据SM2这个功能,可实现多个89C51/S51应用系统的串行通信。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才制1,以便接收下一贞数据。在方式0时,SM2必须是0。25二月2023262、串行口控制字及控制寄存器③REN(SCON.4)——允许接收控制位。由软件置1或清0,只有当REN=1时才允许接收,相当于串行接收的开关;若REN=0,则禁止接收。在串行通信接收控制过程中,如果满足RI=0和REN=1(允许接收)的条件,就允许接收,一帧数据就装载入接收SBUF中。④TB8(SCON.3)——发送数据的第9位(D8)装入TB8中。在方式2或方式3中,根据发送数据的需要由软件置位或复位。在许多通信协议中可用作奇偶校验位,也可在多机通信中作为发送地址帧或数据帧的标志位。对于后者,TB8=1,说明该帧数据为地址;TB8=0,说明该帧数据为数据字节。在方式0或方式1中,该为未用。25二月2023272、串行口控制字及控制寄存器⑤RB8(SCON.2)——接收数据的第9位。在方式2或方式3中,接收到的第9位数据放在RB8位。它或是约定的奇/偶校验位,或是约定的地址/数据标识位。在方式2和方式3多机通信中,若SM2=1,如果RB8=1,说明收到的数据为地址帧。在方式1中,若SM2=0(即不是多机通信情况),RB8中存放的是已接收到的停止位。在方式0中,该位未用。⑥TI(SCON.1)——发送中断标志。在一帧数据发送完时被置位。在方式0串行发送第8位结束或其他方式串行发送到停止位的开始时由硬件置位,可用软件查询。它同时也申请中断,TI置位意味着向CPU提供“发送缓冲器SBUF已空”的信息,CPU可以准备发送下一帧数据。串行口发送中断被响应后,TI不会自动清0,必须由软件清0。25二月2023282、串行口控制字及控制寄存器⑦RI(SCON.0)——接收中断标志。在节收到一帧有效数据后由硬件置位。在方式0中,第8位数据发送结束时,由硬件置位;在其他三种方式中,当接收到停止位中间时由硬件置位。RI=1,申请中断,表示一帧数据接收结束,并已装入接收SBUF中,要求CPU取走数据。CPU响应中断,取走数据。RI也必须由软件清0,清除中断申请,并准备接收下一帧数据。串行发送中断标志TI和接收中断标志RI是同一个中断源,CPU事先不知道是发送中断TI还是接收中断RI产生的中断请求,所以,在全双工通信时,必须由软件来判别。复位时,SCON所有位均清0。25二月2023292、串行口控制字及控制寄存器(2)PCON(87H)

电源控制寄存器PCON中只有SMOD位与串行口工作有关,如图7-9所示。图7-9电源控制寄存器PCON25二月2023302、串行口控制字及控制寄存器

SMOD(PCON.7)——波特率倍增位。在串行口方式1、方式2和方式3时,波特率和SMOD成正比,亦即当SMOD=1时,波特率提高一倍。复位时,SMOD=0。25二月2023313、串行通信工作方式

根据实际需要,89C51/S51串行口可设置4种工作方式,可有8位、10位或11位帧格式。

方式0以8位数据为一帧,不设起始位和停止位,先发送或接收最低位。其帧格式如下:25二月2023323、串行通信工作方式方式1以10位为一帧传输,设有1个起始位(0),8个数据位和1个停止位(1)。其帧格式为:25二月2023333、串行通信工作方式方式2和方式3以11位为1帧传输,设有1个起始位(0),8个数据位,1个附加第9位和1个停止位(1)。其帧格式为:附加第9位(D8)由软件置1或清0。发送时在TB8中,接收时送RB8中。25二月2023343、串行通信工作方式(1)串行口方式0

方式0为同步移位寄存器输入/输出方式,常用于扩展I/O口。串行数据通过RXD输入或输出,而TXD用于输出移位时钟,作为外接部件的同步信号。图7-10(a)为发送电路,图7-11(a)为接收电路。这种方式不适用于两个89C51/S51之间的直接数据通信,但可以通过外接移位寄存器来实现单片机的接口扩展。25二月2023353、串行通信工作方式(2)串行口方式1方式1真正用于串行发送或接收,为10位通用异步接口。TXD与RXD分别用于发送与接收数据。收发一帧数据的格式为1位起始位、8位数据位(低位在前)、1位停止位,共10位。在接收时,停止位进入SCON的RB8,此方式的传送波特率可调。串行口方式1的发送和接收时序如图7-12(a)和(b)所示25二月2023363、串行通信工作方式方式1发送时,数据从引脚TXD(P3.1)端输出。当执行数据写入发送缓冲器SBUF的命令时,就启动了发送器开始发送。发送时的定时信号,也就是发送移位时钟(TX时钟),是由定时器T1(见图7-7)送来的溢出信号经过16分频或32分频(取决于SMOD的值)而得到的,TX时钟就是发送波特率。可见,方式1的波特率是可变的。发送开始的同时,SEND变为有效,将起始位向TXD输出;此后每经过一个TX时钟周期(16分频计数器溢出一次为一个时钟周期,因此,TX时钟频率由波特率决定。)产生一个移位脉冲,并由TXD输出一个数据位;8位数据位全部发送完后,置为位TI,并申请中断置TXD为1作为停止位,再经一个时钟周期,SEND失效。25二月2023373、串行通信工作方式

方式1接收时,数据从引脚RXD(P3.0)端输入。接收是在SCON寄存器中REN位置1的前提下,并检测到起始位(RXD上检测到1→0的跳变,即起始位)而开始的。接收时,定时信号有两种(如图7-12(b)所示):一种是接收移位时钟(RX时钟),它的频率和传送波特率相同,也是由定时器T1的溢出信号经过16或32分频而得到的;另一种是位检测器采样脉冲,它的频率是RX时钟的16倍,亦即在一位数据期间有16位检测器采样脉冲,为完成检测,以16倍于波特率的速率对RXD进行采样。25二月2023383、串行通信工作方式为了接受准确无误,在正式接受数据之前,还必须判定这个1→0跳变是否是干扰引起的。为此,在这位中间(即一位时间分成16等份,在第7,第8及第9等份)连续对RXD采样三次,取其中两次相同的值进行判断。这样能较好地消除干扰的影响。当确认是真正的起始位(0)后,就开始接受一帧数据。当一帧数据接受完毕后,必须同时满足以下两个条件,这次接受才真正有效。25二月2023393、串行通信工作方式①RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中数据已被取走。由软件使RI=0,以便提供“接收SBUF已空”的信息。②SM2=0或收到的停止位为1(方式1时,停止位进入RB8),则将接收到的数据装入串行口的SBUF和RB8(RB8装入停止位),并置位RI;如果不满足,接收到的数据不能装入SBUF,这意味着该帧信息将会丢失。

值得注意的是,在整个接收过程中,保证REN=1是一个先决条件。只有当REN=1时,才能对RXD进行检测。25二月2023403、串行通信工作方式(3)串行口方式2和方式3

串行口工作在方式2和方式3均为每帧11位异步通信格式,由TXD和RXD发送与接收(两种方式操作是完全一样的,所不同的只是波特率)。每帧11位,即1位起始位,8位数据位(低位在前),1位可编程的第9数据位和1位停止位。发送时,第9数据位(TB8)可以设置为1或0,也可将奇偶位装入TB8,从而进行奇偶校验;接收时,第9数据位进入SCON的RB8。方式2和方式3的发送、接收时序如图7-13所示。其操作与方式1类似。25二月2023414、波特率设计

在串行通信中,收发双方对发送或接收的数据速率有一定的约定,通过软件对89C51/S51串行口编程可约定四种工作方式。其中,方式0和方式2的波特率是固定的;而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。串行口的四种工作方式对应着三种波特率。由于输入的移位时钟来源不同,因此,各种方式的波特率计算公式也不同。25二月2023424、波特率设计(1)方式0的波特率由图7-14可见,方式0时,发送或接收一位数据的移位时钟脉冲由S6(即第6个状态周期,第12个节拍)给出,即每个机器周期产生一个移位时钟,发送或接收一位数据。因此,波特率固定为振荡频率的1/12,并不受PCON寄存器中SMOD位的影响。图7-14串行口方式0波特率的产生25二月2023434、波特率设计方式0波特率≌fosc/12注意,符号“≌”表示左面的表达式只是引拥右面表达式的数值,即右面的表达式是提供了一种计算的方法。25二月2023444、波特率设计(2)方式2的波特率串行口方式2波特率的产生与方式0不同,即输入的时钟源不同,其时钟输入部分入图7-15所示。控制接收与发送的移位时钟由振荡频率fosc的第二节拍P2时钟(即fosc/2)给出,所以,方式2波特率取决于PCON中SMOD位的值:SMOD=0时,波特率为fosc的1/64;SMOD=1时,波特率为fosc的1/32。即方式2波特率≌2SMOD/64×fosc图7-15串行口方式2波特率的产生25二月2023454、波特率设计(3)方式1和方式3的波特率方式1和方式3的移位时钟脉冲由定时器T1的溢出率决定,如图7-16所示。因此,89C51/S51串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD值同时决定。即方式1、方式3波特率≌T1溢出率/n图7-16串行口方式1、方式3波特率的产生返回25二月202346定时初值:

对机器周期进行计数。T:定时时间,X:初值,N:计数器位数,fosc:系统时钟频率,则:(2N-X)×12/fosc=TX=2N-fosc/12×T计数初值:

对外部脉冲进行计数,计数值根据要求确定。N:计数器位数,X:初值,则:

X=2N-计数值25二月2023474、波特率设计

当SMOD=0时,n=32;SMOD=1时,n=16。所以,可用下式确定方式1和方式3的波特率:方式1、方式3波特率≌2SMOD/32×(T1溢出速率)其中,T1溢出速率取决于T1的计数速率(计数速率≌fosc/12)和T1预置的处置。若定时器T1采用模式1时,波特率公式如下:串行方式1、方式3波特率≌2SMOD/32×(fosc/12)/(256-初值)25二月2023484、波特率设计因此,T1溢出速率为T1溢出速率≌(fosc/12)/(28-X)于是,可得出定时器T1模式2的初始值X:25二月2023494、波特率设计表7-2列出了串行口方式1、方式3常用波特率及其初值。定时器T1用作波特率发生器时,通常选用定时器模式2(自动重装初值定时器)比较实用。要设置定时器T1为定时方式(使C/T=0),让T1计数内部振荡脉冲,即计数速率为fosc/12(注意应禁止T1中断,以免溢出而产生不必要的中断)。先设定TH1和TL1定时即输初值为X,那么每过“28-X”个机器周期,定时器T1就会产生一次溢出。25二月2023502、串行口控制字及控制寄存器①SM0和SM1(SCON.7,SCON.6)——串行口工作方式选择位。两个选择位对应4种通信方式,如表7-1所示。其中,fosc是振荡频率。25二月2023512.方式1和方式3的波特率可变,由定时器1的溢出率决定波特率/(b/s)fosc/MHzSMOD定时器1C/模式初始值方式0:1M方式2:375k方式1、3:62.5k19.2k9.6k4.8k2.4k1.2k137.5k11011012121211.05911.05911.05911.05911.05911.986612×1110000000××000000000××222222221××FFHFDHFDHFAHF4HE8H1DH72HFEEBHT波特率=25二月2023524、波特率设计例7-1:89C51/S51单片机时钟振荡频率为11.0592MHz,选用定时器T1工作模式2作为波特率发生器,波特率为2400b/s,求初值。解:设置波特率控制为(SMOD)=0所以,(TH1)=(TL1)=F4H。25二月2023532、串行口方式1的发送和接收例7-2:89C51/S51串行口按双工方式收发ASCII字符,最高位用来作奇偶校验位,采用可校验方式,要求传送的波特率为1200b/s。编写有关的通信程序。解:7位ASCII码加1位奇校验共8位数据,故可采用串行口方式1。

89C51/S51单片机的奇偶校验位P是当累加器A中1的数目为奇数时,P=1。如果直接把P的值放入ASCII码的最高位,恰好成了奇偶校验,与要求不符。因此,要把P的值取反以后放入ASCII码最高位,才是要求的奇校验。25二月2023542、串行口方式1的发送和接收

双工通信要求收、发能同时进行。实际上,收、发操作主要是在串行接口进行,CPU只是把数据从接收缓冲器读出和把数据写入发送缓冲器。数据传送用中断方式进行,响应中断以后,通过检测是RI置位还是TI置位来决定CPU是进行发送操作还是接收操作。发送和接收都通过调用子程序来完成,设发送数据区的首地址为20H,接收数据区的首地址为40H,fosc为6MHz,通过查波特率初值(表7-2)可知定时器的初装值为F3H。定时器T1采用工作模式2,可以避免计数溢出后用软件重装定时初值的工作。25二月2023552、串行口方式1的发送和接收程序清单:主程序

MOVTMOD,#20H;定时器1设为模式2MOVTL1,#0F3H;定时器初值

MOVTH1,#0F3H;8位重装值

SETBTR1;启动定时器1MOVSCON,#50H;设置为方式1, ;REN=1MOVR0,#20H;发送数据区首址

MOVR1,#40H;接收数据取首址

ACALLSOUT;先输出一个字符

SETBESSETBEASJMP$;等待中断

中断服

ORG0023H;串行口中断入口

AJMPSBR1;转至中断服务程序

ORG0100HSBR1:JNBRI,SEND;TI=1,为发送中断

ACALLSIN;RI=1,为接收中断

SJMPNEXT;转至统一的出口SEND:ACALLSOUT;调用发送子程序NEXT:RETI;中断返回25二月2023562、串行口方式1的发送和接收发送子程序

SOUT:CLRTIMOVA,@R0;取发送数据到AMOVC,P;奇偶标识赋予CCPLC;奇校验

INCR0;修改发送数据指针

MOVSBUF,A;发送ASCII码

RET;返回接收子程序

SIN:CLRRI MOVA,SBUF;读出接收缓冲区内容

MOVC,P;取出校验位

CPLC;奇校验

ANLA,#7FH;删去校验位

MOV@R1,A;读入接收缓冲区

INCRI;修改接收数据指针

RET;返回25二月2023572、串行口方式1的发送和接收在主程序中已初始化REN=1,则允许接收。以上程序基本上具备了全双工通信的能力,但不能说很完善。例如,再接收子程序中,虽然检验了奇偶校验位,但没有进行出错处理;另外,发送和接收数据区的范围都很有限,也不能满足实际需要。但有了一个基本的框架之后,逐渐完善还是可以做到的。25二月2023582、串行口方式1的发送和接收例7-5:采用查询方式由串行口发送带奇偶校验位的数据块。解:本理由内部RAM单元20H-3FH取出ASCII码数据,在最高位上加奇偶校验位后由串行口发出。采用8位异步通信方式,波特率为1200b/s,fosc=11.059MHz。由要求可知,应把串行口设置为方式1,采用定时器1模式2作为波特率发生器,预置值(TH1)=0E8H。25二月2023592、串行口方式1的发送和接收程序清单:主程序;

MOVTMOD,#20H ;设置定时器1为模式2 MOVTL1,#0E8H ;初值,波特率为1200b/s MOVTH1,#0E8H SETBTR1 ;启动T1运行

MOVSCON,#01000000B ;设置串行口为方式1 MOVR0,#20H MOVR7,#32 ;数据块长度LOOP: MOVA,@R0ACALLSP-OUTJNBP,ERROR;传输出错处理,由SP-OUT中“CPLC”结果决定

INCR0DJNZR7,LOOP ……25二月2023602、串行口方式1的发送和接收串行口发送子程序(奇校验);SP-OUT:MOVC,PSW.0;设置奇校验位,校验位P=1为奇校验

CPLC;奇校验(无此指令位偶校验)

MOVACC.7,C;ACC.7补0或1MOVSBUF,A;启动串行口发送过程

CLRTI;清TI标志,允许在发送

RETERROR:(略)25二月2023612、串行口方式1的发送和接收例7-6:由串行口接收带奇偶校验位的数据块。解:采用查询方式,本例与上例相呼应,接收器把接收到的32B数据存放在20H-30H单元内,波特率同上,若奇偶校验出错则置进位位为1。程序清单:25二月2023622、串行口方式1的发送和接收主程序;

MOVSCON,#01010000B;设串口方式1,允许接收

MOVTMOD,#20H ;设置定时器T1为模式2 MOVTL1,#0E8H ;初值,波特率为1200b/s MOVTH1,#0E8H SETBTR1 ;启动T1运行

MOVR0,#20H MOVR7,#32 ;数据块长度LOOP: ACALLSP-IN ;调接收一帧子程序

JCERROR ;由SP-IN中“CPLC”结果决定

MOV@R0,A ;存放接收的数据

INCR0DJNZR7,LOOP……25二月2023632、串行口方式1的发送和接收接收一帧子程序;

SP-IN: JNBRI,$ ;RI由硬件置位

CLRRI ;软件清除RI MOVA,SBUF MOVC,P ;检查奇校验位

CPLC ;置C为主程序“JCERR

温馨提示

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

评论

0/150

提交评论