二、学习内容
(一)中断的概念
中断系统是为使 CPU 具有对外界紧急事件的实时处理能力而设置的。
当中央处理机 CPU 正在处理某件事情的时候,外界发生了紧急事件请求,要求 CPU 暂停当前的工作,转而去处理这个紧急事件。处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为“中断”。
实现这种功能的部件称为“中断系统”,向 CPU 发出中断请求的请求源称为“中断源”。
微型机的中断系统一般允许多个中断源。当几个中断源同时向 CPU 请求中断、要求为它服务时,就存在一个问题:CPU 优先响应哪一个中断源?
通常根据中断源的重要程度和紧急程度排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别。CPU 总是先响应优先级别最高的中断请求。
当 CPU 正在处理一个中断源请求(执行相应的中断服务程序)的时候,如果又发生了另外一个优先级比它还高的中断源请求,且 CPU 能够:
暂停当前正在执行的中断服务程序,
转去处理优先级更高的中断请求,
处理完以后再回到原来较低优先级的中断服务程序继续执行,
这样的过程称为“中断嵌套”。具有中断嵌套功能的中断系统称为多级中断系统,没有中断嵌套功能的称为单级中断系统。
用户可以通过总中断允许位 EA(IE.7)或相应中断的允许位来屏蔽相应的中断请求,也可以通过打开相应的中断允许位,使 CPU 响应对应的中断请求。
每一个中断源都可以用软件独立控制为“开中断”或“关中断”状态。部分中断的优先级别也可以用软件设置。
规则总结:
高优先级的中断请求可以打断低优先级的中断。
低优先级的中断请求不能打断高优先级的中断。
当两个相同优先级的中断同时产生时,由查询次序决定系统先响应哪个中断。
(二)中断源
能向 CPU 提出中断请求的信号源称为“中断源”。
(三)中断寄存器
通过 STC8H 的用户手册可以查询所有与中断相关的寄存器,以及对应的中断请求位信息。
例如:中断允许寄存器 IE、中断优先级寄存器 IP 以及扩展中断控制寄存器等。
相关资料可参考:
STC8H 数据手册(PDF): http://www.stcmcudata.com/STC8F-DATASHEET/STC8H.pdf (四)中断函数
在 C 语言中,可以通过关键字 interrupt 定义中断函数。
示例: