第五章中断系统及定时计数器(可编辑修改word版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五章中断系统及定时/计数器参考答案
1、80C51 有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU
响应各中断时,其中断地址入口是多少?
答:80C51 有 5 个中断源,具体的名称、产生方式、复位方式和中断入口地址如下:
(1)INT0(P302), 外部中断0 请求信号输入引脚。当CPU 检测到P3.2 引脚出现有效的中断信号时,中断标志IE0(TCON.1)置一,向CPU
申请中断,中断入口地址为0003H。可由IT0(TCON.0)选择其为
低电平有效还是下降沿有效。当IT0=0 时,中断标志在CPU 响应中
断时不能自动清零,只能撤除INT0 引脚的低电平,IE0 才清零;当
ITO=1 时,由硬件自动清除IE0 标志。
(2)INT1(P3.3), 外部中断1 请求信号输入引脚。当CPU 检测到P3.3 引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置一,向
CPU 申请中断,入口地址为000BH。可由IT1(TCON.2)选择其为
低电平有效还是下降沿有效,中断标志复位清零与INTO 类同。
(3)TF0(TCON.5), 片内定时/计数器T0 溢出中断请求标志。当定时/计数器T0 发生溢出时,置位TF0,并向CPU 申请中断,入口地址为
0013H。CPU 响应中断时,TF0 自动清零。
(4)TF1(TCON.7), 片内定时/计数器T1 溢出中断请求标志。当定时/计数器T1 发生溢出时,置位TF1,并向CPU 申请中断,入口地址为001
BH。CPU 响应中断时,TF1 自动清零。
(5)RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口收完一帧串行数据时置位RI 或当串行口发送完一帧串行数据时置位TI, 向
CPU 申请中断,入口地址为0023H。RI 和TI 必须由软件清除。
2、某系统有三个外部中断源1、2、3,当某一中断源变低电平时便要求CPU
处理,它们的优先处理次序由高到低为3、2、1,处理程序的入口地址分别为2000H、2100H、2200H,试编写主程序及中断服务程序(转至相应的入口即可)。
答:ORG 0000H
LJMP BOOT
ORG 0003H
LJMP INT3
ORG 000BH
LJMP INT2
ORG 0013H
LJMP INT1
ORG 001BH
RETI
BOOT:ACALL INT0_0 ;中断启动程序
ACALL T0_0
ACALL INT1_0
SETB EA
SJMP $
INT0_0:CLR IT0 ;设置为低电平触发方式
SETB EX0
RET
T0_0: MOV TMOD,#06H ;设置为工作方式2,模式为外部计数,GATE=0
MOV TH0,#0FFH
MOV TL0,#0FFH
SETB TR0
SETB ET0
RET
INT1_0:CLR IT1
SETB EX1
RET
ORG 2000H
INT1:NOP
RETI
ORG 2100H
INT2:NOP
RETI
ORG 2200H
INT3:NOP
RETI
3、外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的
中断过程有何不同?怎样设定?
答:以外部中断INT0 为例,设IT0=0 时,INT0 为电平触发方式,设IT0=1 时,INT0 为边沿触发方式。
两者产生中断的不同点:
在电平触发方式下,CPU 响应中断时,不能自动清除IE0 标志。也就是
说,IE0 状态完全由INT0 状态决定。所以,在中断返回前必须撤除
INT0 引脚的低电平。
在边沿触发方式下,CPU 响应中断时,能由硬件自动清除IE0 标志。4、定时/计数器工作于定时和计数方式时有何异同点?
答:定时/计数器工作在定时模式时,加 1 计数器是对内部机器周期计数,计数值乘以机器周期就是定时时间。工作在计数器模式时,外部事件计数
脉冲由T0(P3.4)或T1(P3.5)引脚输入到计数器。
5、定时/计数器的4 种工作方式各有何特点?
答:定时/计数器的四种工作方式的特点:
方式0:13 位定时/计数器。因为只有13 位有效,所以计数范围为
1~8192
方式1:16 位定时/计数器。计数范围为1~65535
方式2:8 位自动重装定时/计数器。TH0 为8 位初值寄存器,当TL0
计满溢出时,由硬件使TF0 置1,向CPU 发出中断请求,并将TH0
中的计数初值自动送入TL0。TL0 从初值重新进行加1 计数。周而复
始,直至TR0=0 才会停止。这样就省去了用户软件中重装常数的程
序,特别适合于用作较精确的脉冲信号发生器。
方式3:T0 分成两个独立的8 位定时/计数器;T2 在此方式停止计数。
6、要求定时/计数器的运行控制完全由TR1、TR0 确定和完全由INT 0 、
INT1高低电平控制时,其初始化编程应作何处理?
答:定时/计数器的运行完全由TR0 和TR1 控制的初始化程序如下:MOV TOMD,#044H ;GATE=0,模式为定时,工作方式 2 或者MOV TOMD,#O66H ;GATE=0,模式为计数,工作方式 2
等等。
定时/计数器的运行完全由INT0 和INT1 控制的初始化程序如下:
MOV TOMD,#0AAH ;GATE=1,模式为定时,工作方式2
SETB TR0
SETB TR1 ;消除TR0、TR1 的控制,定时/计数器的运行完全由INT0 和INT1 控制
或者
MOV TOMD,#0EEH ;GATE=1,模式为计数,工作方式2
SETB TR0
SETB TR1 等等
7、当定时/计数器T0 用作方式3 时,定时/计数器T1 可以工作在何种方式下?
如何控制T1 的开启和关闭?
答:当定时/计数器T0 用作方式3 时,定时/计数器T1 可以工作在方式0,方式 1 或方式 3 下。若要关闭T1,只需将T2 设为方式 3 即可。
8、利用定时/计数器T0 从P1.0 输出周期为1s,脉冲为20ms 的正脉冲信号,
晶振12MHz。试设计程序。
答:设计程序如下:
ORG 0000H
SJMP BOOT
ORG 000BH
LJMP ET0_0
BOOT:MOV TMOD,#01H ;置T0 为定时方式1
MOV TL0,#0DFH
MOV TH0,#0B1H ;X=65535-20000 , 延时20ms,N=20000
SETB P1.0
SETB TR0
SETB EA
SETB ET0
HERE:NOP
SJMP HERE