51单片机第7篇章-中断系统

173 阅读4分钟

追求以通俗的语言让小白可以更容易上手学单片机,在此同时巩固知识(很多图片来自江科大和普中,作者也是学这个来的,只是通过自己的语言想把它复述出来)。

何为中断

这样,讲个例子。

当你在写作业,突然有个电话打给你,那你会选择去停下写作业,然后接听电话,听完电话,你就会再继续写作业。 
在这个过程中,写作业就是主程序,而接听电话就是中断(程序),电话打给你就是一个中断信号。

其框架图如下 :(这是作者自己写的,上了大学这已经是书写的巅峰了~) 微信图片_20221119232921.png

中断能干嘛

在单片机领域,中断系统体现在一些程序,比如:定时器(如果时间到了/计数已满就得中断,并执行我们设定的中断后的函数)、外部中断(比如按钮按下,就可以中断)等等······

中断系统有什么东西,我们又应该掌握什么东西?

  1. 首先便是中断结构 Snipaste_2022-11-19_23-35-16.png

看这个图干什么?

这个图是中断机制的触发过程,从上到下六行(但实际只有五个中断),依次分别是外部中断0、时钟0、外部中断1、时钟中断1、串口的中断(RX和TX属于一个中断)。

  • 普中STC89C52(就是我们用的开发板)配置了这5个中断,其他的开发板或者有外接中断系统,我们仅以前者作参考。
    
  • 我们可以看到,有IT0/1,IEO,EX0~5,EA,PX0等等。
    
  1. TCON的范畴是中断请求标志,可以看出对于不同中断,其中断请求标志是不同的,IT0和IT1只是功能不同。当置1时-代表我们选择中断函数以下降沿触发;当值为0时选择低电平触发。

  2. IE属于中断的开关,由图可见,EX0(不是韩国男团EXO喔!!!)、ET0、EX1等都是不同中断的开关,将我们选择的中断系统的对应开关置1即接通了开关;EA为总开关,一旦置1,对所有中断系统都接通(注意,EA并不是接通了,就能使整个中断系统可以执行,只是属于一个环节)。

  3. 最后为IP,也是开关,只不过有1/0选择,选1时中断为为优先级高,选0则反之。

    那么什么是优先级?

    优先级,顾名思义,就是说有至少两个中断跳转(触发),而有的是优先触发的。就拿文章开头的例子,当你写作业时,一个电话打给你,而同时呢,你突然发现煤气泄露,味道极重(纯举例子,无恶意)。你是选择先接电话呢,还是先去解决煤气泄漏问题呢?无论你怎么选择,只能选择一个,那么它就是优先度高的事情。

那么这五个中断系统的优先度是怎么样的呢

这五个中断系统,按照如图的优先度顺序设定了。当然也可以调整改变顺序,但是呢为了统一,我们便不去改变了,也不去讨论如何改变。一般默认的优先度顺序就是这样。

举个例子,当你设定了时钟0和外部中断0,而触发者又是同一个(比如说我们可以设定为按下按键),那这个时候那个中断先进行呢?

没错,就是先执行外部中断0的中断函数。

Snipaste_2022-11-20_00-16-30.png

  • 中断寄存器 下图为中断的寄存器--啥意思?通俗理解,就是8为输入码,按一定的顺序,你应该输入什么值,来运行控制什么中断系统或者请求标志 Snipaste_2022-11-20_00-16-10.png
  • 中断响应条件(如下图) 画红线的两点,第一点是指应该存在中断源(就是你主程序是写作业,那别人打电话给你就是中断源); 第二点是你选择中断后,要设置允许中断,才有用; 第三点如图,EA=1,接通中断总开关

Snipaste_2022-11-20_00-16-38.png

  • 语法 上边三行为指令,下面的就是中断触发后会执行的函数 interrupt X 为关键字,interrupt不能拼错,否则实现不了;X代表上面列出来的5个中断系统对应的中断号,比如外部中断0就对应 0,一旦中断号写错,你中断寄存器响应条件配置好了,也实现不了你需要的效果!!! Snipaste_2022-11-20_00-16-52.png

这期主要是当时巩固知识,而没有特地去做该模块,所以没有实例小代码,后面我会补上的!!(待续···)