单片机课后习题答案[1]1 联系客服

发布时间 : 星期一 文章单片机课后习题答案[1]1更新完毕开始阅读552798096c85ec3a87c2c51f

定时控制寄存器(TCON)和工作方式控制寄存器(TMOD); 有4种工作方式,分别是: 方式0:13位定时器/计数器 方式1:16位定时器/计数器

方式2:初值自动重新装入的8位定时器/计数器

方式3:仅适用于T0,将其分为两个8位计数器。对T1停止计数

7.80C51 定时器/计数器方式 0 的 13 位计数器初值如何计算?已有方式 1 的 16 位计数为何还需要13位的计数方式?

答: 当TMOD中M1M0 = 00 时,定时器/计数器选定方式 0 进行工作。不妨以定时器/计数器

T0 为例解释。图 6.7 所示为T0 工作在方式 0 下的逻辑结构图(定时器/计数器 1 与其完全一致)。在该工作方式下,TH0的全部8位和TL0的低5位构成13位的加1计数器,计数器的最大值为213

= 8192,而TL0的高3位处于闲置状态,这是出于与MCS-48单片机兼容性的考 虑,因为MCS-48单片机的加1计数器是13位的。 图6.7 定时器/计数器0的工作方式0电路逻辑结构 计数器初值为: N = 8192 - x

计数初值x是TH0、 TL0设定的初值。 x = 8191时为最小计数值l, x = 0时为最大计数值8192,

即计数范围为1~8192(213 )。

8.定时器/计数器作定时用时,定时时间与哪些因素有关?作为计数用时,对外界计数 频率有何限制?

答: 当 80C5l 内部的定时器/计数器被选定为定时器工作模式时,计数输入信号是内部时钟脉冲,此当需要高分辨率的定时,应尽量选用频率较高的晶振(80C5l最高为40 MHz)。 当定时器/计数器用作计数器时,计数脉冲来自外部输入引脚T0 或T1。当输入信号产生 由 1 至 0 的跳变(即负跳变)时,计数器的值增l。每个机器周期的S5P2 期间,对外部输入进行采样。如在第一个周期中采得的值为1,而在下一个周期中采得的值为0,则在紧跟着的再下一个周期S3P1 的期间,计数器加 1。由于确认一次下跳变需要花 2 个机器周期,即 24个振荡周期,因此外部输入的计数脉冲的最高频率为振荡器频率的1/24.例如,选用6MHZ频率的晶体,允许输入的脉冲频率为250kHz, 如果选用12MHz频率的晶体,则可输入500kHz 的外部脉冲。对于外部输入信号的占空比并没有什么限制,但为了确保某一给定的电平在变 化之前能被采样一次,则这个电平至少要保持一个机器周期。

9.定时器 T0 为方式 3 时,由于 TR1 位已经被 T0 占用,如何控制定时器 T1 的开启和关闭? 答: 在工作方式3下,定时器/计数器T0被拆成两个独立的8位计数器TL0和TH0。其中, TL0既可以计数使用,又可以定时使用,定时器/计数器T0的控制位和引脚信号全归它使用。 其功能和操作与方式0或方式1完全相同,而且逻辑电路结构也极其类似,如图6.10所示。 图6.10 工作方式3下定时器/计数器T0被分成两个8位计数器的逻辑结构

与 TL0 的情况相反,对于 T0 的另一半 TH0,则只能作为简单的定时器使用。而且由于 T0 的控制位已被 TL0 独占,因此只好借用定时器/计数器 T1 的控制位 TR1 和 TF1,以计数

溢出去置位TF1,而定时的启动和停止则受TR1的状态控制。

由于 TL0 既能做定时器使用,也能做计数器使用,而 TH0 只能做定时器使用却不能做 计数器使用,因此在工作方式 3 下,定时器/计数器 0 可以构成 2 个定时器或 1 个定时器、1个计数器。 如果定时器/计数器T0已工作在工作方式3下,则定时器/计数器T1只能工作在方式0、方式1或方式2下,它的运行控制位TR1及计数溢出标识位TF1已被定时器/计数器0借用,

图6.11 定时器/计数器方式3的T1结构

