第07 MCS-51单片机的串行接口_第1页
第07 MCS-51单片机的串行接口_第2页
第07 MCS-51单片机的串行接口_第3页
第07 MCS-51单片机的串行接口_第4页
第07 MCS-51单片机的串行接口_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

第七章MCS-51单片机的串行接口本章内容串行通讯的基本概念;

MCS-51单片机串行接口的工作模式;串行接口应用及编程。1西华大学电气信息学院郑海春7.1

串口通信基本知识7.2

数据缓冲寄存器SBUF7.3

串口控制寄存器SCON7.4

串行口的模式07.5

串行口的模式17.6

串行口的模式2、37.7

波特率及定时器T1的设定7.8

串行口应用举例本章目录2西华大学电气信息学院郑海春7.1串口通信基本知识(一)数据通信的两种方式:并行通信:数据的各位同时传送。接收设备发送设备询问应答特点:控制简单,传输速度快。传输线多,长距离传输成本高。3西华大学电气信息学院郑海春2.

串行通信:数据一位一位顺序传送。接收设备发送设备顺序传送D0

D7特点:

传输线少,长距离传送时成本低,但控制复杂。波特率(Baudrate):每秒钟传送二进制数码的位数,单位为b/s,即位/秒,如9600bps。

4西华大学电气信息学院郑海春(二)串行通信的两种工作方式:异步通信(AsynchronousCommunication)传送方式:在物理结构上,异步通信的双方只有数据线而没有时钟传输线。A、B双方都以自己的时钟源控制着发送的速率或对接收进行采样;由于通讯双方系统时钟往往不同,所以在异步通信中,要想保证通信的成功必须保证两点:

①通信双方必须保持相同的传送、接收速率(波特率); ②双方必须遵守相同的数据格式(字符帧)。5西华大学电气信息学院郑海春将要传送的数据由一个0点平的“起始位”引导,中间为8位(或9位)的数据位,后面有一个高电平的“停止位”——数据帧格式。异步通信的字符帧格式由于添加了“起始位”和“停止位”,占用了传输时间,降低了传输效率,因此仅适用于远距离的数据通信。D0D1D2D3D4D5D6D7起始位停止位01MCS-51单片机的一个字符帧的格式6西华大学电气信息学院郑海春同步通信(SynchronousCommunication)传送方式:在物理结构上,通信双方除了通信的数据线外还增加了一个通信用的“时钟传输线clock”。由主控方提供时钟信号clock。由于有了时钟信号来“同步”发送或接收操作,所以被传送的数据不再使用“起始位”和“停止位”,因而提高了传送速度。因此同步通信常被用于系统内部各芯片之间的接口设计。由于同步通信多了一条“时钟线”,因此不太适合远距离的通信。7西华大学电气信息学院郑海春同步发送、接收示意图主控方被控方dataclock主控方被控方dataclock主控方发送数据主控方接收数据

8西华大学电气信息学院郑海春(三)串行通信的工作制式:串行通信中的数据传送可划分为三种工作制式:单工模式(simplex);半双工模式(halfduplex);全双工模式(fullduplex)。9西华大学电气信息学院郑海春单工模式(simplex):通讯的A方只能送,而B方只能接收——广播式。例如:除了用于远程通信外,系统内部单片机以串行方式接收外围芯片(ADC)的数据;或者控制外围芯片(DAC、LCD等)工作。发送方A接收方BTXDRXD10西华大学电气信息学院郑海春半双工模式(halfduplex):

在某一时刻A方只能发送,B方只能接收;而在另一时刻B方只能发送,A方只能接收——对讲机模式。例如:除了用于远程通信外,系统内部单片机与串行接口的RAM、E2PROM之间的数据交换。发送方A接收方BTXDRXDTXDRXD11西华大学电气信息学院郑海春全双工模式(fullduplex):A、B双方可以同时发送和接收数据——手机模式。例如:两台单片机系统之间的数据串行交换。发送方A接收方BTXDRXDTXDRXD12西华大学电气信息学院郑海春(四)串行通信的传输速率用于表征串行通信速率的参数称为“波特率”;波特率的单位为:位/秒(bit/s);波特率取值范围一般为:0~9600bit/s。影响波特率的主要因素取决于传输线的分布电容、通信电平标准和传送距离;13西华大学电气信息学院郑海春(五)串行通信的电平标准为了增加串行通信的距离,可以采用RS-232、RS-485的通信标准。其中:TTL电平(0~5V):3米以内。RS-232标准(+12V~-12V):15米。RS-485标准(差分输入输出):300米以上。14西华大学电气信息学院郑海春(六)MCS-51单片机的串行接口具有一个“全双工”的通讯能力串行接口。 其中;P3.0端口作RXD——异步接收端;

