单片机的程序结构与中断机制

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、单片机的程序结构
C51是以函数为基本单位来组织程序的。单片机的C51程序主要是由主函数和中断服务函数两部分构成。主函数就是我们的主程序,是唯一的且无限循环。中断服务函数根据具体使用情况可以有一个或几个,它们不能通过被调用的方式执行,只有特殊功能引脚的输入信号(即中断触发信号)才能自动触发对应的中断服务函数的执行,中断服务函数只执行一遍。
2、主函数与中断服务函数的关系
“中断”意思是中途打断,即任何一个中断服务函数都能中途打断主函数的执行。主函数和中断服务函数是相互独立的,没有中断发生时,程序只在主函数中运行。当某个中断触发有效时,主函数被暂停,被触发的那个中断服务函数自动执行。中断服务函数结束后,程序立即回到主函数的断点处继续在主函数中运行。
3、中断服务函数之间的关系
当一个中断服务函数正在执行时又发生了其它中断触发怎样处理?为了解决上述问题,单片机引入了中断优先级,可以设置单片机各个中断的优先级。优先级只有两级,非高即低。高优先级的中断服务函数可以打断正在执行的低优先级中断服务函数的运行,但不能打断同级中断服务函数的执行。当不同优先级的两个中断触发同时发生时,先执行高优先级的中断服务函数,再执行低的。当相同优先级的几个中断触发同时发生时,会按照中断的自然排序依次执行,顺序如下表:

4、单片机如何响应中断
当某一个中断触发条件满足时(如INT0/INT1管脚收到电平下降沿、T0/T1计数器溢出、串行口发送或接收了一个字节等),该中断对应的“中断标志位”会被单片机自动置1,然后单片机就会自动转去执行中断标志位对应的中断服务函数。
“中断标志位”为1,是执行中断服务函数的条件。如果“中断标志位”不被清零,那么执行完一遍中断服务函数退出后,还会再次进入且执行该中断服务函数。注意,上表中红色的“中断标志位”必须使用程序清零,而其它的“中断标志位”在进入中断服务函数时自动清零。
只要某中断事件发生,对应的“中断标志位”就会被置1,不管此时是否正在执行其它中断服务函数。如果此时恰好正在执行另一个高级或同级的中断服务函数,那么等到正在执行的中断服务函数退出后,刚申请的这个中断的服务函数就会被执行。

相关文档
最新文档