51手记之规范51—中止体系
MCS51供给5个中止源,每个中止源有2个中止优先级,可完成两级中止服务程序嵌套;优先级相同的中止服务程序不会发生嵌套。
1.中止源
包含两个外部中止、两个守时器溢出中止和一个串行口中止。
1)外部中止源:
MCS51有两条外部中止恳求输入线,答应外部中止源以低电平或负边缘两种中止触发方法来输入中止恳求信号
中止恳求标志位IE0、IE1,
操控寄存器:TCON
2)守时器溢出中止源:
归于内部中止,8031内部有两个16位的守时器/计数器,受内部守时脉冲(主脉冲经12分频后)或T0/T1引脚上输入的外部守时脉冲操控。守时器T0/T1在守时脉冲效果下从全“1”变为全“0”时能够自意向CPU提出溢出中止恳求,以标明守时器T0或T1的守时时刻已到。守时器T0/T1的守时时刻可由用户经过程序设定,以便CPU在守时器溢出中止服务程序内进行计时。
3)串行口中止源:
归于内部中止,串行口中止分为串行口发送中止和串行口接纳中止两种。在串行口进行发送/接纳数据时,每逢串行口发送/接纳完一组串行数据时,串行口电路主动使串行口操控寄存器SCON中的RI葳TI中止标志方位位,并自意向CPU宣布串行口中止,CPU呼应串行口中止后便当即转入串行口中止服务程序履行。
2.中止操控
CPU对中止源的敞开和屏蔽,以及每个中止源是否被答应中止,都受中止答应寄存器IE操控。每个中止源优先级的设定,则由中止优先级寄存器IP操控。
8031内部中止体系对各中止源中止优先级有一个一致的规则,各中止源按规则从高到低的摆放次序为:
外部中止0→ 守时器中止T0→ 外部中止1 →守时器中止T1→ 串行口中止
3.中止呼应
CPU在每个机器周期的S5P2期间采样中止标志,鄙人一个机器周期的S6期间按先后次序查询中止标志。在查询到某一中止标志为1时,则鄙人一个机器周期S1期间按优先等级进行中止处理。中止体系经过硬件生成长调用指令LCALL,将程序转移到中止进口地址单元,履行相应的中止服务程序。
呼应中止时,CPU先置位优先级状况触发器,接着再履行由硬件发生的长调用指令LCALL。该指令将程序计数器PC的内容压入仓库维护起来。但对比如PSW、累加器A等寄存器并不维护(需求时可由软件维护)。然后将对应的中止进口地址装入程序计数器PC,使程序转移到该中止进口地址单元,去履行中止服务程序。
CPU呼应中止恳求后,在中止回来(RETI指令)前,有必要撤消恳求,否则会过错地再一次引起中止呼应。