任务3.4 中断的原理及实现.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
任务3.4 中断的原理及实现

任务3.4 中断的概念和应用 3.4.1 任务介绍 中断和定时器是单片机中最重要的资源之一,中断功能的存在很大程度上提高了单片机处理外部或者内部事件的能力。什么是中断,我们从一个生活中的例程引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被突如其来的事件打断了。 本节的任务是: 单片机外接两个两个发光二极管和一个按键,,其中一个发光二极管以0.5Hz的频率闪烁,另外一个发光二极管,按键每按下一次改变一下状态,按键用采用外部中断的方式。 3.4.2知识准备 1、中断的基本概念 (1)单片机中为什么需要中断 我们先根据之前学过的知识试着编写一下任务要求的程序,程序如下: 烧录到单片机后,我们发现程序运行的效果并非和我们想象中的一样,如果按键不按下,LED1闪烁正常,按键按下,LED1不再闪烁,直到按键弹起。LED2也并非是每次按键按下都改变状态,按键有的时候没有检测到。我们先来分析一下按键为什么没有检测到的原因。 主程序中有两个任务,任务1:LED1以2Hz频率闪烁,任务2:按键按下LED2状态取反。这两个任务在大循环中顺序运行,即任务1执行完后,才能执行任务2。LED1闪烁一次需要2000ms(亮1000ms+灭1000ms),按键按下到弹起来大约需要200ms-500ms左右。如果程序刚开始执行任务1,这个时候按键也按下了,那么按键所对应的任务2必须等待任务1执行完了,才能执行。任务1执行完了,2000ms过后,再扫描按键,按键早就释放了,本次按键无效。 我们的生活中也会遇到这样的问题,以接电话为例。你正在看着书,如果没有别的事情会一直看下去,这个时候电话响了,如果我们按照程序的思路,任务1执行完了,才能执行任务2,那么我们只有把书看完了,才能去接电话,这显然是不合理的。 我们把所有需要处理的事件都放到大循环while(1)中去一个个的执行的方式是行不通的,一些紧急的事件必须立即处理,不能等待。中断就具有处理紧急事件的能力。 (2)中断的响应过程 正在看书,这是电话铃响了,在接电话之前,我们要把正在看的那一页书做个标记,接完电话后后我们按照之前的标记继续看书。单片机响应中断的过程和看书接电话的过程类似。中断事件产生后,首先要保存当前执行程序的地址,然后再去执行中断函数,中断函数执行完后,再从保存的地址处开始执行程序。 (3)中断的种类 传统的8051单片机一共有5个中断源(DIP封装的STC89C52有6个中断),它们的符号、名称和产生的条件分别解释如下: ①:INT0:外部中断0,由P32端口引入,低电平或下降沿引起。 ②:INT1:外部中断1,由P33端口引入,低电平或下降沿引起。 ③:T0:定时/计数器0中断,由定时/计数器0溢出引起。 ④:T1:定时/计数器1中断,由定时/计数器1溢出引起。 ⑤:TI/RI:串行口中断,由串行口发送或者接受一帧数据引起。 本节当中我们只关注两个外部中断,定时器和串口的中断在后面的章节会详细介绍。 (4)中断优先级和嵌套 在某些时刻,2个或者更多个中断同时到来,单片机应该响应哪一个中断呢?设想一下,你正在看书,电话铃响了,同时又有人按了门铃,你该先做那样呢?如果你正在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理电话了。总之这里存在一个优先级的问题,单片机的5个中断也有优先级,即两个以上的中断同时触发,CPU先响应哪一个。 另外还可能存在这样一种情况,你正在看书,电话铃响了,去接电话,在接电话的过程当中,这时又有人按门铃,我们的做法是先暂停通话,打开门,然后再接听电话,接听电话完后再继续看书。一个正在执行的中断任务被另外一个级别更高的中断任务打断,称之为中断的嵌套。 51单片机的优先级有两大类:高优先级和低优先级,如果不对优先级做任何的设置,系统默认的是低优先级。在同类优先级中,也有一个先后顺序,称为自然优先级。在51单片机中自然优先级的顺序为,外部中断0 定时/计数器0 外部中断1 定时/计数器1 串口。在同类优先级中,当同时有几个中断到达,自然优先级高的中断会先得到响应,但不能实现中断的嵌套,例如,定时/计数器0和外中断0同为低优先级,当它们同时到来时,由于外部中断0 定时/计数器0,系统先进入到外部中断0的程序,然后再执行定时/计数器0的中断程序。 要想实现中断的嵌套,中断A能打断中断B的执行,则中断A和中断B不能在同一类型优先级中,中断A应设置为高优先级,中断B设置为低优先级。例如:串口中断在同类优先级中的排位是最低的,但如果把串口中断设置为高优先级,而其他中

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档