在这种情况下定时器/计数器1通常是作为串行口的波特率发生器使用,以确定串行通信 的速率。因为已没有计数溢出标识位TF1可供使用,因此只能把计数溢出直接送给串行口。 当作为波特率发生器使用时,只需设置好工作方式,便可自动运行。如果要停止工作,只需 送入一个把它设置为方式3的方式控制字就可以了, 因为定时器/计数器1不能在方式3下使用,如果硬把它设置为方式3,则停止工作。

10.用80C51的定时器测量某正单脉冲的宽度,采用何种方式可以得到最大量程?若单 片机晶振频率为12MHz,求允许测量的最大脉冲宽度是多少?

答: 当80C5l内部的定时器/计数器被选定为定时器工作模式时,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲位,计数器增 l。将定时器 0 或 1 设置为工作方式 1,即 16位定时器方式,并且计数初值设置为0x0000,计满65536定时脉冲后溢出,此时可以得到最大量程。

当采用12MHz频率的晶体时,每个机器周期为1μs, 测量的最大脉冲宽度也是65536μs。 11.80C51 单片机系统中,已知单片机晶振频率为 6MHz,选用定时器 0 以方式 3 产生 周期为400μs的等宽正方波连续脉冲,请编写由P1.1口输出此方波的程序。 解: 示例程序如下: #include \ sbit rect_wave=P1^1; void time_over(void); void main(void){ TMOD=0x03; TL0=160; IE=0x00; TR0=1; for(;;){

if(TF0)time_over(); } }

void time_over(void) {

TF0=0; TL0=160;

rect_wave=!rect_wave; }

12.串行通信操作模式有哪几种?各有什么特点?

答: 串行通信操作模式有2种,异步串行通信和同步串行通信。

异步串行通信(以下简称为异步通信)所传输的数据格式(也称为串行帧)由1个起始 位、7 个或 8 个数据位、1~2 个停止位(含 1.5 个停止位)和 1 个校验位组成。起始位

约定为0,空闲位约定为1。在异步通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的。图6.17所示为异步通信方式和异步通信数据格式示意图,数据格式是1个起始位、8个数据位、1个停止位,所传输的数据是35H(00110101)。 图6.17 异步通信方式和异步通信数据格式示意图

异步通信的实质是指通信双方采用独立的时钟,每个数据均以起始位开始、停止位结束, 起始位触发甲乙双方同步时钟。每个异步串行帧中的1位彼此严格同步,位周期相同。所谓 异步是指发送、接收双方的数据帧与帧之间不要求同步,也不必同步。

同步串行通信(以下简称为同步通信)中,发送器和接收器由同一个时钟源控制。而在 异步通信中,每传输一帧字符都必须加上起始位和停止位,占用了传输时间,在要求传送数 据量较大的场合,速度就会慢得多。同步传输方式去掉了这些起始位和停止位,只在传输数 据块时先送出一个同步头(字符)标识即可。图6.18所示为同步通信方式和同步通信数据格式示意图。由图6.18可知,同步通信所传输的数据格式(也称同步串帧)是由多个数据构成的,每帧有2个同步字符作为起始位以触发同步时钟开始发送或接收数据。空闲位需发送同步字符。因此,同步是指发送、接收双方的数据帧与帧之间严格同步,而不只是位与位之间严格同步。

图6.18 同步通信方式和同步通信数据格式示意图

同步传输方式比异步传输方式速度快,这是它的优势。但同步传输方式也有其缺点,即 它必须要用一个时钟来协调收发器的工作,所以它的设备也较复杂。

由上所述可以得到推论:异步通信比较灵活,适用于数据的随机发送/接收,而同步通信 则是成批数据传送的。异步传输一批数据,因为每个字节均有起始位和停止位控制而使发送/接收速度有所降低,一般适用于每秒50~19200位, 而同步传输速度较快,可达每秒80万位。

13.异步串行通信时,通信双方应遵守哪些协定?一帧信息包含哪些内容?

答: 异步串行通信(以下简称为异步通信)所传输的数据格式(也称为串行帧)由1个起始位、7 个或 8 个数据位、1~2 个停止位(含 1.5 个停止位)和 1 个校验位组成。起始位约定为0,空闲位约定为1。在异步通信方式中,接收器和发送器有各自的时钟,它们的工作非同步的。

图6.17所示为异步通信方式和异步通信数据格式示意图,数据格式是1个起始位、8个 数据位、1个停止位,所传输的数据是35H(00110101)。 图6.17 异步通信方式和异步通信数据格式示意图

