单片机课后习题答案 下载本文

RLC A MOV @R0,A INC R0 DJNZ R6,LOOP3 ;2字节二进制数左移1位 MOV R5,#3 ;BCD码字节数 MOV R1,#50H LOOP4: MOV A,@R1 ADDC A,@R1 ;BCD码乘2加C运算 DA A MOV @R1,A INC R1 DJNZ R5,LOOP4 DJNZ R7,LOOP2 SJMP $ END

41.波特率、比特率和数据传送速率的含义是什么? 解:

为了衡量串行通信的速度,应该有一个测量单位,在数据通信中,描述数据传送速度的方式有3种: 波特率定义为每秒传送信号的数量,单位为波特(Baud)。比特率定义为每秒传送二进制数的信号数(或每秒传送二进制码元的个数),单位是bps(bit per second)或写成b/s(位/秒)。数据传送速率(或字符传送速率)定义为每秒传送多少个字符(或单位时间内平均数据传移速率,单位是字符/秒。

在串行通信中,传送的信号可能是二进制、八进制或十进制等。只有在传送的信号是二进制信号时,波特率才与比特率数值上相等。而在采用调制技术进行串行通信时,波特率是描述载波信号每秒钟变化为信号的数量(又称为调制速率)。在这种情况下,波特率与比特率在数值上可能不相等。

42.什么是串行异步通信?它有哪些特征?

解:

异步通信中,接收器和发送器有各自的时钟,数据常以字符为单位组成字符帧传送,用一帧来表示一个字符,其字符帧的数据格式为:在一帧格式中,先是一个起始位“0”(低电平),然后是5~8个数据位,规定低位在前,高位在后,接下来是1位奇偶校验位(可以省略),最后是1~2位的停止位“1”(高电平)。 异步通信的优点是不需要传送同步脉冲,可靠性高,所需设备简单;缺点是字符帧中因包含有起始位和停止位而降低了有效数据的传输速率。

43.单片机的串行接口由哪些功能部件组成?各有什么作用? 解:

MCS-51单片机的串行接口由发送缓冲器SBUF、发送控制器、接收缓冲器SBUF、输入移位寄存器、接收控制器、波特率发生器等部件组成。

发送缓冲器SBUF用于存放将要发送的数据,接收缓冲器SBUF用于存放接收的数据,输入位移寄存器用于接收缓冲并实现串/并转换,发送/接收控制寄存器用于控制串行口的工作,波特率发生器用于控制串行口发送/接收数据的速度。 44.简述串行接口接收和发送数据的过程。 解:

串行接口的接收和发送是对同一地址(99H)两个物理空间的特殊功能寄存器SBUF进行读或写的。当向SBUF发\写\命令时(执行\,A\指令),即向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完使发送中断标志位TI=1。在满足串行接口接收中断标志位RI(SCON.O)=0的条件下,置允许接收位REN(SCON.4)=1,就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使R1=1。当发读SBUF命令时(执行\A,SBUF\指令),便从接收缓冲器SBUF读取信息通过80C5l内部总线送CPU。

45.8051串行接口有几种工作方式?有几种帧格式?各工作方式的波特率如何确定?

21

解:

串行口有四种工作方式:方式0(8位同步移位寄存器),方式1(10位异步收发),方式2(11位异步收发),方式3(11位异步收发)。

字符帧的数据格式为:在一帧格式中,先是一个起始位“0”(低电平),然后是5~8个数据位,规定低位在前,高位在后,接下来是1位奇偶校验位(可以省略),最后是1~2位的停止位“1”。两个字符帧之间可以有空闲位,也可以无空闲位。

在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率(T1溢出信号的频率)控制。各种方式的通信波特率如下:

① 方式0的波特率固定为系统晶振频率的1/12,其值为fosc/12。 其中:fosc——系统主机晶振频率

② 方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示:

波特率=(2SMOD/64)×fosc

即:当SMOD=1时,波特率为fosc/32,当SMOD=0时,波特率为fosc/64

③ 方式1和方式3的波特率由定时器T1的溢出率控制。因而波特率是可变的。 定时器T1作为波特率发生器,相应公式如下:

波特率=(2SMOD/32)×定时器T1溢出率 T1溢出率=T1计数率/产生溢出所需的周期数

K

=(fosc/12)/(2?TC)

式中:K——定时器T1的位数

TC——定时器T1的预置初值

46.简述单片机多机通信的原理。 解:

当一片80C51(主机)与多片80C51(从机)通信时,

① 主机的SM2位置0,所有从机的SM2位置1,处于接收地址帧状态。 ② 主机发送一地址帧,其中,8位是地址,第9位为地址/数据的区分标志,该位置1表示该帧为地址帧。

③ 所有从机收到地址帧后,都将接收的地址与本机的地址比较。对于地址相符的从机,使自己的SM2位置0(以接收主机随后发来的数据帧),并把本站地址发回主机作为应答;对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据帧不予理睬。

④ 从机发送数据结束后,要发送一帧校验和,并置第9位(TB8)为1,作为从机数据传送结束的标志。

⑤ 主机接收数据时先判断数据接收标志(RB8),若接收帧的RB8=0,则存储数据到缓冲区,并准备接收下帧信息。若RB8=1,表示数据传送结束,并比较此帧校验和,若正确则回送正确信号00H,此信号命令该从机复位(即重新等待地址帧);若校验和出错,则发送0FFH,命令该从机重发数据。

⑥ 主机收到从机应答地址后,确认地址是否相符,如果地址不符,发复位信号(数据帧中TB8=1);如果地址相符,则清TB8,开始发送数据。 ⑦ 从机收到复位命令后回到监听地址状态(SM2=1)。否则开始接收数据和命令。 47.在微机与单片机构成的测控网络中,提高通信的可靠性要注意哪些问题?

解:

在微机与单片机构成的测控网络信中,对于串行口数据传输接口的抗干扰能力,在不超过接口标准指定的适用范围时,都具有一定的抗干扰能力,以保证信号传输的可靠性。但在一些工业测控系统中,通信环境往往十分恶劣,就必须充分考虑通信的抗干扰能力,以保证通信的可靠性。

(1)选择合适的通信标准。例如:长距离传输采用RS-485标准能有效抑制功模干扰,采用20Ma电流环可以降低信号对各种电器噪声的敏感程度。

(2)在高噪声环境下使用光纤传输介质在高噪声环境下可以有效减少噪声干扰。 (3)采用光电隔离技术可以提高系统的安全性和可靠性

22

(4)在发送器输出接口采用限流电路或在发送器输出端外接电容器,可以有效抑制数据传输过程中的串扰。

(5)采取降低发送端数据速率的方法可以减少接收端接收数据益处的错误。

48.某异步通信接口按方式3传送,已知其每分钟传送3600个字符,计算其传送波特率。 解:11(位)×3600(字符/分钟)=39600b/分钟=660b/s (方式3为每个字符11位)。

49.利用8051串行口控制8位发光二极管工作,要求发光二极管每1s交替地亮、灭,画出电路图并编写程序。 解:

主程序框图如下: 串口初始化 FFH送SBUF 设 标 志 调延时程序 标志位取反 标志为1 FF送SBUF 标志为零 标志为零 OOH送SBUF 程序如下:

ORG 0040H

MOV SCON,#00H MOV SBUF,#0FFH SETB C

MOV 00H,C

AA: ACALL DELAY

CPL 00H MOV C,00H JC BB

MOV SBUF,#00H SJMP CC

BB:MOV SBUF,#0FFH CC:AJMP AA DELAY: MOV R7,#8

D1:MOV R6,#250 D2:MOV R5,#250 D3:DJNZ R5,D3

DJNZ R6,D2 DJNZ R7,D1 RET

23

END

50.试编写一串行通信的数据发送程序,发送片内RAM的20H~2FH单元的16字节数据,串行接口方式设定为方式2,采用偶校验方式。设晶振频率为6MHz。

解:

采用查询方式编写发送程序如下:

ORG 0000H LJMP START ORG 0030H START:MOV SP,#60H

MOV SCON,#80H ;设定方式2发送

MOV PCON,#80H ;波特率为fOSC/32 MOV R0,#20H ;给待发送数据块地址指针R0置初值 MOV R7,#16 ;给数据块长度计数器R7置初值 CLR TI ;清TI标志位

LS: MOV A,@R0 ;取一字节数据送A MOV C,P ; A中有奇数个“1”时,P置“1” MOV TB8,C ; P→TB8,作为奇偶校验位 MOV SBUF,A ;启动发送 JNB TI,$ ;查询发送标志,等待一字节发送完 CLR TI ;清TI标志位 INC R0 DJNZ R7,LS RET END

51.试编写一串行通信的数据接收程序,将接收到的16字节数据送入片内RAM 30H~3FH单元中。串行接口设定为方式3,波特率为1200bps,晶振频率为6MHz。 解:

程序如下:

START:

否则有错

PN: RIG:

24

ORG 0000H LJMP START ORG 0100H MOV SP,#60H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1

MOV SCON,#0D0H MOV R0,#30H MOV R7,#16 JNB RI,$ CLR RI

MOV A,SUBF JN BP,PN JNB LJMP JB MOV

RB8,PER RIG

RB8,PER @R0,A

;设定T1为模式2定时 ;送时间常数

;启动定时器T1

;串行接口设定为方式3,并允许接收

;查询等待接收

;从串行接口中读取数据

;对该字节进行查错处理若P=RB8无错,;若P=1,RB8=0,有错,转出错处理 ;若P=1,RB8=1,无错,转保存数据 ;若P=0,RB8=1,有错,转出错处理 ;若P=0,RB8=0,无错,保存接收到的数

;16字节未接收完,则继续

INC R0

DJNZ R7,LOOP