- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一文详解51单片机中断系统
中断及中断原理
中断是为单片机具有对外部或者内部随机发生的事件实时处理而设置的。中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。单片机具有实时处理功能,主要是靠中断技术来实现的。
从中断这个名字可以知道中断的概念很简单,就是在CPU执行过程中被某些因素所打断,从而去解决产生这些因素的问题。有一个很形象的比喻:当你在烧开水的时候可以去洗衣服,在洗衣服过程中当听到水开水壶响的时候就先暂停转而去倒开水。这样的工作效率很明显要比在水壶边干干巴巴坐着等水开高得多。而中断机制就是这么个原理。
中断流程
中断系统的流程很简单,分为中断请求,中断响应,中断返回。
在主程序运行过程中,由于外部或内部发生的某一事件请求CPU中断迅速前去处理。此时CPU要迅速前去处理,但是此时正在运行主程序,所以CPU会设置断点,在此过程中应用堆栈会记下断点地址以及一些工作寄存器、标志位等信息以保证中断返回时可以正常继续执行主程序,保护断点现场。(中断请求)
断点设置结束后,CPU会根据中断服务程序的入口地址进入中断服务程序中去执行,从而解决中断响应问题。(中断响应)
执行完中断服务程序后,CPU恢复现场,即回到断点继续执行主程序。(中断返回)
中断源
51单片机中有5个中断源,如下图:
52单片机是51单片机的增强型,有6个中断源,如下图:
在本次讲解中以增强型单片机为例
中断优先级
单片机允许中断嵌套,涉及到中断执行的先后顺序,因此引出中断优先级。
因此,单片机中存在中断优先级寄存器IP可以设置各中断优先级。
中断系统结构
由图可以看出使用中断会使用若干寄存器。类似于拨动开关,使得各个中断源有条不紊地工作起来。
中断系统寄存器
在中断系统中会使用若干寄存器,根据中断源的不同我们需要配置不同的寄存器,如TCON、SCON寄存器等。但是有中断允许寄存器IE和中断优先级寄存器IP通常都需要配置。
中断允许寄存器IE (可位寻址)
EA-全局中断允许位(总开关控制各个中断)
ET2-定时/计数器2中断允许位
ES-串行口中断允许位
ET1-定时/计数器1中断允许位
EX1-外部中断1中断允许位
ET0-定时/计数器0中断允许位
EX0-外部中断0中断允许位
以上各允许位均为1打开,为0关闭。
中断优先级寄存器IP (可位寻址)
PS-串行口中断优先级控制位
PT1-定时/计数器1中断优先级控制位
PX1-外部中断1中断优先级控制位
PT0-定时/计数器0中断优先级控制位
PX0-外部中断0中断优先级控制位
以上各位均为1高优先级,为0低优先级。
中断服务程序的书写
void 函数名() interrupt x
{
……
}
其中一般无返回值故写void,“函数名”可以根据功能来自主命名,interrupt x 必须书写以表明使用哪个中断,从而使CPU找到中断服务程序入口。序号x如下。
中断服务程序的理解
纵观整个带有中断服务程序的C程序,除了在函数名后书写序号外,中断服务程序书写与普通的自定义子函数并无多大区别,但是与自定义子函数不同的是,在主函数中并没有中断服务程序的调用,这就很容易使人一头雾水,搞不清楚中断服务程序是如何被运行的。
其实问题的答案就在中断服务程序本身,正是由于其函数名后书写的中断号让CPU可以找到这段代码,从而去处理中断。所以就可以理解为中断服务程序中的代码就是写在了main主函数中,只不过只有在满足对应的中断标志位置1时,CPU才转而去执行这段代码,因此不同于自定义子函数那样需要去声明、调用。
各中断详细介绍
按照自然优先级排序
1. INT0-外部中断0
2. T0-定时/计数器0中断
3. INT1-外部中断1
4. T1-定时/计数器1中断
5. TI/RI-串行口中断
6. T2-定时/计数器2中断
文档评论(0)