14.串行通信时会出现哪些错误?用什么方法检查这些错误?

答: 异步通信时可能会出现帧格式错、超时错等传输错误。在具有串行口的单片机的开发中,应考虑在通信过程中对数据差错进行校验,因为差错校验是保证准确无误通信的关键。 常用差错校验方法有奇偶校验(80C51系列单片机编程采用此法)、和校验及循环冗余码 校验。

15.80C51 串行通信有哪几种工作方式?当并行口不够用时,如何实现串行口作并行口 使用?

答: 80C51串行通信有4工作方式,方式0~方式3

方式0下,串行口作为同步移位寄存器使用。这时用RXD(P3.0)引脚作为数据移位的 入口和出口,而由TXD(P3.1)引脚提供移位脉冲。移位数据的发送和接收以8位为一帧, 不设起始位和停止位,低位在前高位在后,利用这一特点,当并行口不够用时,可以通过串 行口扩展并行口。具体方法见主教材P214~P215。

16.什么是波特率?如何计算和设置80C51串行通信的波特率。

答: 波特率是串行通信中一个重要概念。波特率BR是单位时间传输的数据位数,即单位

bps(bit per second),1bps = 1bit/s。波特率的倒数即为每位传输所需的时间。由上面介绍的异步串行通信原理可知,互相通信甲乙双方必须具有相同的波特率,否则无法成功的完成数 据通信。发送和接收数据是由同步时钟触发发送器和接收器而实现的。发送/接收时钟频率与波特率有关,即: fT/R = n×BRT/R

式中,fT/R为发/收时钟频率,单位为Hz;BRT/R为发/收波特率,单位为bps;n为波特率因子。 同步通信n = 1。异步通信n可取1、16或64。也就是说,同步通信中数据传输的波特率即为同步时钟频率,而异步通信中,时钟频率可为波特率的整数倍。

① 方式0时波特率是固定的,为单片机晶振频率的1/12,即BR = fosc/12。如果晶振频率 用fosc表示,按此波特率也就是一个机器周期进行一次移位。当fosc = 6MHz时,波特率为500kbps,即2μs移位一次;当fosc = 12MHz时,波特率为1Mbps,即1μs移位一次。 ② 方式 2 的波特率也是固定的,且有两种:一种是晶振频率的 1/32,另一种是晶振频 率的1/64,即fosc/32和fosc/64。例如,用公式表示为: BR = 2SMOD×fosc/64 式中,SMOD为PCON寄存器最高位的值,SMOD = 1表示波特率加倍。

③ 方式 1 和方式 3 的波特率是可变的,其波特率由定时器 1 的计数溢出(对 80C52 来 说,也可以使用定时器2的计数溢出)决定,公式为: BR = (2SMOD×Td) /32 式中,SMOD 为 PCON 寄存器最高位的值,SMOD = 1 表示波特率加倍。而定时器 1 溢出率计算公式为: T = fosc/[12×(256-TH1)]

使用定时器1的计数溢出,方式1和方式3的常用波特率如表6.16所示。 表6.16 方式1和方式3的常用波特率

fosc=6MHz fosc=12MHz fosc=11.0592MHz 串行口工 作方式 波 特 率

SMOD TMOD TH1 SMOD TMOD TH1 SMOD TMOD TH1 57600 1 20 FFH 方式1或方式3 28800 1 20 FEH 19200 1 20 FDH 9600 0 20 FDH

4800 1 20 F3H 0 20 FAH

2400 1 20 F3H 0 20 F3H 0 20 F4H 1200 1 20 E6H 0 20 E6H 0 20 E8H 600 1 20 CCH 0 20 CCH 0 20 D0H 300 0 20 CCH 0 20 98H 0 20 A0H

从表6.16中可以看出,当选择晶振fosc=11.0592MHz时, 波特率最为齐全, 如无特别要求,通常在80C51单片机系统中选择晶振频率为11.0592MHz。

设置定时器 2 为波特率发生器工作方式,定时器 2 的溢出脉冲经 16 分频后作为串行口 发送脉冲、接收脉冲。发送脉冲、接收脉冲的频率称为波特率。其计算公式如下: osc BR

32 [65536 (RCAP2H,RCAP2L)] f = ×?

17.串行口控制寄存器SCON中TB8、RB8起什么作用?在什么方式下使用?