《【2017年整理】第7章:中断》由会员分享,可在线阅读,更多相关《【2017年整理】第7章:中断(4页珍藏版)》请在金锄头文库上搜索。
1、1思考题:【7-1】试简述 80C51 单片机中断服务子程序和一般子程序的差别【7-2】80C51 系统有几个中断源?各中断标志是如何产生和清除的?【7-3】试简述 80C51 中断响应的条件和受阻的可能?【7-4】80C51 单片机 CPU 响应中断时,中断入口地址各是多少?【7-5】80C51 的中断系统有几个中断优先级?中断优先级是如何控制的?【7-6】如果相同优先级的中断请求同时出现时,简述 80C51 单片机响应中断的查询次序?【7-7】试编程实现,将 设为高优先级中断,且为电平触发方式,T0 溢出中断设为低1INT优先级中断,串行口中断为高优先级中断,其余中断源设为禁止状态。【7-
2、8】外部中断 1 的中断入口地址为( ),定时器 1 的中断入口地址为( )。【7-9】若(IP)=00010100B,则优先级最高者为( ),最低者为( )。【7-10】中断服务子程序与普通子程序有哪些相同和不同之处?【7-11】下列说法正确的是( )。A各中断源发出的中断请求信号,都会标记在 AT89S51 的 IE 寄存器中B各中断源发出的中断请求信号,都会标记在 AT89S51 的 TMOD 寄存器中C各中断源发出的中断请求信号,都会标记在 AT89S51 的 IP 寄存器中D各中断源发出的中断请求信号,都会标记在 AT89S51 的 TCON 与 SCON 寄存器中【7-12】AT8
3、9S51 单片机响应外部中断的典型时间是多少?在哪些情况下CPU 将推迟对外部中断请求的响应【7-13】中断查询确认后,在下列各种 AT89S51 单片机运行情况下,能立即进行响应的是( )。A当前正在进行高优先级中断处理B当前正在执行 RETI 指令C当前指令是 DIV 指令,且正处于取指令的机器周期D当前指令是 MOV A,R3【7-14】AT89S51 单片机响应中断后,产生长调用指令 LCALL,执行该指令的过程包括:首先把( )的内容压入堆栈,以进行断点保护,然后把长调用指令的 16 位地址进( ),使程序执行转向( )中的中断地址区,【7-15】编写外部中断 1 为跳沿触发的中断初
4、始化程序段。【7-16】在 AT89S51 的中断请求源中,需要外加电路实现中断撤销的是( )。A电平方式的外部中断请求B跳沿方式的外部中断请求C外部串行中断D定时中断【7-17】中断响应需要满足哪些条件?【7-18】列说法正确的是( )。A同一级别的中断请求按时间的先后顺序响应B同一时间同一级别的多中断请求,将形成阻塞,系统无法响应C低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级中断请求D同级中断不能嵌套【7-19】保护断点和保护现场有什么差别? 2第五章思考题答案:【7-1】解答:差别见下表。【7- 2】解答:80C51 有五个中断源如下: (1) 外部中断
5、0。采样 P3.2 引脚的外部中断请求。INT(2) 外部中断 1。采样 P3.3 引脚的外部中断请求。(3) 定时/计数器 T0 计数溢出发生的中断请求,中断请求标志为 TF0。(4) 定时/计数器 T1 计数溢出发生的中断请求,中断请求标志为 TF1。(5) 串行口中断请求。串行口完成一帧数据的发送或接收时所发出的中断请求,标志位为 TI 或 RI。每个中断源对应一个中断标志位,它们包含在特殊功能寄存器 TCON 和SCON 中。T 标志位有:(1)TF1 定时计数器 1(T1) 的溢出中断标志。当 T1 从初值开始加 1 计数到产生溢出时,由硬件使 TF1 置“1”, 直到 CPU 响应
6、中断时由硬件复位。(2)TF0 定时计数器 0(T0)的溢出中断标志,与 TF1 类似。(3)IE1 外部中断 1 的中断请求标志。(4)IE0 外部中断 0 的中断请求标志,与 IE1 类似。(5)RI:串行口接收中断请求标志位。在串行口工作方式 0 中,每当接收到第 8 位数据时由硬件置位 RI;在其他方式中,当接收到停止位时由硬件置位 RI。注意,当 CPU 转入串行口中断服务程序的入口时没有硬件复位 RI,因此必须由编程人员用软件复位 RI。(6)TI:串行口发送中断标志。在串行口工作方式 0 中,每当发送完第 8 位数据时,由硬件置位 TI;在其他方式中,当发送到停止位时置位 TI。
7、注意,TI 也必须由软件来复位。【7-3】解答:CPU的中断响应条件 首先要由中断源发出中断申请; 中断总允许位EA=1,即CPU允许所有中断源申请中断; 申请中断的中断源的中断允许位为1,即此中断源可以向CPU申请中断。中断响应会受到阻断。 CPU正在执行一个同级或高一级的中断服务程序; 当前的机器周期不是正在执行的指令的最后一个周期,即正在执行的指令还未完成前,任何中断请求都得不到响应; 正在执行的指令是返回指令或者对专用寄存器IE、IP进行读写的指令,此时,在执行RETI或者读写IE或IP之后,不会马上响应中断请求,至少在执行一条其他指令之后才会响应。【7-4】解答:中断服务程序 一般子
8、程序随机产生的 程序中事先安排好的为外设服务和处理各种事件 为主程序服务以 RETI 结束 以 RET 结束3中断源 入口地址外部中断0 0003H定时器T0中断 000BH外部中断1 00013H定时器T1中断 001BH串行口中断 0023H【7-5】解答:有两个优先级。通过设置特殊功能寄存器 IP 来控制。对应的位为 1 属于高优先级,为 0 属于低优先级。【7-6】解答:答:如果同级的多个中断请求同时出现,则按 CPU 查询次序确定哪个中断请求被响应。 其查询次序为:外部中断 O定时计数器中断 0外部中断 1定时计数器中断 1串行中断。【7-7】解答:SETB PX1CLR IT1CL
9、R PT0SETB PSMOV IE,#96H【7-8】解答:(13H )( 1BH )。【7-9】解答:( 外部中断 1 )(定时器 T1 )。【7-10】解答:RETI 指令在返回时,同时清除中断系统中相应的优先级触发器,以允许下次中断,而 RET 指令则没有这个操作。除了这一点两条指令不同外,其他操作都相同。【7-11】解答:( D )。 【7-12】解答:使用外部中断时,需考虑从外部中断请求到转向中断入口地址所需的时间。外部中断的最短响应时间为 3 个机器周期。其中中断请求标志位查询占 1 个机器周期,而这个机器周期恰好处于指令的最后一个机器周期。在这个机器周期结束后,中断即被响应,C
10、PU 接着执行一条硬件子程序调用指令 LCALL 到相中断服务程序入口,需要 2 个机器周期。外部中断响应的最长时间为 8 个机器周期。在 CPU 进行中断标志查询时,刚好才开始执行 RETI 或访问 IE 或 IP 的指令,需执行完指令再继续执行一条指令后,才响应中断。执行RETI 或访问 IE 或 IP 的指令,最长需要 2 个机器周期。接着再执行一条指令,最长指令(乘法指令 MUL 和除法指令 DIV)来算,也只有 4 个机器周期。再加上硬件子程序调用指令 LCALL 的执行,需要 2 个机器周期,所以,外部中断响应的最长时间为 8 个机器周期。如果已经在处理同级或更高级中断,外部中断请
11、求的响应时间取决于正在执行的中断服务程序的处理时间,这种情况下,响应时间就无法计算了。这样,在一个单一中断的系统里,AT89S51 单片机对外部中断请求的响应时间总是在 38个机器周期之间。如下几种情况CPU 将推迟对外部中断请求的响应,即(1)CPU 正在处理同级或更高优先级的中断。(2)所查询的机器周期不是当前正在执行指令的最后一个机器周期。只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令执行的完整性。(3)正在执行的指令是 RETI 或是访问 IE 或 IP 的指令。因为按照 AT89S51 中断系统的规定,在执行完这些指令后,需要再执行完一条指令,才能响应新的中断请求。4【7
12、-13】解答:( D )。【7-14】解答:( PC )( PC )(程序存储器)【7-15】解答:SETB IT1SETB EX1SETB EA【7-16】解答:( A )【7-17】解答:1) 有中断源发出中断申请;2) 中断允许控制寄存器(IE)已经设置为开中断状态;3) CPU 此时没有响应同级或更高优先级的中断;4) 当前的机器周期正在执行的指令的最后一个机器周期;正在执行的指令不是 RETI 或者是访向 IE、IP 的指令, 否则该指令执行完后,必须再另外执行一条指令后才能响应【7-18】解答:(A、C、D)。【7-19】解答:保护断点是指把断点处指令的地址压入堆栈进行保存,以便中断程序执行完后,返回到断点处继续执行;保护断点一般是在中断响应后进行的;保护断点主要是由硬件自动完成的。保护现场是指把断点处某些寄存器和存储器单元中的数据或状态, 送入堆栈保存起来,从而使中断服务子程序的执行不破坏这些数据或状态。当中断程序执行完后,将保护现场时压入堆栈的内容从堆栈中弹出,送回相关寄存器或存储单元中;保护现场一定要位于中断处理程序的前面,关中断之后即开始保护现场;保护现场一般是用户通过压栈指令来实现的。恢复现场一定要位于中断处理的后面,而且还要执行关中断指令后,通过出栈指令来实现。