比较教学法在单片机调用和中断课程中的应用

时间:2022-10-19 06:21:10

比较教学法在单片机调用和中断课程中的应用

【摘要】调用和中断是《单片机原理与应用》课程中的两个比较难的理论知识点,经常会有学生将这两个知识点混淆。本文针对这一问题,将调用和中断结合起来,采用比较的教学方法,详细地讨论两者的异同,此方法在教学中发挥了良好的作用,提高了教学效果。

【关键词】比较教学法;单片机原理与应用;调用;中断;

从事《单片机原理与应用》教学工作已有多年,在教学过程中发现初学者很容易把中断和调用这两个过程混淆,这两个知识点既是教学重点又是教学难点,根据多年的经验把它们对比起来进行施教能收到良好的教学效果。

一、调用和中断的定义

1、调用

程序设计过程中,经常会遇到在不同的程序中或同一程序的不同位置要用到功能相同的程序段,对于这样的程序段,将其独立出来,附加少量的额外指令,编制成可供反复调用的独立程序段。这种程序设计方法称为子程序设计。被独立出来的程序段称为子程序。调用子程序的程序称为主程序。

单片机执行主程序的过程中,需要用到子程序的功能,称为“调用”。子程序执行完后,必须回到主程序,称为“返回”。

2、中断

CPU正在执行程序的过程中,由于CPU之外的某种原因,有必要暂停该程序的执行,转而去执行相应的处理程序,待处理程序结束之后,再返回原程序断点处继续运行。这一过程称为中断。

二、调用和中断的联系与区别

1、联系。调用和中断两过程属于完全不同的概念,但它们也有不少相似之处。两者都需要保护断点(即下一条指令首地址)、跳至子程序或中断服务程序、保护现场、子程序或中断处理、恢复现场、恢复断点(即返回主程序)。两者都可实现嵌套,即正在执行的子程序再调另一子程序或正在处理的中断程序又被另一新中断请求所中断,嵌套可为多级。正是由于这些表面上的相似处,很容易使学生把两者混淆起来,特别是把中断也看为子程序,这就大错特错了。

2、区别。调用与中断过程相似,但都是表面的,从本质上讲两者是完全不一样的。两者的根本区别主要表现在服务时间与服务对象不一样上。第一,调用子程序过程发生的时间是已知和固定的,即在主程序中的调用指令(CALL)执行时发生主程序调用子程序,因为调用指令所在位置是已知和固定的。而中断过程发生的时间一般是随机的,CPU在执行某一主程序时收到中断源提出的中断申请时,就发生中断过程,而中断申请一般由硬件电路产生,申请提出时间是随机的。也可以说,调用子程序是程序设计者事先安排的,而执行中断服务程序是由系统工作环境随机决定的。第二,子程序完全为主程序服务的,两者属于主从关系,主程序需要子程序时就去调用子程序,并把调用结果带回主程序继续执行。而中断服务程序与主程序两者一般是无关的,不存在谁为谁服务的问题,两者是平行关系。第三,主程序调用子程序过程完全属于软件处理过程,不需要专门的硬件电路,而中断处理系统是一个软、硬件结合系统,需要专门的硬件电路才能完全中断处理的过程。第四,子程序嵌套可实现若干级,嵌套的最多级数由计算机内存开辟的堆栈大小限制,而中断嵌套级数主要由中断优先级数来决定,MCS-51单片机的中断优先级数为两级(即高级和低级)。第五,子程序返回指令是RET,中断返回指令是RETI.。子程序返回指令RET的功能是从子程序返回到主程序,并从调用指令的下一条指令处继续执行主程序,它一般位于子程序结束处;中断返回指令RETI作为中断服务程序的结束指令,除了具有RET的功能外,还具有清除中断响应时被置位的优先级状态、恢复中断逻辑等功能。因此这两条返回指令使用时是有区别的,不能用子程序返回指令RET代替中断返回指令RETI。

三、调用和中断两过程的详细比较