P3.1端口作TXD——异步发送端。包含“同步通信”和“异步通信”两种工作方式的四种工作模式;在“异步方式”中由T1做波特率发生器;与串行口相关的SFR有:SBUF(接收SBUF和发送SBUF)SCON串口控制寄存器(设定四种模式)。15西华大学电气信息学院郑海春MCS-51单片机的异步串行通讯应用示意图MCS-51TXD(甲)RXD

RXDMCS-51TXD(乙)TXDRXDRXDTXDRS-232或485RS-232或485TXDRXDRS-232PC机COM1,COM2单片机甲、乙之间近距离的直接通讯单片机甲乙两地之间远距离通讯单片机与PC机之间的数据通讯16西华大学电气信息学院郑海春7.2数据缓冲寄存器SBUF在MCS-51的串行口电路中,SBUF是用来存放发送和接收数据的两个独立的缓冲寄存器,在SFR的地址都是99H。CPU执行写SBUF指令便开始引发串口的发送。MOVSBUF,A

当串口接收缓冲器接收到一帧数据时,可以执行下面指令进行读取:

MOVA,SBUF由于发送SBUF与接收SBUF是两个独立的缓冲器,所以51串行口是一个可以同时发送与接收的“全双工”接口。17西华大学电气信息学院郑海春接收SBUF移位寄存器发送SBUF移位寄存器内部总线CPUMCS-51RXDP3.0TXDP3.1SBUF实际上是一个能够独立完成数据接收和数据发送操作的复杂的硬件电路;①

CPU只要将数据送到发送SBUF(MOVSBUF,A)后,SBUF便一位一位的发送数据,发送完成后标志TI=1;②当外部串行数据经RXD送入SBUF时,电路便自动启动接收,直至完成一帧数据后标志RI=1。18西华大学电气信息学院郑海春7.3串口控制寄存器SCON用于设定串行接口工作模式、表征串口的工作状态的特殊功能寄存器;在SFR中的地址为98H;这是一个可以按位寻址的SFR,在使用中可直接使用位操作指令,给编程带来方便;19西华大学电气信息学院郑海春SCON寄存器示意图SM0SM1SM2RENTB8RB8TIRID7D6D5D4D3D2D1D020西华大学电气信息学院郑海春SCON寄存器各位定义D7、D6位:SM0SM1

模式选择位。SM0SM1模式功能波特率

000同步移位寄存器模式Fosc/12

0118位异步通信UART可变

1029位异步通信UARTFosc/64或/32

1139位异步通信UART可变SM0SM1SM2RENTB8RB8TIRID7D6D5D4D3D2D1D021西华大学电气信息学院郑海春D1、D0:TI、RI

发送、接收完成标志TI

:完成一帧数据发送标志,应软件清零,发送完成TI=1同时申请中断(如果中断开放,则引发中断);RI

:完成一帧数据接收标志,应软件清零,接收完成RI=1并申请中断(如果中断开放,则引发中断);SM0SM1SM2RENTB8RB8TIRID7D6D5D4D3D2D1D022西华大学电气信息学院郑海春D3、D2:TB8、RB8发送、接收的第9位数据TB8:在9位数据传送的模式2、3时,将要发送的第9位数据,在执行MOVSBUF,A

指令之前要事先将TB8设定好;RB8:在9位数据传送的模式2、3时,接收到的第9位数据;SM0SM1SM2RENTB8RB8TIRID7D6D5D4D3D2D1D023西华大学电气信息学院郑海春D4:REN允许接收控制位。REN:允许接收位,REN=1时允许接收,由软件置位或清零。SM0SM1SM2RENTB8RB8TIRID7D6D5D4D3D2D1D024西华大学电气信息学院郑海春D5:SM2

多机通信使能位(用于接收方串口控制) 模式0、1时:SM2不用。模式2、3时:有两种设定方法。①若SM2=0,无论RB8如何,RI都能被激活,但RI不能引发中断!CPU可通过查询RI的方式接收数据。

②若SM2=1,若接收到的第9位(RB8)=0时,RI不会被激活;若RB8=1时,RI不仅能被激活,并可引发中断。这种特性得出一个特殊的结果:如果接收方将其SM2=1,则能否接收到对方发送的数据不取决于自己,而是由发送方的TB8来决定的。SM2=1的设定用于多机通信的场合。25西华大学电气信息学院郑海春使用RI、TI标志完成数据的发送与接收SBUF是独立于CPU。不论是数据的发送还是接收都由SBUF独立完成。SBUF的传送速度远远低于CPU执行指令的速度,每次发送后CPU必须等待SBUF。协调CPU与SBUF的速度只能靠标志信号。即: 发送操作后,查询TI=1?来决定是否可以发送下一个数据;

