《43 串行通信接口.ppt》由会员分享,可在线阅读,更多相关《43 串行通信接口.ppt(73页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4.3 串行通信串行通信4.3 串行通信接口串行通信接口 4.3.1 串行通信的基本知识串行通信的基本知识 1.并行通信与串行通信并行通信与串行通信在在实实际际应应用用中中,不不但但计计算算机机与与外外部部设设备备之之间间常常常常要要进进行行信信息息交交换换,而而且且计计算算机机之之间间也也需需要要交交换换信信息息,所所有有这这些信息的交换均称为些信息的交换均称为“通信通信”。通信的基本方式分为并行通信和串行通信两种。通信的基本方式分为并行通信和串行通信两种。并并行行通通信信是是构构成成1组组数数据据的的各各位位同同时时进进行行传传送送,例例如如8位位数数据据或或16位位数数据据并并行行传
2、传送送。其其特特点点是是传传输输速速度度快快,但但当当距距离离较较远远、位位数数又又多多时时导导致致了了通通信信线线路路复复杂杂且且成成本高。本高。第第4.3 串行通信串行通信串串行行通通信信是是数数据据一一位位接接一一位位地地顺顺序序传传送送。其其特特点点是是通通信信线线路路简简单单,只只要要一一对对传传输输线线就就可可以以实实现现通通信信(如如电电话话线线),从从而而大大大大地地降降低低了了成成本本,特特别别适适用用于于远远距离通信。距离通信。缺点是传送速度慢。缺点是传送速度慢。图图410为为以以上上两两种种通通信信方方式式的的示示意意图图。由由图图410可可知知,假假设设并并行行传传送送
3、N位位数数据据所所需需时时间间为为T,那那么么串串行行传送的时间至少为传送的时间至少为NT,实际上总是大于实际上总是大于NT的。的。第第4.3 串行通信串行通信图410通信的两种基本方式(a)并行通信;(b)串行通信第第4.3 串行通信串行通信 串串行行通通信信可可分分为为异异步步传传送送和和同同步步传传送送两两种种基基本本方式。方式。1)1)异步传送方式异步传送方式 异异步步传传送送的的特特点点是是数数据据在在线线路路上上的的传传送送不不连连续续。在在传传送送时时,数数据据是是以以一一个个字字符符为为单单位位进进行行传传送送的的。它它用用一一个个起起始始位位表表示示字字符符的的开开始始,用用
4、停停止止位位表表示示字字符符的的结结束束。异异步步传传送送的的字字符符格格式式如如图图411(a)411(a)所示。所示。第第4.3 串行通信串行通信 一一个个字字符符由由起起始始位位、数数据据位位、奇奇偶偶校校验验位位和和停止位停止位4个部分组成(一帧数据)。个部分组成(一帧数据)。起起始始位位为为0信信号号占占1位位;其其后后接接着着的的就就是是数数据据位位,它它可可以以是是5位位、6位位、7位位或或8位位,传传送送时时低低位位在在先、高位在后;先、高位在后;再后面的再后面的1位为奇偶校验位位为奇偶校验位,可要也可以不要;可要也可以不要;最最后后是是停停止止位位,它它用用信信号号1来来表表
5、示示字字符符的的结结束束,可以是可以是1位、位、1位半或位半或2位位。第第4.3 串行通信串行通信图411串行异步传送的字符格式(a)字符格式;(b)有空闲位的字符格式第第4.3 串行通信串行通信 例例如如,采采用用串串行行异异步步通通信信方方式式传传送送ASCII码码字字符符5,规规定定为为7位位数数据据位位,1位位偶偶校校验验位,位,1位停止位,无空闲位。位停止位,无空闲位。由由于于5的的ASCII码码为为35H,其其对对应应7位位数数据据位位为为0110101,如如按按低低位位在在前前、高高位位在在后后顺顺序序排排列列应应为为1010110。前前面面加加1位位起起始始位位,后后面面配配上
6、上偶偶校校验验位位1位位0,最最后后面面加加1位位停停止止位位1,因因此此传传送送的的字字符符格格式式为为0101011001,其其对对应应的的波形如图波形如图412所示。所示。第第4.3 串行通信串行通信图图412 传送传送ASCII码字符码字符5的波形图的波形图 第第4.3 串行通信串行通信 在在串串行行异异步步传传送送中中,CPU与与外外设设之之间间事事先先必必须须约约定定(协协议议):字符格式。字符格式。双双方方要要事事先先约约定定字字符符的的编编码码形形式式、奇奇偶偶校校验验形形式式及及起起始始位位和和停停止止位位的的规规定定。例例如如用用ASCII码码通通信信,有有效效数数据据为为
7、7位位,加加1个个奇奇偶偶校校验验位位、1个个起起始始位位和和1个个停停止止位位共共10位位。当当然然停停止位也可大于止位也可大于1位。位。波特率波特率(Baudrate)。波波特特率率就就是是数数据据的的传传送送速速率率,即即每每秒秒钟钟传传送送的的二二进进制制位位数数,单单位位为为位位/秒秒。它它与与字字符符的的传传送送速速率率(字字符符/秒秒)之之间间存存在在如下关系:如下关系:波特率波特率=(位(位/字符)字符)(字符(字符/秒)秒)=位位/秒秒 要求发送端与接收端的波特率必须一致。要求发送端与接收端的波特率必须一致。第第4.3 串行通信串行通信例例如如,假假设设字字符符传传送送的的速
8、速率率为为120字字符符/秒秒,而而每每1个个字字符符为为10位位,那么传送的波特率为那么传送的波特率为 10位位/字符字符120字符字符/秒秒=1200位位/秒秒=1200波特波特 每每1位位二二进进制制位位的的传传送送时时间间Td就就是是波波特特率率的的倒倒数数,例如上例中例如上例中 Td=1/1200=0.833ms2)同步传送同步传送 在在异异步步传传送送中中,每每1个个字字符符都都要要用用起起始始位位和和停停止止位位作作为为字字符符开开始始和和结结束束的的标标志志,占占用用了了一一定定的的时时间间。为为了了提提高高传传送送速速度度,有有时时就就去去掉掉这这些些标标志志,而而采采用用同
9、同步步传传送送,即即1次次传传送送1组组数数据据。在在这这1组组数数据据的的开开始始处处要要用用同同步步字字符符SYN来加以指示来加以指示,如图如图413所示。所示。第第4.3 串行通信串行通信图413同步传送第第4.3 串行通信串行通信 2.数据传送方向数据传送方向串行通信的数据传送方向有串行通信的数据传送方向有3种形式。种形式。(1)单工方式。单工方式。如如图图414(a)所所示示,A端端为为发发送送站站,B端端为为接接收收站站,数数据仅能从据仅能从A站发至站发至B站。站。(2)半双工方式。半双工方式。如如图图414(b)所所示示,数数据据既既可可从从A站站发发送送到到B站站,也也可可以以
10、由由B站站发发送送到到A站站。不不过过在在同同一一时时间间只只能能作作1个个方方向的传送。向的传送。(3)全双工方式。全双工方式。如图如图414(c)所示所示,每个站每个站(A、B)既可同时发送既可同时发送,也也可同时接收。可同时接收。第第4.3 串行通信串行通信图514串行通信的三种方式(a)单工方式;(b)半双工方式;(c)全双工方式单工方式半双方式全双工方式第第4.3 串行通信串行通信 3.信号的调制和解调信号的调制和解调 计算机通信是计算机通信是1种数字信号的通信种数字信号的通信,如图如图415所示。所示。它它要要求求传传送送线线的的频频带带很很宽宽,而而在在长长距距离离通通讯讯时时,
11、通通常常是是利利用用电电话话线线来来传传送送的的,该该线线不不可可能能有有这这样样宽宽的的频频带带。如如果果用用数数字字信信号号经经过过传传送送线线直直接接通通讯讯,信信号号就就会会畸畸变变,如图如图416所示。所示。图415通讯信号示意图第第4.3 串行通信串行通信图516数字信号通过电话线传送产生的畸变第第4.3 串行通信串行通信 因因此此要要在在发发送送端端用用调调制制器器(Modulator)把把数数字字信信号号转转换换为为模模拟拟信信号号,在在接接收收端端用用解解调调器器(Demodulator)检检测测此此模模拟拟信信号号,再再把把它它转转换换成成数数字字信信号号,如如图图417所
12、所示。示。FSK(Frequency Shift Keying)是是1种种常常用用的的调调制制方方法法,它它把把数数字字信信号号的的“1”与与“0”调调制制成成不不同同频频率率的的模拟信号模拟信号,其工作原理如图其工作原理如图418所示。所示。图417调制与解调示意图第第4.3 串行通信串行通信图418FSK调制法原理图第第4.3 串行通信串行通信 4.数据终端与调制器的接口数据终端与调制器的接口调调制制后后的的信信号号与与数数据据终终端端连连接接时时,经经常常使使用用EIARS-232C接接口口。它它是是目目前前最最常常用用的的1种种串串行行通通信信接接口口。这这是是1种种有有25(或或9个
13、个)个个管管脚脚的的D型型连连接接器器,不不但但它它的的每每一一个个管管脚脚的的规规定定是是标标准准的的,而而且且对对各各种种信信号号的的电电平平规规定定也也是是标标准准的的,因因而而便便于于互互相相连连接接。其最基本的最常用的信号规定如图其最基本的最常用的信号规定如图419所示所示。第第4.3 串行通信串行通信图419RS-232C的引脚图第第4.3 串行通信串行通信 其其次次,标标准准的的另另1个个重重要要的的含含义义是是这这些些信信号号的电气性能也是标准的。对各种信号的规定如下:的电气性能也是标准的。对各种信号的规定如下:(1)在在TXD和和RXD线上:线上:MARK(即表示为即表示为1
14、)=-3-25V SPACE(即表示为即表示为0)=+3+25V (2)在在 等线上:等线上:ON=+3+25V OFF=-3-25V第第4.3 串行通信串行通信图420接收器和发送器电路第第4.3 串行通信串行通信4.3.251系列单片机的串行接口51系列单片机内部有1个功能很强的全双工串行口,可同时发送和接收数据。它有4种工作方式,可供不同场合使用。波特率可由软件设置,通过片内的定时器/计数器产生。接收、发送均可工作在查询方式或中断方式,使用十分灵活。MCS-51的串行口除了用于数据通信外,还可以非常方便地构成1个或多个并行输入/输出口,或作串并转换,用来驱动键盘与显示器。第第4.3 串行
15、通信串行通信图42251单片机串行口的原理结构图第第4.3 串行通信串行通信1.串行接口的特殊功能寄存器1)串行口数据缓冲器SBUF接收缓冲器SBUF发送缓冲器SBUFSBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。两个缓冲器只用一个字节地址99H,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。CPU写SBUF,就是写发送缓冲器;读SBUF,就是读接收缓冲器。串行口对外也有两条独立的收、发信号线RXD(P3.0)和TXD(P3.1),因此可以同时发送、接收数据,实现全双工传送。第第4.3 串行通信串行通信2)串行口控制寄存器SCONSCON寄存
16、器用来控制串行口的工作方式和状态,它可以是位寻址。在复位时所有位被清0,字地址为98H。SCON的格式为RITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D0SM0、SM1:串行口工作方式选择位(具体内容参阅工作方式一节)。第第4.3 串行通信串行通信SM2:多机通信控制位。主要用于工作方式2和方式3。在方式2和方式3中,如SM2=1,则接收到的第9位数据(RB8)为0时不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;RB8为1时,才将接收到的前8位数据送入SBUF,并置位RI产生中断请求。当SM2=0时,则不论第9位数据为0或1,都将前8位数据装入S
17、BUF中,并产生中断请求。在方式0时,SM2必须为0。REN:允许串行接收控制位。若REN=0,则禁止接收;若REN=1,则允许接收。该位由软件置位或复位。第第4.3 串行通信串行通信TB8:发送数据位8。在方式2和方式3时,TB8为所要发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=0为数据,TB8=1为地址;也可用作数据的奇偶校验位。该位由软件置位或复位。RB8:接收数据位8。TI:发送中断标志位。在方式0时,当发送到的第8位结束后,由内部硬件使TI置位,向CPU请求中断。在其它方式时,在发送到停止位开始时由硬件置位TI,必须在响应中断后,由软件使其复
18、位。TI也可供软件查询使用。第第4.3 串行通信串行通信RI:接收中断标志位。在方式0时,当接收到的第8位结束后,由内部硬件使RI置位,向CPU请求中断。在其它方式时,接收到停止位的中间便由硬件置位RI,同样,也必须在响应中断后,由软件使其复位。RI也可供软件查询使用。3)特殊功能寄存器PCONPCON主要是电源控制而设置的专用寄存器,单元地址为87H,不能位寻址。其内容如下:IDLPDGF0GF1SMODD7D6D5D4D3D2D1D0PCON87H第第4.3 串行通信串行通信最 高 位 SMOD为 串 行 口 波 特 率 系 数 控 制 位,当SMOD=1时,方式1、2、3的波特率加倍。2
19、.串行接口的工作方式串行口有4种工作方式,它是由SCON中的SM0、SM1来定义的,如表45所示。表45串行口的工作方式第第4.3 串行通信串行通信1)方式0串行接口的工作方式0为8位的同步移位寄存器方式,其波特率是固定的,为fosc(振荡频率)的1/12。用于扩展并行I/O接口,一帧8位,无起始位和停止位。方式0发送:数据从RXD引脚串行输出,TXD(P3.1)引脚输出同步脉冲。当1个数据写入串行口发送缓冲器时,串行口将8位数据以fosc/12的固定波特率从RXD引脚输出,从低位到高位。发送完后置中断标志TI为1,呈中断请求状态,在再次发送数据之前,必须用软件将TI清0。第第4.3 串行通信
20、串行通信发发送送时时序序写入写入SBUFRXD输出输出TXDTID0D1D2D3D4D5D6D7写写REN=1RI=0RXD输入输入RI 接接收收时时序序(a)(b)图423串行口方式0的发送、接收时序图第第4.3 串行通信串行通信方式0接收在满足REN=1和RI=0的条件下,串行口处于方式0输入。此时,RXD为数据输入端,TXD为同步信号输出端,接收器也以fosc/12的波特率采样RXD引脚输入的数据信息。当接收器接收完8位数据后,置中断标志RI=1请求中断,在再次接收之前,必须用软件将RI清0。第第4.3 串行通信串行通信在方式0工作时,必须使SCON寄存器中的SM2位为“0”。方式0发送
21、或接收完8位数据后由硬件置位TI或RI中断请求标志,CPU在响应中断后要用软件清除TI或RI标志。若串行口要作为并行口输入输出扩展,这时必须设置“串入并出“或”并入串出”的移位寄存器来配合使用(如CD4094或CD4014等)。例如将串行口作为并行输出口使用时,可采用如图423、24所示的方法。第第4.3 串行通信串行通信图423一种串行转换为并行的方法第第4.3 串行通信串行通信图424一种串行转换为并行的方法第第4.3 串行通信串行通信2)方式1在方式1时,串行口被设置为波特率可变的8位异步通信接口。方式1发送:串行口以方式1发送时,数据位由TXD端输出,发送1帧信息为10位,其中1位起始
22、位、8位数据位(先低位后高位)和一个停止位“1”。CPU执行1条数据写入发送缓冲器SBUF的指令(如指令MOV SBUF,A),就启动发送器发送。当发送完数据,就置中断标志TI为1。方式1所传送的波特率取决于定时器T1的溢出率和特殊功能寄存器PCON中SMOD的值,即方式1的波特率=(2SMOD/32)定时器T1的溢出率。第第4.3 串行通信串行通信方式1接收:数据从RXD端输入。当允许输入位REN置1后,接收器便以波特率的16倍速率采样RXD端电平,当采样到1至0的跳变时,启动接收器接收,并复位内部的16分频计数器,以实现同步。计数器的16个状态把1位时间等分成16份,并在第7、8、9个计数
23、状态时,采样RXD电平。因此,每一位的数值采样三次,至少两次相同的值才被确认。在起始位,如果接收到的值不是0,则起始位无效,复位接收电路。在检测到一个1到0的跳变时,再重新启动接收器,如果接收值为0,起始位有效,则开始接收本帧的其余信息。在RI=0的情况下,接收到停止位为1时(或SM2=0),将停止位送入RB8,8位数据进入接收缓冲器SBUF,并置RI=1中断标志。第第4.3 串行通信串行通信第第4.3 串行通信串行通信在方式1的能将接收的数据送入接收数据缓冲器SBUF和RB8,且置位RI的条件是:(1)RI=0;(2)SM2=0或接收到的停止位=1。以上两个条件任一条件不满足,将不可恢复地丢
24、失所接收到的这一帧数据。在同时满足RI=0;SM2=0或接收到的停止位=1两个条件时,接收数据有效,实现装载SBUF、RB8及RI置1。接收一帧之后,不论上述两个条件是否满足,接收控制器再次采样RXD的负跳变,以便接收下一帧数据。第第4.3 串行通信串行通信3)方式2、3串行口工作在方式2、3时,为9位异步通信口,发送、接收一帧信息由11位组成:即起始位1位(0)、数据8位(低位在先)、1位可编程位(第9位)和1位停止位(1)。发送时,可编程位(TB8)可设置0或1,接收时,可编程位送入SCON中的RB8。方式2、3的区别在于:方式2的波特率为fosc/32或fosc/64,即fosc/(64
25、/2smod)。而方式3的波特率可变。附加的第9位数据为SCON中的TB8,它由软件置位或清0,可作为多机通信中地址/数据信息的标志位,也可作为数据的奇偶校验位。第第4.3 串行通信串行通信发送:CPU执行一条写入SBUF的指令后,便立即启动发送器发送,送完一帧住信息时,置中断标志TI=1。其时序如图a所示。第第4.3 串行通信串行通信接收:与方式1类似。当REN=1时,CPU开始不断地对RXD采样,采样速率为波特率的16倍,当检测到负跳变后启动接收器,位检测器对每位采集3个值,用采3取2的方法来确定每位状态。当采至最后一位时,将8位数据装入SBUF,第9位数据装入RB8并置RI=1。其时序如
26、图b所示。同样,方式2、3中能将接收的数据送入接收数据缓冲器SBUF和RB8,且置位RI的条件是:(1)RI=0;(2)SM2=0或接收到的第9位=1。第第4.3 串行通信串行通信3.串行通信的波特率串行通信的4种工作方式对应着3种波特率。(1)对于方式0,波特率是固定的,为单片机时钟的十二分之一,即fosc/12。(2)对于方式2,波特率有两种可供选择,即fosc/32和fosc/64。对应于以下公式:第第4.3 串行通信串行通信(3)对于方式1和方式3,波特率都由定时器T1的溢出率来决定,对应于以下公式:波特率=(2SMOD/32)(定时器T1的溢出率)而定时器T1的溢出率则和所采用的定时
27、器工作方式有关,并可用以下公式表示:定时器T1的溢出率=fosc/(12(2n-X)其中X为定时器T1的计数初值,n为定时器T1的位数,对于定时器方式0,取n=13;对于定时器方式1,取n=16;对于定时器方式2、3,取n=8。第第4.3 串行通信串行通信表46常用波特率和定时器T1初值第第4.3 串行通信串行通信4.4.2 多机通信多机通信方式2、3中能将接收的数据送入接收数据缓冲器SBUF和RB8,且置位RI的条件是:(1)RI=0;(2)SM2=0或(SM2=1和接收到的第9位=1。)利用这一特点可用于多机通信中第第4.3 串行通信串行通信多机通信的过程:多机通信的过程:系统初始化时,将
28、所有从机的SM2均置1,并处于允许串行口(中断)(中断)接收的状态。对于主机对于主机:主机欲与某从机通信,先向所有从机发出从机的地址地址,接着才发送命令或数据。在主机发送地址时,置第9位数据(TB8)为1,表示主机发送的是地址帧;然后将第9位数据(RB8)清0,再发送命令或数据。对于从机对于从机:由于SM2=1,所有将响应主机发来的第9位数据(RB8)为1的地址信息。若从机接收的地址与本从机的地址相同,则地址相同的从机将SM2置0,继续接收主机送来的命令或数据。若从机的地址与主机送来地址不相同,则该从机SM2继续为1,不接收主机送来的命令或数据。第第4.3 串行通信串行通信4.4.3串行通信应
29、用举例串行口方式1和方式3都是异步通信方式,方式1为8位数据位,方式3为9位数据位,两种方式的波特率都是受定时器T1的溢出率控制。在用方式1或方式3实现串行异步通信时,初始化程序要设定串行口的工作方式,并对定时器T1实现初始化,即设定定时器方式和定时器初值。此外,还要编写发送子程序和接收子程序。第第4.3 串行通信串行通信例1:串行口按双工方式收发ASCII码字符,最高1位用来作奇偶校验位,采用奇校验方式,要求传送的波特率为1200波特。假设发送缓冲区首址为20H,长度为10H;接收缓冲区首址为40H,时钟频率fosc=6MHz,试编写有关的通信程序。解:7位ASCII码加1位奇校验共8位数据
30、,故可采用串行口工作方式1。51单片机的奇偶校验位P是当累加器A中“1”的个数为奇数时P=1;为偶数时P=0。如果直接把P的值放入ASCII码的最高位(奇偶校验位),恰好成了偶校验,与要求不符。因此要把P值取反后再放入ASCII码的最高位,才是要求的奇校验。第第4.3 串行通信串行通信定时器T1采用工作方式2,可以避免计数溢出后用软件重装定时初值。先计算定时器T1的初值,取SMOD=0,可算出:定时器T1的溢出率=波特率32/2SMOD=120032/20=38400然后:定时器T1的溢出率=fosc/(12(2n-X)可求出其对应的计数初值为X=2n-(fosc/T1的溢出率12)=28-(
31、6106/3840012)=243=0F3H(TH1)=0F3H,(TL1)=0F3H确定特殊功能寄存器SCON的值:SM0、SM1=01时为方式1,在SM2=0和REN=1条件下,允许接收数据,其余各位均取0。则SCON=01010000B=50H第第4.3 串行通信串行通信图424全双工串行连接图第第4.3 串行通信串行通信对于PCON:于SMOD=0,所以PCON=00H(同系统复位以后的状态,可不赋值)。对于TMOD:由于只用T1,且为定时方式2,所以TMOD=00100000B=20H主程序:MOVTMOD,20H;定时器T1设为方式2MOVTL1,0F3H;装入定时器初值MOVTH
32、1,0F3H;8位重装值第第4.3 串行通信串行通信SETBTR1;启动定时器T1MOVSCON,50H;串行口设为方式1;REN=1MOVR0,20H;发送缓冲区首址MOVR1,40H;接收缓冲区首址SETBEA;开中断SETBES;允许串行口中断LCALLSOUT;先输出1个字符SJMP$;等待中断第第4.3 串行通信串行通信中断服务程序:ORG0023H;串行中断入口LJMPSBR1;转至中断服务程序SBR1:JNBR1,SEND;不是接收则转LCALLSIN;是接收,则调用接收子程序SJMPNEXT;转至统一出口SEND:LCALLSOUT;是发送,则调用发送子程序NEXT:RETI;
33、中断返回第第4.3 串行通信串行通信发送子程序:SOUT:MOVA,R0;取发送数据到AMOVC,P;奇偶校验位赋于CCPLC;奇校验MOVA.7,C;送入ASCII码最高位中MOVSBUF,A;发送数据INCR0;修改发送数据指针CJNE R0,#30H,S01MOVR0,#20HS01:CLRTI;清发送中断标志RET;返回第第4.3 串行通信串行通信接收子程序:SIN:MOVA,SUBF;读入接收缓冲区内容MOVC,P;取出奇偶校验位CPLC;奇校验应该为0ANLA,7FH;删去奇偶校验位MOVR1,A;存入接收缓冲区INCR1;修改接收缓冲区指针 CJNE R1,#50H,S02S02
34、:MOVR1,#40HCLRRI;清接收中断标志RET;返回第第4.3 串行通信串行通信例2:设有如图424所示的甲、乙两台单片机,以工作方式2、全双工串行通信、每帧为11位、可程控的第9位数据位用于奇偶校验的补偶位(偶校验)。编出能实现如下功能的程序:甲机:每发送1帧信息,乙机对接收的每帧数据进行奇偶校验,若补偶正确,则乙机向甲机发出“数据发送正确”的信息(例中以00H作为回答信号),甲机接收到该回答信号后再发送下1字节;若奇偶校验错,则乙机发出“数据发送不正确”的信息(例中以AAH作为回答信号)给甲机,要求甲机再次发送原数据,直至发送正确。甲机发送128个字节后就停止发送。第第4.3 串行
35、通信串行通信乙机:接收甲机发送来的数据并进行奇偶校验,与此同时发出相应的回答信息(即00H或AAH),直到接收完128个字节为止。解:能实现上述通信要求的甲、乙机的流程图如图425所示。第第4.3 串行通信串行通信图525双工串行口应答式通信流程图(a)甲机发送流程图;(b)乙机发送流程图第第4.3 串行通信串行通信图525双工串行口应答式通信流程图(a)甲机发送流程图;(b)乙机发送流程图第第4.3 串行通信串行通信相应的程序如下:甲机主程序:ORG0000HLJMPMAINT;转至主程序入口处ORG0023H;串行中断入口LJMPINTSE1;转至中断服务程序ORG0030H第第4.3 串
36、行通信串行通信MAINT:MOVPCON,00H;波特率不加倍MOVSCON,90H;置工作方式2并允许接收MOVDPTR,ADDR1;置数据块指针MOVR0,80H;设置发送字节数初值SETBEA;CPU开中断SETBES;允许串行口中断MOVXA,DPTR;取第1个发送数据MOVC,P;奇偶标志位送CMOVTB8,C;奇偶标志位送TB8MOVSUBF,A;发送数据SJMP$;等待中断第第4.3 串行通信串行通信中断服务程序:INTSE1:JBRI,LOOP1;检测是否接收口中断,是则转CLRTI;是发送中断,则先清除该标志SJMPENDT1;转至ENDT1处LOOP1:CLRRI;是接收中
37、断,则先清除该标志MOVA,SBUF;取乙机的应答信息CJNEA,00H,LOOP2;发送不正确转INCDPTR;修改地址指针MOVXA,DPTR;取下1个发送数据第第4.3 串行通信串行通信MOVC,PMOVTB8,C;将奇偶校验位送TB8MOVSUBF,A;启动串行口,发送新的数据DJNZR0,ENDT1;128个数据发送完否?未完转中断返回CLRES;已发送完毕,则禁止串行口中断ENDT1:RETI;中断返回LOOP2:MOVXA,DPTR;准备重发1次数据MOVC,PMOVTB8,C;奇偶校验位送TB8MOVSBUF,A;启动串行口,重发1次数据SJMPENDT1;转至中断返回处第第4
38、.3 串行通信串行通信乙机主程序:ORG0000HLJMPMAINRORG0023HLJMPINTSE2ORG0030H第第4.3 串行通信串行通信MAINR:MOVPCON,00H;波特率不加倍MOVSCON,90H;工作方式2,允许接收MOVDPTR,ADDR2;置数据指针MOVR0,80H;传送128个字节SETBEA;CPU开中断SETBES;允许串行口中断SJMP$;等待中断第第4.3 串行通信串行通信中断服务程序:INTSE2:JNBRI,LOOP6;不是接收中断则转CLRRI;是,则请接收中断标志MOVA,SBUF;接收数据MOVC,P;判奇偶标志JCLOOP4;为奇数时转ORL
39、C,RB8;为偶数时判RB8JCLOOP5;RB8为1时(出错)转第第4.3 串行通信串行通信LOOP3:MOVXDPTR,A;正确时则存入接收的数据MOVA,#00HMOVSBUF,A;发送应答信息00HINCDPTR;修改地址指针DJNZR0,ENDT2;未完,转返回CLRES;已完,则关串行口中断ENDT2:RETI;中断返回LOOP4:ANLC,RB8;为奇数时判RB8JCLOOP3;RB8为1时(正确)转第第4.3 串行通信串行通信LOOP5:MOVA,AAH;出错,则发应答信息AAHMOVSBUF,ASJMPENDT2;转至中断返回处LOOP6:CLRTI;是发送中断,则请TI标志SJMPENDT2;转至中断返回处第第4.3 串行通信串行通信例3、电流环传输电路。第第4.3 串行通信串行通信第第4.3 串行通信串行通信第第4.3 串行通信串行通信作业:Fosc=11.0592MHz,波特率为9600,用定时器/计数器T1在工作方式2,作为波特率发生器。请求出其计数初值。
限制150内