1、调用过程。主程序调用子程序过程应包括保护断点、跳至子程序首地址、保护现场、子程序处理、恢复现场、恢复断点(子程序返回)六步。这六步都是用软件指令完成的。其中前两步保护断点和跳至子程序首地址由调用指令CALL完成。保护断点其实就是把断点地址推入堆栈中保护起来,要注意的是保护的断点应是紧跟着调用指令的下一条指令的首字节地址,而不是调用指令本身的地址,否则会引起重复调用“死循环”,这点必须提醒学生注意。LCALL和ACALL是MCS-51单片机的两条调用指令,分别称为长调用和绝对调用,

2、中断过程。中断过程远比调用子程序过程复杂,它包括中断请求、中断排队(中断优先级控制)、中断响应、中断服务和中断返回五步。这五步是由硬件和软件结合完成的。中断请求:MCS-51单片机共5个中断源,包括两个外部中断(由 和 引脚输入中断请求信号)和三个内部中断源(定时器/计数器溢出中断T0、定时器/计数器溢出中断T1和片内串行口中断TXD发送/RXD接收)。中断请求由中断源向CPU提出并将中断请求标志寄存器(TCON、SCON)中相应的中断请求标志位置1。中断排队:由于CPU在某一时刻只能响应一个中断请求,为处理执行主程序时同时来了多个中断请求和正在处理某一中断时又来了新的中断请求这两种情况,计算机采用硬件或软件给各个中断源优先权大小进行中断排队,从多个中断申请中选出一个级别最高的中断请求并响应,这一过程称为中断排队。MCS-51单片机用户可用指令设置中断优先级控制寄存器IP的值,将5个中断源的请求分为高级和低级两个优先级。而且同级中还有5个固定的自然优先级别,从高到低的优先顺序分别是、T0、、T1、TXD/RXD。这样,在执行主程序时,同时来了两个以上中断请求,则先按高低两级选择高优先级。如果只有一个高级的中断请求就直接选之,如果有两个以上都是同级,则按同级自然优先级别选择其中的一个优先响应。如果正在执行一个低优先级,又来了一个高优先级,则高优先级中断低优先级,这就形成了两级中断嵌套;如果正在执行的中断级别高于或等于新来的中断级别,则不予理睬,不会引起中断嵌套。可见,MCS-51单片机最多形成两级中断嵌套。中断响应:满足响应条件时,进入指定的中断服务程序入口地址。MCS-51单片机的中断服务程序入口地址是固定的,它们分别是 为0003H、T0为000BH、为0013H、T1为001BH、TXD/RXD为0023H。中断服务:有关(禁止)同级和低级中断、中断请求撤除、保护断点、跳至中断服务程序入口、保护现场、中断处理、恢复现场等七步组成。这七步中断服务过程与前面介绍的五步调用子程序过程类似,只是增加了禁止同级和低级中断请求以及中断请求撤除两步,其余五步完全一致。禁止同级和低级中断目的是使不同时来中断请求的同级隐含排队原则无效,此时只能实现高级嵌套低级的两级中断嵌套。在中断处理的返回前清除原中断请求原因是防止同一次中断申请被重复响应。中断返回:中断处理完后,就应返回断点继续执行主程序,包括开(允许)同级和低级中断和恢复断点两步。

中断服务过程的前四步是由硬件自动实现的,这点完全不同于调用子程序过程。当然TXD/RXD中断请求与、电平触发中断请求还需用户分别用软件和硬件清除中断请求。断点现场保护与恢复也是通过堆栈推入与弹出或改变工作寄存器区来实现的。

中断过程与调用子程序过程是《单片机原理及应用》教学中的重点和难点内容之一。两过程之间既有联系又有区别,本文从多个不同角度详细地对比了它们的异同。对于培养学生编制软件及开展计算机应用方面的能力,具有积极的指导意义,采用这种比较教学法,有利于教学质量的提高。

参考文献:

[1]《单片机原理与应用》 梁洁婷 首衍 肖玲妮 主编 高等教育出版社 2002

[2]《单片机原理及应用技术》 刘振海 主编 高等教育出版社2003

上一篇:资源共享目标下高校教师交流平台的构建 下一篇:中等职业学校数控专业教学改革的实践研究