51单片机中断系统学习和实验_第1页
51单片机中断系统学习和实验_第2页
51单片机中断系统学习和实验_第3页
51单片机中断系统学习和实验_第4页
51单片机中断系统学习和实验_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、51单片机中断系统学习和实验丁炳亮通过几个实验代码来学习和理解教科书上关于中断的讲解,因为中断在单片机学习中是一个非常重 要的内容,很多代码实现都要使用到中断。之前在使用外部中断中遇到外部下降沿触发方式如果用按键 触发会发生两次中断,这个问题其实很好解释的通但是想的过程中就冒出了很多新问题,下面就是针对 自己的理解分析这些问题的。实验一:测试在没有开启外部中断允许的情况下,如果有外部低电平或下降沿 触发,外部中断标志位是否会置位实验现象:电平触发模式没有开中断时,只有低电平存在才会置位IE0标志位,当电平 变高后IE0标志位自动清零。下降沿触发模式没有开中断时,触发一次就使IE0标志位一直置位

2、,不会自动清零。如 果下降沿触发开中断而没有中断函数结果和没开中断一样,只有开中断且又有中断函数IE0 被置位马上就被清零(串口持续输出IE0=0)。结论及解释:首先了解下外部触发的两种方式的区别。当IT0=0时,INT0为电平触发 方式。CPU在每个机器周期的S5P2取样INT0引脚电平,当取样到低电平时,置IE0=1 表示INT0向CPU请求中断;取样到高电平时,将IE0清0。必须注意,在电平触发方式下, CPU响应中断时,不能自动清除IE0标志。也就是说,IE0状态完全由INT0状态决定。所 以,在中断返回前必须撤除INT0引脚的低电平。当IT0=1时,INT0为边沿触发方式(下降沿有效

3、)。CPU在每个机器周期的S5P2取样 INT0引脚电平,如果在连续的两个机器周期检测到INT0引脚由高电平变为低电平,即第一 个周期取样到INT0=1,第二个周期取样到INT0=0,则置IE0=1,产生中断请求。在边沿触 发方式下,CPU响应中断时,能由硬件自动清除IE0标志。注意,为保证CPU能检测到负 跳变,INT0的高、低电平时间至少应保持1个机器周期。硬件必须在CPU响应中断后才自动清零IE0标志,CPU响应中断需要满足三个条件。第 一,中断源有中断请求;第二,此中断源的中断允许位为1;第三,CPU开中断(即EA=1);下降沿触发模式如果没开中断则达不到CPU响应中断的条件就不能响应

4、中断硬件也就不会 自动清零IE0标志。那为什么下降沿触发模式没有中断函数的情况下也无法自动清零IE0呢?这里要考虑到中断的响应和处理过程,我们下面了解下中断的响应和处理过程。CPU执行程序过程中,在每个机器周期的S5P2期间,中断系统对各个中断源进行取样。这些取样值在下一个机器周期内按优先级和内部顺序被依次查询。如果某个中断标志在上一 个机器周期的S5P2时被置成了 1,那么它将于现在的查询周期中及时被发现。接着CPU便 执行一条由中断系统提供的硬件LCALL指令,转向被称作中断向量的特定地址单元,进入相应的中断服务程序。如下图所示:若遇到下列任一条件,硬件将受阻,不能产生LCALL指令:CP

5、U正在处理同级或高优先级中断;2)当前查询的机器周期不是所执行指令的最后一个机器周期。即在完成所执行指令前, 不会响应中断,从而保证指令在执行过程中不被打断;3)正在执行的指令为RET、RETI或任何访问IE或IP寄存器的指令。即只有在这些指 令后面至少再执行一条指令时才能接受中断请求。若由于上述条件的阻碍中断未能得到响应,当条件消失时该中断标志却已不再有效,那 么该中断将不被响应。就是说,中断标志曾经有效,但未获响应,查询过程在下个机器周期 将重新进行。CPU响应中断的过程如下:1)将相应的优先级状态触发器置1(以阻断后来的同级或低级的中断请求);2)执行一条硬件LCALL指令,即把程序计数

