单片机 第四章答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CLR P1.0
;设置方波的起始状态
MOV TL1, #0A1H
MOV TH1, #0FEH ;送初值,保证定时时间为350us
SETB P1.0
SETB TR1
;启动定时器
LOOP:JNB TF1, $
;查询是否溢出,
CLR TF1
;清溢出标志,以便下次判断
JNB P1.0,N0 ;现在为低电平时,150us定时到,转移
7. 根据定时/计数器0方式1逻辑结构图,分析门控位GATE取不同 值时,启动定时器的工作过程。
8. 用方式0设计两个不同频率的方波,P1.0输出频率为200Hz, P1.1输出频率为 100Hz,晶振频率12MHz。
5ms
10ms
解:① TMOD初始化: GATE=0 , C/T=0, M1M0=00B
中断程序结构框架
20.利用定时/计数器T0从P1.0输出周期为1s,脉宽为20ms的正 脉冲信号,晶振频率为12MHz。试设计程序。参照【例4-6】
解:因方式2是8位计数器,其最大定时时间为:256×1 s = 256 s,为实现1 s延时,
可选择定时时间为200 s,再循环5000次。定时时间选定后,可确定计数值为200,则定
第4章 80C51的定时/计数器与中
断系统
思考题与习题
[思考题与习题]
1. 80C51单片机的定时/计数器的定时和计数两种功能各有什么 特点?脉冲源不同
2. 当定时/计数器的加1计数器计满溢出时, 溢出标志位TF1由硬 件自动置1,简述对该标志位的两种处理方法。查询软件清除和中 断硬件自动清除
3. 当定时/计数器工作于方式0时,晶振频率为12MHz,请计算最 小定时时间、最大定时时间、最小计数值和最大计数值。
MOV R6,#100
;置200 s计数循环初值
SETB TR1
;启动定时器
SETB P1.0
LP1: JBC TF1,LP2
;查询计数溢出
SJMP LP1
;无溢出则继续计数
LP2: DJNZ R6,LP1
;未到20 ms继续循环
MOV R6,#64H
CLR P1.0
DJNZ R5,LP1
;未到1 s继续循环
MOV TH1,#0FFH ;置定计数100初值
MOV TL1,#9CH
CLR P1.7
SETB TR1
;启动定时器
LP1: JBC TF1,LP2
;查询计数溢出
SJMP LP1
;无溢出则继续计数
LP2: MOV TMOD,#10H ;置定时器1为方式1定时
MOV TH1,#0D8H ;置定时器10ms初值
t
1 f
1 20 8
1 160
6250s
1
X = 216 – t(fosc/12)=65536-6250(12/12)=3036=E796H
ORG 0100H
MOV A,#01H
;置第一个LED亮
LOOP0:MOV P1,A
MOV TMOD,#01H ;T0工作于方式1
MOV TH0,#0E7H ;置定时器初值
ORG 0100H
MAIN: MOV R0 ,#50H ;数据存储单元首地址
MOV TMOD ,#09H ;置定时器1为方式1
MOV TH0,#0FCH ;定时1ms
MOV TL0,#18H
JB P3.2 ,$ ;查询低电平
SETB TR1
;准备启动定时器1
LP0: JNB P3.2 ,$ ;高电平到,启动定时器1
MOV TL0,#96H ;定时6.25ms
SETB TR0
;启动T0
LOOP1: JBC TF0,LOOP2 ;6.25ms到转L002,并清TF0
;产生连续的7:10的矩形波
END
10. 两只开关分别接入P3.0、P3.1,在开关信号4种不同的组合 逻辑状态,使P1.0分别输出频率0.5kHz、1kHz、2kHz、4kHz 的方波,晶振频率为12MHz。 查询方式。
解:①TMOD初始化: GATE=0 , C/T=0, M1M0=10B
②计算初值:方式2:X = 28 – t(fosc/12)=256-125(12/12)=83H
MOV TL1, #69H;溢出处理
MOV TH1, #0FFH;再送计数初值,保证定时时间始终为150us
SJMP N1
N0:MOV TL1, #0A1H;溢出处理
MOV TH1, #0FEH ;再送计数初值,保证定时时间始终为350us
N1:CPL P1.0 ;改变P1.0的状态
SJMP LOOP
最小计数值为1,最小定时时间为1us 最大计数值位213,最大计数时间为8.19ms
4. 80C51单片机的定时/计数器四种工作方式各有什么特点?
5.当定时/计数器T0用作方式3时,定时/计数器T1可以工作在何 种方式下? 0、1、2,如何控制T1的开启和关闭?设置工作方式
6. 硬件定时与软件定时的最大区别是什么? 不占用CPU
10. 两只开关分别接入P3.0、P3.1,在开关信号4种不同的组合 逻辑状态,使P1.0分别输出频率0.5kHz、1kHz、2kHz、4kHz 的方波,晶振频率为12MHz。 查询方式。 解:①TMOD初始化: GATE=0 , C/T=0, M1M0=10B
②计算初值:方式2:X = 28 – t(fosc/12)=256-125(12/12)=83H
LP1: JBC TF0 ,LP2
JB P3.2 , LP1
INC R0
;低电平到,停止定时器1,存储单元地址加1
SJMP LP0
;低电平到,停止定时器1 宽度
LP2: INC @R0
;存储溢出次数加1ms
MOV TH0,#0FCH ;定时1ms
MOV TL0,#18H SJMP LP1
INT1
INT1 为高时T1 开始计数
方式1计数: TMOD =01010000B X = 216 – n = 216 -100 = FF9CH
方式1定时: TMOD =00010000B X = 216 - t/T = 216 -10000/1 = D8F0H
ORG 0000H
LP0: MOV TMOD,#50H ;置定时器1为方式1计数
SJMP MAIN
21.要求从P1.1引脚输出1000Hz方波,晶振频率为12MHz。 试设计程序。
方式1:X = 216 - t/T = 216 -500/1 = FE0CH
1ms
ORG 0000H AJMP START ORG 001BH LJMP PITO1 ORG 0100H START:MOV SP, #60H MOV TMOD, #10H MOV TH1, #0FEH MOV TL1, #0CH CLR P1.0 SETB EA SETB ET1 SETB TR1 SJMP $ PITO1: MOV TL1, #0CH MOV TH1, #0FEH CPL P1.0 RETI END
②计算定时500us初值:方式0:X = 213 - 500 = 7692 = 1E0CH
ORG START:MOV
CLR CLR MOV MOV MOV SETB LOOP: JNB CLR MOV MOV INC CJNE MOV CPL JNB CPL SJMP END
0000H TMOD, #00H
L2:;P3.1=0,P3.0=0,产生0.5kHz方波
CPL 03H;改变03H的状态;03H产生4kHz方波
JNB 03H,LOP
CPL 04H;改变04H的状态;04H,产生2kHz方波
JNB 04H,LOP
CPL 05H;改变05H的状态;05H产生1kHz方波
JNB 05H,LOP
CPL P1.0;05H位的上升沿,改变P1.0的状态产生0.5kHz方波
Hale Waihona Puke Baidu
L1:;P3.1=0,P3.0=1,产生1kHz方波
250μs
CPL 01H;改变01H的状态;01H产生4kHz方波
JNB 01H,LOP
CPL 02H;改变02H的状态;02H,产生2kHz方波
JNB 02H,LOP
CPL P1.0;02H位的上升沿,改变P1.0的状态产生1kHz方波
SJMP LOP
ORG 0000H
START:MOV TMOD, #02H;定时器T0工作方式2
CLR P1.0
;设置方波的起始状态
250μs
MOV TL0, #83H;送计数初值, MOV TH0, #83H; 保证定时时间始终为125μs SETB TR0 ;启动定时器 LOP: JBC TF0, $ ;等待125μs定时到 JNB P3.0,L0;P3.0=0 JNB P3.1,L1;P3.1=0,P3.0=1,产生1kHz方波 CPL P1.0 ;P3.1=1,P3.0=1,产生4kHz方波 SJMP LOP ;产生连续的方波 L0: JNB P3.1,L2;P3.1=0,P3.0=0,产生0.5kHz方波 ;P3.1=1,P3.0=0, P1.0产生2kHz方波 CPL 00H ;改变00H的状态;00H,产生4kHz方波 JNB 00H,LOP CPL P1.0 ;00H位的上升沿,改变P1.0的状态,产生2kHz方波 SJMP LOP ;产生连续的方波
MOV TL1,#0F0H
SETB P1.7
LP3: JBC TF1,LP0
;查询定时溢出
SJMP LP3
;无溢出则继续计数
23.利用定时/计数器T0产生定时时钟,由P1口控制8个指示灯。编
一个程序,使8个指示灯依次一个一个闪动,闪动频率为20次/秒
(8个灯依次亮一遍为一个周期)。参照【例4-3】
;溢出处理
TH1, #0F0H
;再送计数初值,保证定时时间始终为500us
R2
R2,#5 ,LOOP
R2,#0
P1.0
;改变P1.0的状态
P1.0,LOOP
P1.1
;P1.0的上升沿,改变P1.1的状态
LOOP
;产生连续的方波
9. P1.0输出脉冲宽度调制(PWM)信号,即脉冲频率为2kHz、占 空比为7:10的矩形波,晶振频率12MHz。
;跳转主程序
;跳转中断服务程序
;堆栈初始化 ;(主程序开始)定时器T1工作方式1 ;设置计数初值
;设置方波的起始状态 ;开中断
;启动定时器 ;等待中断
;再送计数初值,保证定时时间始终为0.5ms ;输出方波 ;中断返回
22、试用定时/计数器T1对外部事件计数。要求每计数100,就将T1 改成定时方式,控制P1.7输出一个脉宽为10ms的正脉冲,然后又 转为计数方式,如此反复循环。设晶振频率为12MHz。
;(主程序开始)=定1时11器1T010工0作0方01式1000B
P1.0
;设置方波的起始状态
P1.1
R2,#0
TL1, #0CH
TH1, #0F0H
;送初值,保证定时时间为500us
TR1
;启动定时器
TF1, $
;查询是否溢出,等待500us定时到
TF1
;清溢出标志,以便下次判断
TL1, #0CH
SJMP LOP
END
11. 有一组高电平脉冲的宽度在50~100ms之间,利用定时 器0测量脉冲的宽度,结果存放到片内RAM区以50H单元为首 地址的单元中,晶振频率12MHz。参照【 例4-5】
ORG 0000H LJMP MAIN
方式1:X = 216 - t/T = 216 -1000/1 = FC18H
方式1:X = 216 - t/T = 216 -1/2000*30%*12*106/12 =FF69H
方式1:X = 216 - t/T = 216 -1/2000*70%*12*106/12 = FEA1H
查询方式:ORG
0000H
START:MOV TMOD, #10H ;(主程序开始)定时器T1工作方式1
INT1 为低时T1 停止计数
12. 什么是中断?中断系统的功能和特点有哪些? 13. 8051单片机的中断源有几个?自然优先级是如 何排列的?
5 int0、t0、int1、t1、TX$RX
14. 外部中断触发方式有几种?它们的特点是什么? 15. 中断处理过程包括几个阶段? 16. 请简述中断响应的过程。 17. 外部中断请求撤销时要注意哪些事项? 18. 中断系统的初始化一般包括哪些内容? 19. 扩展外部中断源的方法有几种?
时器0的初值为:X = M 计数值=256 200 = 56 。采用定时器0,方式2工作,因此,
TMOD =02H。
ORG 0000H
MOV TMOD,#02H ;置定时器0为方式2
MOV TH1,#56
;置定时器初值
MOV TL1,#56
CLR P1.0 MAIN: MOV R5,#50
;置20 ms计数循环初值 1s