【7-5】在80C51的应用系统中时钟频率为6 MHz,现需要利用定时器/计数器T1产生波特率为1200,请计算T1初值,实际得到的波特率的误差是多少?
【答】使用串行方式1,T1为定时器方式2,利用公式即得定时器装人值:
取TC=243,则 : .
误差为: .
(1201.9 2-1200)÷1200)/1200=0.16%
【7-6】简述串行通信接口芯片UART的主要功能。
【答】通用异步接收发送器UART的主要功能是完成数据转换,数据发送端要把并行数据转换为串行数据;而在数据接收端,要把串行数据转换为并行数据。 全双工的异步串行通信接口,是指该接口可以同时进行接收和发送数据,因为口内的接收缓冲器和发送缓冲器在物理上是隔离的,即是完全独立的。
【7-7】假定异步串行通信的字符格式为1个起始位、8个数据位(其最高位为奇校验位)、2个停止位,请画出传送ASCII字符A的格式。 【答】字符A的ASCII码为1000001 B,因此,其奇偶校验位P为0,把P值变反后送入ASCII码最高位。起始位=0,停止位=1。串行通信时,先传送字符的低位。传送ASCII字符A的输出波形如图7—1所示。
【7-8】8OC51单片机的串行口共有哪几种工作方式?各有什么特点和功能?
【答】80G51单片机的串行口共有4种工作方式,由串行口控制寄存器SCON中的SM0和 SM1两位共同决定。
1.串行口方式0——同步移位寄存器方式 SM0=0,SM1=0。 ‘
·数据传输波特率固定为.fosc/12。 ·由RXD引脚输入或输出串行数据。 ·由TXD引脚输出同步移位时钟。
·接收/发送的一帧信息是8位数据,传输时低位在前。 2.串行口方式1--8位UART SM0=0,SM1=1。
? 数据传输波特率由定时器/计数器T1的定时溢出决定,可用程序设定。定时器/计数器T1作为串行口接收和发送的波特率发生器。 ? 由TXD引脚发送串行数据。 ? 由RXD引脚接收串行数据。 ·发送或接收一帧信息为10位:1位起始位(0)、8位数据位(低位在前)和1位停止位(1)。 3.串行口方式2和3 9位UARI’ ‘
·当SM0=1,SM1=0 时,串行口选择方式2;当SM1=1,SM0=1时,串行口选择方式3。
·方式2的波特率是固定的,为振荡器频率的1/32或1/64。方式3的波特率则由定时器/计数器T1的定时溢出决定,可用程序设定。 ·由TXD引脚发送串行数据。
·由RXD引脚接收串行数据。
·发送或接收一帧信息为11位:1位起始位“O”、8位数据位(低位在前)、1位可编程位和1位停止位“1”。发送时可编程位TB8可设置为1或O,接收时可编程位进入SCON寄存器的RB8位。
【7—9】8OC51单片机的串行口设为方式1,当波特率为9600 bit/s时,每分钟可以传送多少字节7 . 【答】对于80C51的串行口设为方式1,当波特率为9600 bit/s 时,每分钟可以传送57 600字节。说明:串行口为方式1时,作10位 UART用,每秒钟传送字节为9600÷10=960,即每分钟传送字节为960*60=57600。
【7-10】按照信号传输的方向和同时性,一般把传送方式分为哪几类? 【答】一般把传送方式分为单工方式、半双工方式和全双工方式三种。
①单工方式,即信号(不包括联络信号)在信道中只能沿一个方向传送,而不能沿相反方 向传送的工作方式。 ②半双工方式,即通信的双方均具有发送和接收信息的能力,信道也具有双向传输性能, 但是,通信的任何一方都不能同时既发送信息又接收信息,即在指定的时刻,只能沿某一个方
向传送信息。
③全双工方式,即信号在通信双方之间沿两个方向可以同时传送,任何一方在同一时刻 既能发送又能接收信息。
【7-11】串行通信有哪几种常用的通信数据的差错检测方法?试举例说明。 【答】串行通信常用的通信数据的差错检测方法有两种。 ①奇偶校验。奇偶校验码是一种最简单的检错码,又可分为奇数校验码和偶数校验码两 种。它是在n-1位信息码(an-1,an-2,?,a2,a1)后面附加一位校验码Co,使码中的1(或0)的数目保持为奇数个或偶数个。奇校验是指无论它的信息码有多少位,校验码只有一位,它使码字中1的数目为奇数;偶校验是指无论它的信息码有多少位,校验码只有一位,它使码字中1的数目为偶数。奇偶校验码能检测出一个码字内的奇数个错误,但不能发现偶数个错误,也不能纠正错误。 ②累加和校验。累加和校验码的编码方法是对各行的码字进行无进位的算术累加,将最 后的累加和也作为数据进行通信。采用累加和校验码可以避免奇偶校验码不能检测出的错 误。可以发现几个连续位的差错。
累加和的加运算可以有两种方法:第一种方法是逻辑加,即按位加,可采用异或操作指令XOR;第二种方法是算术加,即按字节加,但不考虑进位,采用加法指令ADD。 【7-12】80C51单片机的串行口按工作方式1进行双机串行数据通信。假定波特率为2400 bit/s,甲机传送数据50个,乙机接收数据50个。请编写全双工通信程序。对源程序加以注释和伪指令。fosc=6 MHz。
【答】波特率的计算:以定时器T1的方式2制定波特率。 计算定时器T1的计数初值: 1.甲机发送程序
例如:将以片内RAM2 0 H的内容为首地址的5 O个数据块内容,通过串行口传至乙机。 ORG 0000H SJMP TRANS
ORG 0030H
TRANS~ MOV TMOD,#20H ;置定时器/计数器T1为定时器方式2 MOV TLI,#0FAH ;置T1定时常数(串行口波特率为2400 bit/s) MOV THI,#0FAH
SETB EA ;允许中断 CLR ES ;关串行口中断
MOV PCON,#00H ;波特率不倍增 CLR TI ;清发送中断
MOV SCON,#40H ;置串行口方式1 MOV R0,#20H ;数据区首地址 MOV R1,#50 ;数据区长度 MOV A,RI .
MOV SBUF,A ;发送长度 JNB TI,$ CLR TI
LOOP: MOV A,@R0 ;输出数据 CLR TI
MOV SBUF,A
JNB TI,$ ;判发送是否完成 INC R0
DJNZ R1,LOOP
SJMP $ ;结束发送 2.乙机接收程序
乙机通过RXD引脚接收甲机发来的数据,接收波特率与甲机一样。接收的第一字节是 数据块的长度,接收到的数据依次存人数据块首地址开始的存储器中。 ORG 0000H
SJMP RECEIVE ;乙机接收 ORG 0030H
RECEIVE: MOV TMOD,#20H ;设定时器/计数器T1为定时器方式2 MOV TLI,#0FAH ;置T1定时常数 MOV THI,#0FAH
SETB EA ;允许中断 CLR ES ;关串行口中断 CLR RI ;清接收中断
MOV SCON,#50H ;置串行口方式1,接收 MOV PCON,#00H ;波特率不倍增
MOV R1,#20H ;存入数据区首地址 JNB RI,$ , CLR RI . MOV A,SBUF
MOV R0,A ;接收数据长度
LOOP: JNB R工,LOOP ;接收数据 CLR RI
MOV A,SBUF
MOV @R1,A ;将数据送入片外RAM INC R1
DJNZ RO.LOOP SJMP $ END
【7-13】8OC51单片机的串行口按工作方式3进行串行数据通信。假定波特率为1200 bit/s,第9数据位TB8作奇校验位,连续发送50个数据,待发送数据存在内部RAM的30 H开始的连续单元中。请编写数据通信程序,对源程序加以注释和加上伪指令。 【答】程序如下:
ORG 0000H
MOV TMOD,#20H ;设定时器/计数器T1为定时器、方式2 MOV TLI,#0E8H ;设Tl时间常数 MOV THI,#0E8H
MOV SCON,#I 1 00 000 0B ;设串行口为方式3 ‘ MOV R0,#3 0H ;设发送数据区首址 MOV R7,#5 0 ;发送5 0个数据 LOOP: MOV A,@R0 ;取数据 MOV c,P ;设奇校验位 CPL C MOV TB8,C
MOV SBUF,A ;带校验位发送 - JNB TI,$ ;查询发送等待 CLR TI . INC R0
DJNZ R7,LOOP ;循环 ERRE: SJMP HERE END
【7-1 4】某应用系统由5台8OC51单片机构成主从式多机系统,请画出硬件连接示意图,简述主从式多机系统工作原理。
【答】80C51主从式多机系统示意图如图7-2所示。
80C51单片机主从式多机系统工作原理:串行口方式2和方式3有一专门的应用领域, 即多处理机通信。在串行口控制寄存器SCON中,设有多处理机通信位SM2(SCON.5)。 当串行口以方式2或方式3接收时,若SM2=1,只有当接收到的第9位数据(RB8)为1 时,才将数据送人接收缓冲器SBUF,并使RI置1,申请中断,否则数据将丢失;若SM2=0,则无论第9位数据(RB8)是1还是0,都能将数据装入SBUF,并且发中断。
80C51.单片机多机通信时,主机向从机发送的信息分为地址和命令或数据两类。主机发送地址帧时,置第9位数据(RB8)为1;主机发送命令或数据帧时,将第9位数据(RB8)清0。
各从机开始多机通信时,SM2位都置为1,都可以响应主机发来的第9位数据(RB8)为1的地址信息。但从机响应中断后,有两种不同的操作:
·若从机的地址与主机点名的地址不相同,则该从机将继续维持SM2为1,从而拒绝接收主机后面发来的命令或数据信息,不会产生中断,而等待主机的下一次点名。
·若从机的地址与主机点名的地址相同,则该从机将本机的SM2清0,继续接收主机发来的命令或数据,响应中断。 这样,从开始时的一个主机面对多个从机,而发展为一个主机与一个从机的一对一的通 信。当一个主机对一个从机的通信完成后,该从机SM2又被置为1。主机又重新开始呼叫另一个从机,重复上述过程。
【7-1 5】串行通信时为什么需要制定通信规约?主要有哪些内容? 【答】为了保证串行通信的成功和可靠,必需制定通信规约。在进行通信时,单片机与单 片机,单片机与上位机、掌上电脑等都必须严格遵守规定的通信协议和规约。有的是由IEC (国际电工技术委员会)制定的,如ISO--XXX;有的是由国家制定的国标,如GB/T— XXXX--XXXX;也有的是由部或行业制定的部标或行标,如机械行业标准JB/T XXXX— XXXX,电力行业标准DL/T XXX--XXXX等。在国家或行业对该产品或系统没有相关标准时,可由企业自行制定企标。在这些标准中往往对通信的细节进行了规定,一般应有以下 内容: 1.信号传输特性
确定信号信道,对不同的信道提出要求,如: ·有线信道;
·无线信道——红外、无线; , ·电力线载波信道。 2.数据传输可靠性 ·一次通信成功率; ·通信总差错率。 ’ 3.电气接口
·RS一485标准电气接口; ·RS一232标准电气接口。 4.帧格式
帧是传送信息的基本单元,一个帧包括帧同步起始标志符、设备地址域、控制命令域、长度域、数据域、帧校验域以及帧结束标识符,并且需要规定每一个域的长度、格式。比如数据或地址传送时先送高位还是低位,累加和包括哪些字节的和等。 5.差错控制
需要规定采用哪一种校验方式,每个字节是奇校验还是偶校验;帧数据是否需要帧校验; 对于字节奇偶错或帧校验错,是否采取放弃等。 6.传输速率
·缺省起始波特率,设定的默认值。
·标准波特率,如1200 bit/s、2400 bit/s、4800 bit/s和9600 bit/s等。 ·特殊波特率。 7.数据通信格式
应规定数据读命令格式及应答帧格式,数据设置命令及应答帧格式等。在80C5 1单片机的多机通信程序中,曾制定了很简单的通信规约。