6、器PC的内容压入堆栈保存,再将相应的中断服务程序的入口地址送入PC;3)执行中断服务程序。LCALL指令执行中断服务函数开始中断响应过程的前两步是由中断系统内部自动完成的。中断服务程序的最后一条指令必 须是中断返回指令RETI。RETI指令能使CPU结束中断服务程序的执行,返回到曾经被中 断过的程序处,继续执行主程序。RETI指令的具体功能是:1)将中断响应时压入堆栈保存的断点地址从栈顶弹出送回PC,CPU从原来中断的地方 继续执行程序。2)将相应中断优先级状态触发器清0,通知中断系统,中断服务程序已执行完毕。注意,不能用RET指令代替RETI指令,因为用RET指令虽然也能控制PC返回到原 来

7、中断的地方,但RET指令没有清零中断优先级状态触发器的功能,中断控制系统会认为中 断仍在进行,其后果是与此同级的中断请求将不被响应。所以中断服务程序结束时必须使用 RETI指令。若用户在中断服务程序中进行了入栈操作,则在RETI指令执行前应进行相应 的出栈操作,使栈顶指针SP与保护断点后的值相同,即在中断服务程序中PUSH指令与POP 指令必须成对使用,否则不能正确返回断点。从上面的关于中断的响应和处理过程中很容易明白如果没有中断服务函数,则中断响应 后把将相应的优先级状态触发器置1以阻断后来的同级或低级的中断请求,没有中断服务函 数也就没有RETI指令,相应的中断优先级状态触发器就不会清零。

8、这样导致了 CPU转入中 断服务函数接口后没有遇到RETI指令只能一直执行下去直到又一次从头开始执行主程序, 但是相应的优先级状态触发器还是置1,以后的中断也无法执行,因为波动引起的第二次下 降沿触发使IE0标志置位就不能被清零。下面我们用实验测试二来验证下发出中断响应但没 有中断服务函数导致优先级状态触发器不能清零而程序无法继续响应中断。实验二:验证发出中断响应但没有中断服务函数导致优先级状态触发器不能清 零而程序无法继续响应中断。实验代码1:ET0 = 1;EA = 1;TRO = 1;while(1)if(P3_5 = 0)TRO = 0;if(TFO)printf (,TF0=ln,)

9、;elseprintf (TFO=0n,);void TimeO(void) interrupt 1 I实验代码2:ETO = 1;EA = 1;TRO = 1;while(1)if(P3_5 = 0) TRO = 0;if(TFO)printf (,TFO=lnH);elseprintf (,TFO=On);实验代码3:oid main(void)InitUART();EXI = 1;EXO = 1; EA = 1;while (1);old TimeO(void) interrupt 0printf(IE0=ln);实验代码4:void main(void)I InitUART();EXI

10、 = 1;EXO = 1;EA = 1;while(1);void TimeO(void) interrupt 2printf(IEl=ln);实验现象:实验代码1输出的是“TF0=1”,关闭定时器后输出的是“TF0=0”。实验代码 2输出的是“TF0=1”,关闭定时器后输出的是“TF0=1”。实验代码3先触发外部中断1再触 发外部中断0仍然可以输出“IE0=1”。实验代码4如果先触发外部中断0再触发外部中断1 则没有输出。解释:定时器溢出发生中断是执行完中断服务函数后再清零中断标志位的。实验代码1 有中断服务函数所以运行正常。实验代码2没有中断服务函数在第一次发生中断响应后将相 应的优先级状

11、态触发器置1,CPU转到中断函数入口但是没有遇到RETI所以不能清零优先 级状态触发器装置。实验代码3是由于外部中断0优先级高于外部中断1,外部中断1的优 先级状态触发器置位不能阻止更高级的中断响应(这里要注意:实际上在执行中断服务函数 如果是相同的逻辑优先级中断是无法嵌套执行中断函数的)。实验代码4是实验代码3的对照 组。实验三:测试手动置位中断标志位CUP是否会响应中断?实验代码1:void main(void)InitUART();ITO = 0;EXO = 1;EA = 1;while(1)if(P3_5 = 0)IE0 = 1;实验代码2:);void main(void)InitU

12、ART();ITO = 1;EXO = 1;EA = 1;while(1)if(P3_5 = 0)I IE0 = 1;void TimeO(void) interrupt 0printf(HIE0=ln);实验代码3:void main(void)I InitUART();ETO = 1;EA = 1;while(1)if(P3_5 = 0)TF0 = 1;void TimeO(void) interrupt 1j printf(TF0=ln);实验现象:实验代码1无法通过手动置位中断标志位来使CPU响应中断。实验代码2、3可以通过 手动置位来使CPU响应中断。解释:很明显除了外部低电平触发无法通过手动置位中断标志位使CPU发生中断响应外其定时器和 边沿外部触发方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论