第5章答案单片机.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五章复习思考题答案

一、 基础题

1.B

2.A

3.B

4.C

5.B

6.C

7.B

8.A

9.A 10.C 二、 思考题与编程题

1. 简述MCS-51单片机的定时器/计数器的结构和工作原理。

答:MCS-51单片机的定时器/计数器的结构:MCS-51单片机有2个定时器/计数器,被称为定时器/计数器T0和定时器/计数器T1。定时器/计数器T0的计数器由2个8位的特殊功能寄存器TL0和TH0构成;定时器/计数器T1的计数器由特殊功能寄存器TL1和TH1构成,T0和T1有多种工作方式,由定时器/计数器方式寄存器TMOD 设置。T0和T1的启动和停止由定时器/计数器控制寄存器TCON 控制。

工作原理:

定时器/计数器工作在计数模式时,计数器对外部脉冲进行计数,脉冲信号发生1到0负跳变,计数器自动加1;

定时器/计数器工作在定时模式时,计数脉冲信号来自单片机的内部,每个机器周期产生一个计数脉冲,计数器自动加1,也就是每个机器周期计数器加1。

计数器计满后,再计一次,计数器溢出,溢出标志被置1。 2. MCS-51单片机的定时器/计数器T0中有哪几种工作方式?作为计数器和定时器使用时,它们的计数信号有什么不同?其最大计数和定时时间分别是多少?

答:T0有4种工作方式,方式0:13位定时器/计数器,方式1:16位定时器/计数器,方式2:8位常数自动装入的定时器/计数器,方式3:2个8位的定时器/计数器

作为计数器,计数信号由外部脉冲提供,作为定时器,计数信号由单片机内部提供; 计数模式时,方式0的最大计数次数为8192,方式1的最大计数次数为65536,方式2和方式3的最大计数次数为256。

设单片机的机器周期为最大定时为,定时模式时,方式0的最大定时为8192M T ,方式1的最大定时为65536M T ,方式2和方式3的最大定时为256M T 。

3. 设置工作方式寄存器TMOD 时,GATE 位对定时器/计数器的工作有什么影响?定时器/计数器工作在方式2时,与其他几种方式有什么区别?当设置为方式3时,定时器/计数器T1将如何工作?

答:当GATE=0时,只要TR0被置1时,定时器/计数器T0启动开始计数。 当GATE=1时,定时器/计数器T0启动受INT0引脚的外部信号控制。只有当TR0被置1,且INT0引脚输入信号为高电平时,定时器/计数器T0才开始计数。

定时器/计数器工作在方式2时,与其他几种方式的区别在于当计数器TL0溢出时,TF0被置1,同时把TH0的内容装载到TL0,计数器便以该值为初始值重新开始计数,而其他几种方式计数器将清零。

当设置为方式3时,定时器/计数器T1将停止工作。

4.用内部定时方法产生10kHz 的等宽脉冲并从P1.1输出,设晶振频率为12MHz 。 等宽方波的高、低电平的持续时间相同。10kHz 的等宽方波脉冲信号的周期为0.1ms ,因此,只需在P1.1引脚输出持续时间为50μs 的高低电平交替变化的信号即可,则定时时

间应为=d t 50μs 。用方式0实现。 (1)计算计数初始值

因为系统的晶振频率为12MHz ,则机器周期。设计数初始值为X :

81421502213M d 13=-=-

=T t X

转换为二进制数得=X 1111000001100B 。取X 的高8位赋给TH0,

X 的低5位赋给TL0,则(TH0)=11110000B =0F0H ,(TL0)=00001100B=0CH ,TL0的高3位默认为0。 (2)设置工作方式

方式0:M1M0=00,定时器模式:0T C/=,计数器启动不受外部控制:GATE=0,因此,TMOD 的内容为00H 。

(3)采用查询方式的程序设计如下:

MOV T MOD ,#00H

MOV T H0,#0F0H MOV T L0,#0CH ;设置计数器初始值 SETB TR0 ;启动定时器/计数器

LOOP:

JBC TF0,OVFLOW

;查询计数溢出

AJMP

LOOP

OVFLOW: MOV T H0,#0F0H ;重新设置计数初值 MOV T L0,#0CH CPL P 1.0

AJMP LOOP

;重复循环 (4)采用中断方式的程序设计如下:

ORG 0000H LJMP MAIN ORG 000BH LJMP P_T0 ORG 0030H MAIN:

MOV SP, #60H ;开辟栈区

MOV TMOD, #00000000B ;设置工作方式0和定时器模式

MOV TH0,#0F0H MOV TL0,#0CH

;设置计数器初始值 SETB TR0

;计数器启动

SETB EA SETB ET0 HERE:

AJMP HERE ;模拟执行一段较长的主处理程序

;中断处理程序:

P_T0: PUSH ACC ;保护现场

PUSH

PSW

MOV T H0,#0F0H

MOV T L0,#0CH ;设置计数器初始值 CPL P 1.0

;产生方波

POP PSW POP ACC

RETI

5.用定时器/计数器T1计数,每计1000个脉冲,从P1.1输出一个100ms 单脉冲。

程序框图见图5.1

MAIN: MOV TMOD,#01000000B ;设置工作方式0和计数器模式

MOV TH1,#11100000B ;设置计数初始值高8位

MOV TH1,#00011000B ;设置计数初始值低5位

SETB TR1 ;启动计数器

CNTING: JBC TF1,OK ;检测是否溢出,溢出,清标志 SJMP CNTING ;等待,计数 OK: SETB P1.1 ;脉冲开始输出 ACALL DL100MS ;脉冲保持100ms CLR P1.1 ;脉冲结束

RET

;延时100ms 子程序,晶振频率为12MHz DL100MS:MOV R7,#100 DL1MS: M OV R6,#200 DL: NOP NOP NOP DJNZ R6,DL DJNZ R7,DL1MS

RET

6. 一批数据存放在外部RAM 以data 单元开始数据区,数据长度为100个,要求以50ms 的间隔从外部RAM 读取一个字节的数据,然后从P1口输出,设晶振频率为6MHz 。要求定时用以下方式实现:(1)一个定时器;(2)两个定时器串联。

(1)一个定时器实现,程序流程图见图5.2 MAIN:

MOV R0, #100

; 数据长度

MOV DPTR,#8000H

;外部数据存储首地址

MOV TMOD, #00010000B ;工作方式1和定时器模式 MOV TH1, #10011110B ;计数初始值高8位 MOV TL1, #01011000B ;计数初始值低8位 SETB TR1 ;定时器启动 CNTING: JBC TF1, OK

;检测是否溢出 SJMP CNTING ;

OK:

MOV TH1, #10011110B

;重新装入计数常数值 MOV TL1, #01011000B MOVX A,@DPTR

;取外部数据

图5.1 题5 程序流程图

?5.2 ?6(1)????

相关文档
最新文档