接收操作时,查询RI=1?判断是否接收到数据。26西华大学电气信息学院郑海春RI(SCON.0):接收完成标志。当SUBF从RXD引脚接收完一个完整的数据帧时RI=1,CPU可以使用两种方式来处理接收的数据:CPU采用查询RI来控制数据的读取。

JNBRI,$

;如果RI≠1则等待

MOVA,SBUF;RI=1时,取SBUF中数据送A。如果中断是开放的,则RI=1时会自动引发中断。用户可以通过中断服务程序将SBUF中的数据取出送累加器A。

MOVA,SBUF;中断方式接收数据

27西华大学电气信息学院郑海春TI(SCON.1):发送完成标志。当CPU执行:MOVSBUF,A

指令后,便引发一次串行通讯的过程。SBUF开始通过TXD向外按位发送数据。当完成一帧数据的发送后,TI=1。使用查询的方式对TI进行检测:

JNB TI,$

;如果TI≠1则等待

MOVSBUF,A

;TI=1时发送下一个数据如果系统中断是开放的,则TI=1会自动引发中断。用户可以通过中断服务程序向SBUF输送下一个数据:

MOVSBUF,A

;在中断程序中发送下一个数据28西华大学电气信息学院郑海春使用查询RI、TI标志的方式进行发送与接收N个数据CLRSCON.TI数据送累加器Amovsbuf,aTI=1?N个数据发送完?YESNOYESNO发送数据的程序框图SETBSCON.RENmova,sbufRI=1?N个数据接收完?YESNOYESNOCLRSCON.RI

A送数据区接收数据程序框图29西华大学电气信息学院郑海春7.4串行口的模式0特点:同步移位寄存器模式。B=fosc/12。在这种模式下RXD(P3.0)做数据口;TXD(P3.1)做移位脉冲输出端。在移位过程中,先移数据的低位D0。

(注意:移位脉冲的频率就是模式0的波特率)主要功能:使用串行口扩展并行口,可以扩展

N×8

位的并行口。MCS-51RXDTXDData外部移位寄存器cp移位脉冲串行数据并行的数据(8位)30西华大学电气信息学院郑海春利用串行模式0构成的2位LED数码管驱动电路MCS-51P3.0P3.1P1.0

Q7Q0A,B74LS164/CLRCLK

Q7Q0A,B74LS164/CLRCLKRXDTXD共阳极LED数码管

.gfedcba共阳极LED数码管

.gfedcba+5V注:74LS164为8位串入并出移位寄存器31西华大学电气信息学院郑海春串行口模式0的时序信号(发送)写SBUFD1D0D2D3D4D5D6D7RXD端数据TXD端同步脉冲TI中断标志movsbuf,a32西华大学电气信息学院郑海春模式0的时序信号(接收)写SCON(RI=0)RI对RXD采样TXD同步脉冲RI中断标志33西华大学电气信息学院郑海春7.5串行口的模式1特点:10位异步传输(1个起始位+8个数据位+1个停止位); 波特率B可变(由定时器T1的溢出率来确定)。发送操作:在TI=0,执行movsbuf,a指令后从TXD端开始发送数据。当发送完8位数据后自动的添加一个高电平的停止位,并将TI置位。从TXD(P3.1)端发出的一个字符帧的格式D0D1D2D3D4D5D6D7起始位停止位01TITXD34西华大学电气信息学院郑海春接收操作:在REN=1且RI=0的条件下进行。串行口的接收控制器对RXD线进行采样,其采样频率是接收时钟的16倍。当连续8次采集到RXD线上为低电平时,检测电路便认定RXD线上有了“起始位”,在此后,便开始在每次第7、8、9三个脉冲时进行RXD采样,采取“三中取二”的原则来确定接收的数据(如图所示)。当接收到停止位时,必须满足:RI=0且SM2=0,才能把接收的数据送到SBUF中(停止位送SCON的RB8中,并使RI=1),否则数据丢失。

上面的条件意味着:要想得到接收的数据,在接收前必须事先清零RI。35西华大学电气信息学院郑海春串行口模式1时数据帧格式及接收采样示意图D0D1D2D3D4D5D6D7起始位8位数据停止位对RXD线的数据以16倍速度采样当连续8次采集到低电平时,便确认起始位到来在每个第7,8,9个脉冲对RXD采样并采用“以三取二”来确定采集的数据7.8.9RIRXD36西华大学电气信息学院郑海春7.6串行口的模式2、3特点:模式2、3都是11位传输格式

1个起始位+9个数据位

+1个停止位。

波特率:

模式2:固定为fosc/64或fosc/32。

(具体由PCON中的SMOD位来确定)

模式3:可变,由定时器T1的溢出波特率来确定。D0D1D2D3D4D5D6D7D8起始位8+1位数据停止位第9位0137西华大学电气信息学院郑海春模式2、3的发送过程类似于模式1,唯一的区别在于数据帧中数据是9位。这样,在发送一帧数据时,CPU除了要把8位数据送SBUF外(movsbuf,a),还要事先将第9位数据送到SCON.TB8中

