第5章思考题及习题5参考答案 一、填空 1.如果采用晶振的频率为3MHz,定时器/计数器Tx(=0,1)工作在方式0、1、2下,其方 式0的最大定时时间为 ,方式1的最大定时时间为,方式2的最大定时 时间为 答:32.768ms,262.144ms,1024μs 2.定时器/计数器用作计数器模式时,外部输入的计数脉冲的最高频率为系统时钟频率 的 答:1/24 3.定时器/计数器用作定时器模式时,其计数脉冲由 提供,定时时间与有 关。 答:系统时钟信号12分频后,定时器初值 4.定时器/计数器T1测量某正单脉冲的宽度,采用 方式可得到最大量程?若时钟 频率为6MHz,求允许测量的最大脉冲宽度为 答:方式1定时,131.072ms。 5.定时器T2有3种工作方式: 和 可通过对寄存器」 中 的相关位进行软件设置来选择。 答:捕捉,重新装载(增计数或减计数),波特率发生器,T2C0N 6.AT89S52单片机的晶振为6Mz,若利用定时器T1的方式1定时2ms,则(TH1)= (TL1)= 答:FCH,18H. 二、单选 1.定时器T0工作在方式3时,定时器T1有 种工作方式。 A.1种 B.2种C.3种 D.4种 答:C 2.定时器T0、T1工作于方式1时,其计数器为 位。 A.8位 B.16位 C.14位 D.13位 答:B 3.定时器TO、T1的GATE1时,其计数器是否计数的条件
第 5 章 思考题及习题 5 参考答案 一、填空 1.如果采用晶振的频率为 3MHz,定时器/计数器 Tx(x=0,1)工作在方式 0、1、2 下,其方 式 0 的最大定时时间为 ,方式 1 的最大定时时间为 ,方式 2 的最大定时 时间为 。 答:32.768ms,262.144ms,1024µs 2.定时器/计数器用作计数器模式时,外部输入的计数脉冲的最高频率为系统时钟频率 的 。 答:1/24 3.定时器/计数器用作定时器模式时,其计数脉冲由 提供,定时时间与 有 关。 答:系统时钟信号 12 分频后,定时器初值 4.定时器/计数器 T1 测量某正单脉冲的宽度,采用 方式可得到最大量程?若时钟 频率为 6MHz,求允许测量的最大脉冲宽度为 。 答:方式 1 定时,131.072ms。 5. 定时器 T2 有 3 种工作方式: 、 和 ,可通过对寄存器 中 的相关位进行软件设置来选择。 答:捕捉,重新装载(增计数或减计数),波特率发生器,T2CON 6. AT89S52单片机的晶振为6MHz,若利用定时器T1的方式1定时2ms,则(TH1)= , (TL1)= 。 答:FCH,18H。 二、单选 1.定时器 T0 工作在方式 3 时,定时器 T1 有 种工作方式。 A.1 种 B.2 种 C.3 种 D.4 种 答:C 2. 定时器 T0、T1 工作于方式 1 时,其计数器为 位。 A.8 位 B.16 位 C.14 位 D.13 位 答:B 3. 定时器 T0、T1 的 GATEx=1 时,其计数器是否计数的条件
A.仅取决于TRx状态 B.仅取决于GATE位状态 C.是由TRx和NTx两个条件来共同控制 D.仅取决于NTx的状态 答:C 4.定时器T2工作在自动重装载方式时,其计数器为 位。 A.8位 B.13位 C.14位 D.16位 答:D 5.要想测量NT0引脚上的正单脉冲的宽度,特殊功能寄存器TMOD的内容应为 A.87HB.09HC.80H D.00H 答:B 三、判断对错 1.下列关于T0、T1的哪些说法是正确的。 A.特殊功能寄存器SCON,与定时器/计数器的控制无关。对 B.特殊功能寄存器TCON,与定时器/计数器的控制无关。错 C.特殊功能寄存器IE,与定时器/计数器的控制无关。错 D.特殊功能寄存器TMOD,与定时器/计数器的控制无关。错 2.定时器T0、T1对外部脉冲进行计数时,要求输入的计数脉冲的高电平或低电平的持 续时间不小于1个机器周期。特殊功能寄存器SC0N与定时器/计数器的控制无关。错 3.定时器T0、T1对外部引脚上的脉冲进行计数时,要求输入的计数脉冲的高电平和低电平 的持续时间均不小于2个机器周期。对 四、简答 1.定时器/计数器T1、T0的工作方式2有什么特点?适用于哪些应用场合? 答:方式2为初值自动装入的8位定时器/计数器,克服了在循环定时或循环计数应用时 就存在用指令反复装入计数初值影响定时精度的问题。 2.THx与TLx(x=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改 后的新值是立即刷新还是等当前计数器计满后才能刷新? 答:THx与TLx(x=O,1)是计数器,其内容可以随时用指令更改,但是更改后的新 值要等当前计数器计满后才能刷新。 3.如果系统的晶振的频率为24Mz,定时器/计数器工作在方式0、1、2下,其最大定时时 间各为多少? 答:晶振的频率为24WMz,机器周期为0.5s
A. 仅取决于 TRx 状态 B. 仅取决于 GATE 位状态 C. 是由 TRx 和 INT x 两个条件来共同控制 D. 仅取决于 INT x 的状态 答:C 4. 定时器 T2 工作在自动重装载方式时,其计数器为 位。 A.8 位 B. 13 位 C.14 位 D. 16 位 答:D 5. 要想测量 INT 0 引脚上的正单脉冲的宽度,特殊功能寄存器 TMOD 的内容应为 。 A.87H B. 09H C.80H D. 00H 答:B 三、判断对错 1.下列关于 T0、T1 的哪些说法是正确的。 A.特殊功能寄存器 SCON,与定时器/计数器的控制无关。对 B.特殊功能寄存器 TCON,与定时器/计数器的控制无关。错 C.特殊功能寄存器 IE,与定时器/计数器的控制无关。错 D.特殊功能寄存器 TMOD,与定时器/计数器的控制无关。错 2.定时器 T0、T1 对外部脉冲进行计数时,要求输入的计数脉冲的高电平或低电平的持 续时间不小于 1 个机器周期。特殊功能寄存器 SCON 与定时器/计数器的控制无关。错 3.定时器 T0、T1 对外部引脚上的脉冲进行计数时,要求输入的计数脉冲的高电平和低电平 的持续时间均不小于 2 个机器周期。对 四、简答 1.定时器/计数器 T1、T0 的工作方式 2 有什么特点?适用于哪些应用场合? 答:方式 2 为初值自动装入的 8 位定时器/计数器,克服了在循环定时或循环计数应用时 就存在用指令反复装入计数初值影响定时精度的问题。 2.THx 与 TLx(x =0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改 后的新值是立即刷新还是等当前计数器计满后才能刷新? 答:THx 与 TLx(x = 0,1)是计数器,其内容可以随时用指令更改,但是更改后的新 值要等当前计数器计满后才能刷新。 3.如果系统的晶振的频率为 24MHz,定时器/计数器工作在方式 0、1、2 下,其最大定时时 间各为多少? 答:晶振的频率为 24MHz, 机器周期为 0.5µs
方式0最大定时时间=0.5s×23=0.5s×8192=4096s 方式1最大定时时间=0.5s×2=0.5μs×65536=327686μs 方式2最大定时时间=0.5μs×2°=0.5s×256=128μs 4.定时器/计数器Tx(=0,1)的方式2有什么特点?适用于哪些应用场合? 答:定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,例如波特率的 产生。 5.一个定时器的定时时间有限,如何用两个定时器的串行定时来实现较长时间的定时? 答:方法1,在第一个定时器的中断程序里关闭本定时器的中断程序,设置和打开另一个定 时器:在另一个定时器的中断程序中关闭本定时中断,设置和打开另一个定时器。这种方式 的定时时间为两个定时器定时时间的和。 方法2,一个作为定时器,在定时中断后产生一个外部计数脉冲(比如由P1.0接T0产 生),另一个定时器工作在计数方式。这样两个定时器的定时时间为一个定时器的定时时间乘 以另一个定时器的计数值。 6.当定时器T0用于方式3时,应该如何控制定时器T1的启动和关闭? 答:由TMOD寄存器的D6位“C/T*”来控制定时器T1的启动和关闭。 7.THx与TLx(O,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后 的新值是立即刷新还是等当前计数器计满后才能刷新? 答:THx与TLx(x=O,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更 改后的新值是立即刷新。但在读THx、TLx的值时,应该先读THx值,后读TLx,再读THx。 若两次读得Tx相同,则可确定读得的内容正确。若前后两次读得的THx有变化,再重复上 述过程。 五、编程 1.采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方 式。定时1ms后,又转为计数工作方式,如此循环不止。假定AT89S51单片机的晶体振荡器 的频率为6Mz,请使用方式1实现,要求编写程序。 答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。除了第一次计数工 作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位 识别下一轮定时器/计数器T0的工作方式。参考程序如下: ORG OOOOH
方式 0 最大定时时间=0.5µs×2 13 =0.5µs×8192=4096µs 方式 1 最大定时时间=0.5µs×2 16 =0.5µs×65536=327686µs 方式 2 最大定时时间=0.5µs×2 8 =0.5µs×256=128µs 4.定时器/计数器 Tx(x=0,1)的方式 2 有什么特点?适用于哪些应用场合? 答:定时器/计数器的工作方式 2 具有自动恢复初值的特点,适用于精确定时,例如波特率的 产生。 5.一个定时器的定时时间有限,如何用两个定时器的串行定时来实现较长时间的定时? 答:方法 1,在第一个定时器的中断程序里关闭本定时器的中断程序,设置和打开另一个定 时器;在另一个定时器的中断程序中关闭本定时中断,设置和打开另一个定时器。这种方式 的定时时间为两个定时器定时时间的和。 方法 2,一个作为定时器,在定时中断后产生一个外部计数脉冲(比如由 P1.0 接 INT 0 产 生),另一个定时器工作在计数方式。这样两个定时器的定时时间为一个定时器的定时时间乘 以另一个定时器的计数值。 6.当定时器 T0 用于方式 3 时,应该如何控制定时器 T1 的启动和关闭? 答:由 TMOD 寄存器的 D6 位“C/T*”来控制定时器 T1 的启动和关闭。 7.THx 与 TLx(x=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后 的新值是立即刷新还是等当前计数器计满后才能刷新? 答:THx 与 TLx (x=0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更 改后的新值是立即刷新。但在读 THx、TLx 的值时,应该先读 THx 值,后读 TLx,再读 THx。 若两次读得 THx 相同,则可确定读得的内容正确。若前后两次读得的 THx 有变化,再重复上 述过程。 五、编程 1.采用定时器/计数器 T0 对外部脉冲进行计数,每计数 100 个脉冲后,T0 转为定时工作方 式。定时 1ms 后,又转为计数工作方式,如此循环不止。假定 AT89S51 单片机的晶体振荡器 的频率为 6MHz,请使用方式 1 实现,要求编写程序。 答:定时器/计数器 T0 在计数和定时工作完成后,均采用中断方式工作。除了第一次计数工 作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位 识别下一轮定时器/计数器 T0 的工作方式。参考程序如下: ORG 0000H
LJMP MAIN ORG 000BH LJMP ITOP MAIN: MOV TMOD,#06H :定时器/计数器T0为计数方式2 MOV TL0,#156 :计数100个脉冲的初值赋值 MOV TH0,#156 SETB GATE :打开计数门 SETB TRO :启动T0,开始计数 SETB ETO :允许T0中断 SETB EA :CPU开中断 CLR FO :设置下一轮为定时方式的标志位 WAIT: AIMP WAIT ITOP: CLR EA :CPU关中断 IB FO.COUNT :F0=1,转计数方式设置 MOV TMOD,#00H ;定时器/计数器T0为定时方式0 MOV THO,#OFEH :定时1ms初值赋值 MOV TLO,#0CH SETB EA RETI COUNT: MOV TMOD,#06H MOV TL0,#156 SETB EA RETI 2.编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400s,占空比为10:1 的矩形脉冲。 答:据题意,从P1.0输出的矩形脉冲的高低电平的时间为10:1,则高低电平的时间分别为 363.63μs和36.37μs。如果系统采用6MHz晶振的话,Tc=2μs,因此高低电平输出取整, 则约为364μs和36μs。参考程序如下: ORG 0000H LJMP MAIN ORG 000BH LJMP ITOP MAIN: MOV TMOD,#02H :定时器/计数器T0为定时方式2 MOV TLO,#4AH :定时364μs初值赋值 SETB TRO :启动T0,开始计数 SETB ETO :允许T0中断 SETB EA :CPU开中断 SETB P1.0 WAIT: ATMP WAIT ITOP: CLR EA CLR P1.0 :关中断 MOV R0,#9 DLY: DINZ RO,DLY :延时36μs MOV TLO,#4AH :定时364μs初值赋值 SETB P1.0 SETB EA RETI
LJMP MAIN ORG 000BH LJMP IT0P MAIN: MOV TMOD,#06H ;定时器/计数器 T0 为计数方式 2 MOV TL0,#156 ;计数 100 个脉冲的初值赋值 MOV TH0,#156 SETB GATE ;打开计数门 SETB TR0 ;启动 T0,开始计数 SETB ET0 ;允许 T0 中断 SETB EA ;CPU 开中断 CLR F0 ;设置下一轮为定时方式的标志位 WAIT: AJMP WAIT IT0P: CLR EA ;CPU 关中断 JB F0,COUNT ;F0=1,转计数方式设置 MOV TMOD,#00H ;定时器/计数器 T0 为定时方式 0 MOV TH0,#0FEH ;定时 1ms 初值赋值 MOV TL0,#0CH SETB EA RETI COUNT: MOV TMOD,#06H MOV TL0,#156 SETB EA RETI 2.编写程序,要求使用 T0,采用方式 2 定时,在 P1.0 输出周期为 400µs,占空比为 10:1 的矩形脉冲。 答:据题意,从 P1.0 输出的矩形脉冲的高低电平的时间为 10:1,则高低电平的时间分别为 363.63μs 和 36.37μs。如果系统采用 6MHz 晶振的话,Tcy=2μs,因此高低电平输出取整, 则约为 364μs 和 36μs。参考程序如下: ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P MAIN: MOV TMOD,#02H ;定时器/计数器 T0 为定时方式 2 MOV TL0,#4AH ;定时 364μs 初值赋值 SETB TR0 ;启动 T0,开始计数 SETB ET0 ;允许 T0 中断 SETB EA ;CPU 开中断 SETB P1.0 WAIT: AJMP WAIT IT0P: CLR EA CLR P1.0 ;关中断 MOV R0,#9 DLY: DJNZ R0,DLY ;延时 36μs MOV TL0,#4AH ;定时 364μs 初值赋值 SETB P1.0 SETB EA RETI
3.编写程序要求:当P1.0引脚的电平正跳变时,对P1.1的输入脉冲进行计数;当P1.2引 脚的电平负跳变时,停止计数,并将计数值写入R0、R1(高位存R1,低位存R0)。 答:将P1.1的输入脉冲接入INTO,即使用T0计数器完成对P1.1口的脉冲计数。参考程序 如下: 0RG0000H LJMP MAIN ORG 000BH LJMP ITOP MAIN: INB P1.0,MAIN MOV TMOD,#05H :定时器/计数器T0为计数方式1 SETB TRO :启动T0,开始计数 SETB ETO ;允许T0中断 SETB EA :CPU开中断 WAIT:IB P1.2,WAIT CLR EA CLR TRO MOV R1,THO MOV RO,TLO ATMP S ITOP:INC R2 RETI
3.编写程序要求:当 P1.0 引脚的电平正跳变时,对 P1.1 的输入脉冲进行计数;当 P1.2 引 脚的电平负跳变时,停止计数,并将计数值写入 R0、R1(高位存 R1,低位存 R0)。 答:将 P1.1 的输入脉冲接入 INT0,即使用 T0 计数器完成对 P1.1 口的脉冲计数。参考程序 如下: ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P MAIN: JNB P1.0,MAIN MOV TMOD,#05H ;定时器/计数器 T0 为计数方式 1 SETB TR0 ;启动 T0,开始计数 SETB ET0 ;允许 T0 中断 SETB EA ;CPU 开中断 WAIT: JB P1.2,WAIT CLR EA CLR TR0 MOV R1,TH0 MOV R0,TL0 AJMP $ IT0P: INC R2 RETI