SETBSCON.TB8

或:

CLRSCON.TB8

例如:

SETBSCON.TB8

或:CLRSCON.TB8

MOVSBUF,A

MOVSBUF,A

SM0SM1SM2RENTB8RB8TIRI38西华大学电气信息学院郑海春RI=0是保证下一个数据的正常接收的重要条件。每次当SBUF收到数据时,RI自动置一。当取走数据时必须通过软件复位RI(指令CLRRI),否则外部发来的数据将丢失!模式2、3的接收过程类似于模式1,不同的是:模式1时,SCON中的RB8是接收到的停止位“1”;而模式2、3时,RB8是接收到的第9位。39西华大学电气信息学院郑海春关于SM2的设定对于接收操作:

模式1:SM2无用,令其=0即可。此时接收数据条件是:RI=0且REN=1。单片机可以利用查询或中断方式为串口服务。

模式2、3的接收条件是:(除了RI=0、REN=1外)

①当

SM2=0时:RI可以被激活(但不能引发中断);

②当SM2=1时:只有接收到RB8=1时,RI不仅能激 活,还能引发中断。可见:当SM2=1时,单片机是否能接收到数据取决于外部数据的第9位RB8。这样外部可以通过第九位数据是“0”还是“1”来控制、决定单片机的接收状况。40西华大学电气信息学院郑海春在模式2、3中:如何利用和设置SM2和RB8来控制接收?①当数据是带奇偶效验位的9位数据时(效验位是RB8):必须令SM2=0,这样才能保证所有数据的正确接收(无论RB8如何);②在“多机通讯”时,所有的从机都将其SM2=1,这样作为主机在向从机发送数据/命令时,可以通过所发数据的第9位TB8(对于从机来说是RB8)来决定从机是否可以接收到此数据/命令(取决于RB8)。即RB8=1时接收有效;RB8=0时接收无效。所以,SM2也称“多机通讯位”,用于多机通讯。奇偶效验:一种防止串行通讯出错的方法。41西华大学电气信息学院郑海春串行口模式2、3时数据帧格式发送时:将SCON中的TB8作为第9位数据发送;接收时:将接收来的第9位送到SCON中的RB8中。D0D1D2D3D4D5D6D7D8起始位9位数据停止位SM0SM1SM2RENTB8RB8TIRI42西华大学电气信息学院郑海春模式2、3的应用之一

带奇偶校验位的数据传送奇偶校验:收到的第9位RB8是发送方送来的奇偶校验位。

在这种情况下必须令SM2=0,否则接收的校验位RB8=0时,将影响数据的接收(因为RB8有时为“1”,而有时为“0”)。当接收数据后,对PSW.P位进行判断。将此结果与RB8进行“异或”,结果是否与约定的相符合。

43西华大学电气信息学院郑海春【例】:收发双方约定为奇校验(9位数据中1的个数为奇):则发送方的第9位要根据前8位数据来确定。

若发送的8位数据是:00011010,则TB8为0。这样当接收方将SBUF的数据送A时(MOVA,SBUF),A中数据是:00011010。这时PSW.P=1,且RB8=0。这样进行时P⊕RB8运算,当=1时表明通讯正确。 反之若SBUF送A=00011011(此时RB8=0),这样PSW.P=0,RB8=0,P⊕

RB8=0表明不符合约定条件,接收出错。

【注意】使用模式2、3发送带“奇偶校验”位的数据时:

1,一定要使SM2=0(为什么?)。2,又因为SM2=0,所以尽管RI能够激活,但不会引发中 断,所以只能采用“查询”的方式接收数据。44西华大学电气信息学院郑海春利用模式2,3进行带奇校验的串行通讯程序流程图数据送累加器APSW.P=1?SETSCON.TB8CLRSCON.TB8MOVSBUF,ATI=1?CLRSCON.TIYESNONOYES发送端程序(原始TI=0)使用“查询法”编制的发送、接收程序RI=1?MOVA,SBUFPSW.P⊕RB8=1?出错处理CLRSCON.RIYESNO接收端程序(原始RI=0)NY数据送内存45西华大学电气信息学院郑海春模式2、3的应用之二:

多机通讯如果系统采用多机结构,并且有一个做主机,其它为从机时,它们之间可以通过多机通讯的方式进行数据交换。如:多路数据采集系统。我们选一台单片机作为主机,专门负责接收从机传回的数据,并进行数据的后期处理(保存、打印和显示等);而从机则完成对传感器的信号检测、A/D转换,最后将数据采用串行通讯的形式上传给主机。46西华大学电气信息学院郑海春采用“智能传感器”组成的多路数据采集系统主机从机N从机4从机3从机2从机1串行数据线(2条)RXDTXDTXDRXD从机做智能传感器47西华大学电气信息学院郑海春主从式多机通讯原理主机发送的数据可以传送到各个从机,从机发送的数据只能为主机接收,从机之间不能直接通讯。主机和从机的设置为模式2或3,其中主机的SM2=0,从机的SM2=1。从机的SM2=1时,接收到的第九位数据RB8=1时,RI可以激活,如果RB8=0,则RI不能激活。48西华大学电气信息学院郑海春主机首先通过发送地址码来寻找从机(地址码的特征是第9位数据为“1”),所以所有的从机都能接收到主机发出的地址码(因为从机的RI=0,SM2=1,RB8=1),并使RI=1引发中断。从机在中断服务程序中,将接收到地址码与自己的地址进行比较,被选中的从机将自己的SM2=0;而未被选中的从机仍保持SM2=1,并退出中断服务程序。当主机找到从机后,开始向从机发数据、命令(其特征为第9位=0)。由于从机SM2=0,所以尽管接收到的RB8=0,同样可以激活从机的RI,使其以查询的方式接收主机发出的数据或命令。当主机与从机的通讯完成后,从机再将其SM2=1,并退出中断服务程序。主机重新发出另一个从机的地址,所有从机可以马上响应并接收地址信息……。49西华大学电气信息学院郑海春多机通讯中SM2的设定在模式2、3中,

1,SM2=0时:RB8=1或RB8=0都可以激活RI,但不能引发中断。

2,SM2=1时:RB8=1才能激活RI并引发中断。而RB8=0时,RI不能激活。50西华大学电气信息学院郑海春多机通讯小结:1,主机的SM2=0,从机的SM2=1;2,主机向从机发送的地址码(第9位为“1”);3,所有的从机(SM2=1、RB8=1、RI=0)都接收主机的地址进入中断服务程序。在服务程序中比较、确认是否为被寻从机。4,被寻从机将SM2清零,以保证能以查询的方式接收主机的数据、命令。同时向主机返回地址供主机核实。没有被选种的从机保持SM2=1并退出服务程序。5,被寻中的从机以查询RI的方式与主机之间进行数据交换(注意:因为SM2=0时,RI虽然能被激活,但不能引发中断),完成后,重新将SM2置1。51西华大学电气信息学院郑海春模式2、3使用时要注意的问题在模式2、3中,可以实现较为特殊的通讯方式,如带校验位的9位传送、多机通讯。注意:当SM2=0时,只能采用查询方式。功能SM2第9位工作方式带校验位的9位数传送SM2=0校验位以查询(RI)的方式接收数据多机通讯主机SM2=0地址码:TB8=1数据、命令时=0以查询的方式工作从机SM2=1未选中时SM2不变以中断的方式接收地址选中后SM2=0以查询的方式与主机通讯52西华大学电气信息学院郑海春7.7波特率及定时器T1的设定在串行口的异步通讯中,发送方与接收方是两个互相独立的系统,它们的系统时钟可以各不相同。在这种条件下使通讯正确的条件是:

1,要有相同的字符帧格式;

2,要有相同的波特率。MCS-51单片机的串行口四种模式其波特率各不相同。其中模式1、3的波特率就是由定时器T1的溢出率来决定的(PCON中的SMOD=1波特率加倍)。53西华大学电气信息学院郑海春4种通讯模式的波特率SM0SM1模式功能波特率

000同步移位寄存器模式Fosc/12

01110位异步通信UART可变,由T1初值确定

10211位异步通信UARTFosc/64或/32*

11311位异步通信UART可变,由T1初值确定*当SMOD=1时,B=fosc/32;当SMOD=0时,B=fosc/64。54西华大学电气信息学院郑海春如何设定波特率?在编制串行口通讯(模式1、3)程序时,在程序的初始化中,通过T1进行波特率的设定,既对T1进行初始化。T1初始化的主要任务就是:

1,设置T1的工作方式为定时(C/*T=0);

工作模式为模式2:自动重装。

2,计算定时常数并分别送给TH1、TL1。波特率计算公式:B=T1溢出率:1秒钟的溢出次数。55西华大学电气信息学院郑海春根据波特率求初值TC计算公式【举例】设系统时钟为11.059MHz,要求波特率为1200Hz,求TH1和TL1的装入初值。【解】设:SMOD=0

,TH1=TL1=0E8H56西华大学电气信息学院郑海春7.8串行口应用举例模式1举例(一)发送程序TXD.ASMSM0SM1SM2RENTB8RB8TIRIT1初始化启动T1串行口初始化输入数据到A发送一帧数据MOVSBUF,ATI=1?软件清TIGATEC/TM1M0GATEC/TM1M0设定定时器T1的工作模式00100000B设定串行口模式寄存器SCON为01000000BYN程序实现功能:将P1端口输入的数据通过串行口发送出去。57西华大学电气信息学院郑海春实验电路MCS-51TXDP1.7P1.0MCS-51RXDP1.7P1.0∶8路开关量输入∶8路开关量输出串行口传输线58西华大学电气信息学院郑海春程序清单

org0000h

ljmp0100horg0100hstart:movtmod,#20h ;设定时器T1定时方式、模式2

movtl1,#0f4h ;送定时初值(fosc=11.0592)

movth1,#0f4h ;波特率B=2400

movpcon,#00h ;PCON中的SMOD=0

setbtr1 ;启动定时器T1

movscon,#40h ;设定串行口为模式1loop2:movp1,#0ffh

mova,p1 ;从P1口输入数据

movsbuf,a ;数据送SBUF发送loop1:jnbti,loop1 ;判断数据是否发送完毕?

clr

ti ;发送完一帧后清标志

sjmploop2 ;返回继续

end59西华大学电气信息学院郑海春(二)接收程序:RXD.ASMT1初始化启动T1串行口初始化输出数据到P1数据送AMOVA,SBUFRI=1?软件清RISM0SM1SM2RENTB8RB8TIRIGATEC/TM1M0GATEC/TM1M0定时器TMOD(89H)的工作模式00100000B串行口模式寄存器SCON(98H)为01010000BYN60西华大学电气信息学院郑海春RXD.ASM程序清单

org0000h

ljmpstart org0100hstart: movtmod,#20h ;选定T1为模式2(自动重装)

movtl1,#0f4h ;设定初值

movth1,#0f4h ;同上

movpcon,#00h ;PCON的SMOD=0

setbtr1 ;启动T1定时器

movscon,#50h ;设定串行口为方式1loop1:jnbri,loop1 ;判断是否接收到数据?

clr

ri ;接收到数据后清接收标志

mova,sbuf ;数据送累加器A

movp1,a ;从P1口输出

sjmploop1 ;回继续

end61西华大学电气信息学院郑海春思考题:用中断的方式接收数据

org0000h

ljmpstart

org0023h

ljmprxd1

org0100hstart: movtmod,#20h;选定T1为模式2(自动重装)

movtl1,#0f4h ;设定初值

movth1,#0f4h ;同上

movpcon,#00h;PCON的SMOD=0

setbtr1 ;启动T1定时器

movscon,#50h;设定串行口为方式1,接收

movie,#90h ;开串行口中断

sjmp$

org0200hrxd1: clr

ri ;接收到数据后清接收标志

mova,sbuf ;数据送累加器A

movp1,a ;从P1口输出

reti

end62西华大学电气信息学院郑海春RXD.ASM接收程序框图(中断方式)T1初始化并启动T1串行口初始化开串行口中断等待RI中断输出数据到P1接收一帧数据MOVA,SBUF软件清RIRETI主程序框图中断服务程序框图EAXXESET1EX1ET0EX0设定中断允许寄存器IE(A8H)为10010000B63西华大学电气信息学院郑海春模式2举例设主频为6MHz,波特率为fosc/32,发送字符块首地址为TBLOCK,字符块长度为LEN。要求累加和效验。【解】①累加和:对所有要发送的数据在发送的同时进行累加。取其累加和的低8位(大于255的舍去),即单字节。②发送方在发送完所有数据后,将单字节的累加和也发出。LEN不包括累加和字节。③接收方在接收数据时,对接收到的每一个数据也进行累加操作。数据接收完成后,将接收时的累加和与最后收到的发送方送来的发送累加和进行比较。如果两个累加和一致,则数据传送正确。64西华大学电气信息学院郑海春开始停机设定串行口为方式2令波特率为fosc/32数据块首址送R0数据块长度送R2累加和寄存器R3=LEN调用发送子程序主程序流程图65西华大学电气信息学院郑海春发送数据块长度TI=1CLRTI发送数据TI=1CLRTI求累加和数据指针加一R2-1→R2R2=0保护现场NNYYNYCCRET发送累加和TI=1NCLRTI恢复现场Y子程序流程图66西华大学电气信息学院郑海春主程序清单

ORG 0000HLJMPSTARTORG 1000HTBLOCK EQU 20H ;伪指令定义符号值LEN EQU 1EHSTART: MOV SCON,#80H ;串行口方式2 MOV PCON,#80H ;SMOD=1 MOV R0,#TBLOCK ;数据块首址送指针

MOV R2,#LEN ;数据块长度送R2计数器

MOV R3,#LEN ;累加和原始值=LEN LCALL TXSUB ;调用发送子程序

SJMP $67西华大学电气信息学院郑海春发送子程序清单

ORG 1100HTXSUB: PUSH ACC ;保护现场

PUSH PSW CLR TITXLEN: MOV SBUF,R2 ;发送数据块长度

JNB TI,$ CLR TITXD: MOV A,@R0 ;数据送A MOV SBUF,A ;发送数据

JNB TI,$ CLR TI ADD A,R3 ;计算累加和

MOV R3,A ;保存累加和

INC R0 ;修改数据指针

DJNZ R2,TXD ;数据发送完?TXSUM: MOV SBUF,R3 ;发送累加和

JNB TI,$ CLR TI

POP PSW ;恢复现场

POP ACC RET END68西华大学电气信息学院郑海春模式3接收举例主频6MHz,要求使用模式3,波特率2400,查询法。 接收数据块首址为RBLOCK,数据块长度由发送方送来。同时,发送方最后一个数据是发送的累加和。【解】①配合前面例题的发送程序来接收数据,第一个传来的是数据块的长度,最后送来的是发送的累加和;②将接收到的第一个数据(数据块长度)作为接收程序的循环计数器初值;③在接收每一个数据时,同时作接收数据的累加和操作,最后与发送方的发送累加和进行比较,如果不相等,则转出错处理。69西华大学电气信息学院郑海春开始停机设定串行口为方式3定时器T1初始化,并启动数据块首址送R0累加和寄存器R3=0调用接收子程序接收主程序流程图70西华大学电气信息学院郑海春接收子程序流程图RI=1CLRTI数据送R2求累加和ERRORRI=1CLRRI数据送RAM求累加和数据指针加一R2-1→R2R2=0清除RINNYYNYCCRET相等?NCLRRI比较累加和Y71西华大学电气信息学院郑海春主程序清单

ORG0000HLJMPSTARTORG 1000HRBLOCK EQU 30HSTART: MOV TMOD,#20H ;设定T1工作方式2

MOV TH1,#0F4H MOV TL1,#0F4H ;设定定时初值MOV PCON,#00H ;SMOD=0

SETB TR1 ;启动定时器T1

MOV SCON,#0D0H ;串口模式3 MOV R0,#RBLOCK ;数据指针赋初值

MOV R3,#00H ;累加和寄存器原始清零

ACALL RXSUB ;调用接收子程序

SJMP $72西华大学电气信息学院郑海春子程序清单ORG 1100HRXSUB: CLR RIRXLEN: JNB RI,$ ;等待接收数据块长度

CLR RI MOV SBUF,A MOV R2,A ;数据块长度送R2寄存器

ADD A,R3 ;开始求累加和

MOV R3,A ;存累加和RXD: JNB RI,$ ;等待接收数据

CLR RI MOV A,SBUF ;取串口数据

MOV @R0,A ;数据送内存

ADD A,R3 ;求累加和

MOV R3,A ;求累加和并保存

INC R0 ;修改指针

DJNZ R2,RXD ;数据传送未完转RXD73西华大学电气信息学院郑海春RXSUB: JNB RI,$ ;等待接收发送方的累加和 CLR RI MOV A,SBUF ;发送方的累加和送A

XRL A,R3 ;比较两个累加和

JNZ ERROR ;若不等则出错,转出错处理 RET 74西华大学电气信息学院郑海春模式2、3应用举例与模式1相比,模式2、3的主要特点:

1,9位数据的传送格式:

其中:发送时第9位在TB8中;接收时第9位在RB8中。

2,SM2:

多机通讯位:

在模式0、1中:设SM2=0,RI可以正常的激活并引发中断。在模式2、3中:①SM2=0时,RI可以被激活,但不能引发中断;②SM2=1时,当RB8=1,RI可以激活且引发中断;

若RB8=0则不能激活RI,不能引发中断!根据上面特点,模式2、3可以:1,利用第9位数据来传送、接收数据的“奇偶效验位”(SM2=0)。

2,利用SM2、RB8实现多机通讯功能(SM2=1)。75西华大学电气信息学院郑海春利用模式2,3进行带奇校验的串行通讯程序流程图数据送累加器APSW.P=1?SETSCON.TB8CLRSCON.TB8MOVSBUF,ATI=1?CLRSCON.TIYESNONOYES发送端程序RI=1?MOVA,SBUFPSW.P⊕RB8=1?出错处理CLRSCON.RIYESNO接收端程序使用“查询法”编制的发送、接收程序NY数据送内存76西华大学电气信息学院郑海春使用模式3进行多机通讯主机从机N从机4从机3从机2从机1串行数据线(2条)主机可以与所有从机通讯,而从机之间不能通讯。77西华大学电气信息学院郑海春多机通讯原理与SM2的设定1,SM2:多机通讯位的设定。(在模式2、3时):SM2=0(单机通讯模式):RI

能被激活,但不能引发中断。

SM2=1(多机通讯模式):①若接收的第9位RB8=0,则不能激活RI,更不能引发中断;

②若RB8=1,RI能被激活且引发中断。2,主机、从机设置为模式2或3。其中:主机的SM2=0(单机方式);从机的SM2=1(多机方式)。3,主机发送的地址码的特征是第9位(TB8)=1;而主机发送的数据、命令码的特征是TB8=0。78西华大学电气信息学院郑海春4,主机发送地址码寻找从机时,所有从机的RI都被激活RI=1且引发中断,进入中断服务程序(因为SM2=1且RB8=1)。5,在从机的中断服务程序中,将接收到地址码与自己的地址进行比较:被选中的从机将自己的SM2=0(单机模式),并向主机回送地址码。未被选中的从机保持SM2=1(多机模式),并退出中断服务程序。6,主机得到从机返回的地址后,开始向该从机发数据、命令(其特征为第9位=0)。由于选中的从机SM2=0,所以该从机RI仍可以被激活,但要用查询RI的方式与主机继续通讯。而未选中的从机因SM2=1且RB8=0所以主机发出的命令和数据不会激活它们的RI。7,当主机与从机的通讯完成后,该从机再将其SM2=1并退出中断服务程序。主机重发下一个从机的地址(TB8=1),所有从机马上激活RI并进入中断对地址码判断……。79西华大学电气信息学院郑海春多机通讯中主机与从机之间的控制、状态信息主机的控制命令:

00H

主机发送,从机接收;(控制从机的操作)01H

主机接收,从机发送。从机状态字:从机向主机发送的用于表征从机工作状态的信息(如下图)。ERR·····TRDYRRDY0:合法命令0:发送未就绪

0:接收未就绪1:非法命令

1:发送就绪

1:接收就绪从机返回的状态字80西华大学电气信息学院郑海春主机程序框图T1为定时,模式2B=1200,启动T1设串口为模式3REN=1,SM2=0TB8=1设定程序数据:R0~R5停机MCOMMU从机应答?地址相符?发送命令字(TB8=0)从机应答?命令正确?命令分类从机接收就绪?从机发送就绪?RET命令从机复位发FFHNNYYNNYYNNYY接收发送调用MCOMMU接收数据块发送数据块发送从机地址81西华大学电气信息学院郑海春一:主机程序(初始化部分)

ORG2000HSTART: MOVTMOD,#20H ;定时器T1为模式2(8位自动重装)

MOVTH1,#0F4H MOVTL1,#0F4H ;波特率为1200(设外接6MHz晶体)MOVPCON,#00H ;设PCON中的SMOD=0

SETBTR1 ;启动T1

MOVSCON,#0D8H ;串口为模式3,REN=1,SM2=0,TB8=1MOVR0,#40H ;发送数据块首地址送R0指针

MOVR1,#20H ;接收数据块首地址送R1指针

MOVR2,#SLAVE ;被寻从机地址送R2

MOVR3,#00H;#01H ;主发、从收命令。或主收、从发命令

MOVR4,#14H ;发送数据块长度送R4(20)计数器

MOVR5,#14H ;接收数据块长度送R5(20)计数器

ACALLMCOM ;调用主机通讯子程序

SJMP$82西华大学电气信息学院郑海春二:主机通讯子程序(MCOM)

ORG2100HMCOM: MOVA,R2 ;取从机地址

MOVSBUF,A JNBRI,$ ;注意:为什么判断RI而不是TI? CLRRI

MOVA,SBUF ;取从机的返回地址

XRLA,R2 ;核对两个地址

JZMTXD2 ;相符时,转MTXD2MTXD1:MOVSBUF,#0FFH ;返回地址错误时,发送从机复位信号

SETBTB8 ;设定地址标志

SJMPMCOM

;重发从机地址,所有从机重新判断地址MTXD2:CLRTB8

;将TB8=0,准备发送命令

MOVSBUF,R3 ;送出命令

JNBRI,$ ;等待从机应答

CLRRI ;从机应答后清标志

MOVA,SBUF ;接收从机应答命令

JNBACC.7,MTXD3 ;命令无错时,则命令分类

SJMPMTXD1 ;命令错返回重新联络83西华大学电气信息学院郑海春MTXD3:CJNER3,#00H,MRXD ;从机发送主机接收时,转MRXD

JNBACC.0,MTXD1 ;从机接收时,若从机未准备好转回MTXD4:MOVSBUF,@R0 ;若从机准备好,则开始发送

JNBTI,$ CLRTI INCR0 DJNZR4,MTXD4 RETMRXD:

JNBACC.1,MTXD1 ;从机发送未准备好返回MRXD1:JNBRI,$ ;等待接收

CLRRI MOVA,SBUF INCR1 ;接收数据区指针加一

DJNZR5,MRXD1 ;未接收完则继续(R5接收数据计数器)

RET END ERR从机

温馨提示

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

评论

0/150

提交评论