持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
🍅中断系统
中断系统也是 51单片机 另外的一个知识点了,但是这个中断系统是穿插在很多其它的设备之间的,就是说我们定时器它也是需要一个中断系统的,还有串口阿也是其中一个类似以及IO 口它也是需要一个中断系统的。更加高级的话,里面有很多设备都是需要用到 IO 口的。
从这里我们可以发现 中断系统 它是一个可以和很多外设打关系的。所以中断系统是一定要学好的才行。
中断系统是干什么的如下↓
中断系统是为使 CPU 具有对外界紧急时间的 实时处理能力而设置的。
举例→比如你明天说好跟朋友去晨跑,你定义6.00的闹钟,那么你明天听到闹钟你就知道要和朋友去晨跑了,如果没有这个闹钟那就可能你就睡忘过头了,这/"闹钟" == "中断系统"/
🍅中断系统的定义
当中央处理机 CPU 正在处理某件事情的时候外界发生了紧急事件求救,要求 CPU 暂停工作,转而去处理这个紧急时间,处理玩之后,再回到原来被中断的地方,继续原来的工作。这样的过程被称之为是:中断。
比如:你在写作业的时候,突然开水壶烧开了,此时的你要暂停写作业,去烧水壶把插头关了,处理完烧水壶的事情之后,再回到你的课桌上继续开始写作业!
微型机的中断系统一般允许多个中断源,当几个中断源同时向 CPU 请求中断,要求为它服务的时候,这时候就存在了 CPU 优先响应哪一个中断源请求的问题,通常根据中断源的轻重缓急进行排队,优先级处理最紧急的中断源的请求,规定了每一个中断源的优先级别,CPU 总是先响应优先级别最高的中断请求。
比如:你在写作业的时候,突然烧水壶开了和有人给你来电话了。此时你就要决定你应该优先去打电话呢还是把开水壶电源给拔了!
🍎中断系统的概述
在实行中断的过程当中,又来了一个中断。如果你判断这又来了一个中断的优先级比你这一个中断的优先级还要高的话,那么就会优先级高的中断会打断优先级低的中断。这样就形成嵌套,也叫做中断嵌套,然后最高优先级执行完之后,就是中间级优先级的中断,最后就是低优先级的中断。结束完之后,再回到我们的主程序。这种嵌套系统称为→多级嵌套系统,没有中断嵌套的话就称之为→单级嵌套系统。
🍊中断流程图
编辑主程序(main)函数 --> 其它子函数 --> 中断来了定时器溢出,中断请求 --> 跳转到中断的一个函数里面执行中断里面的任务 --> 中断执行完之后再返回原来断点的地方就是原来从哪里停的现在从哪里回来(实际上相当于调用完函数执行下面的内容) --> 然后再继续执行主函数。
从上面的理解当中我们可以看出,这个程序当中在一定的程度上,可以同时完成两项任务。比如说:执行主程序其它子程序也在执行。就像是LED的流水灯上,既可以执行流水灯的扫描,其次按键也可以进行控制流水灯。好处是:大大的提高了运行效率,有兴趣可以了解一下中断的概念实际上是非常多的。
🍎STC89C52中断资源
中断源个数:8个(外部中断0、定时器0中断、外部中断1、定时器1中断、串口中断、定时器2中断、外部中断2、外部中断3)传统的单片机是没有外部中断2以及3的,是我们这个型号又增加了一些中断,中断优先级个数:4个。
中断号的定义和我们普通的子函数都是一样的,只不过在后面加上了一个中断的入口。
interrupt0 表示的是外部中断(0)。
interrupt1 表示(定时器中断0)
interrupt2 表示(外部中断1)
interrupt3 表示(定时器中断1)
interrupt4 表示(串口中断)
🍎注意:中断系统实际上和单片机一样也是分为型号的,中断的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的中断资源,例如中断源个数不同、中断优先级个数不同等等......
🍅定时器和中断系统
- 中断源:INT0(外部中断0)
- INT1(外部中断1)
- T0(定时器0)
- T1(定时器1)
- RXD和TXD(同属串口中断)
注意:这里的中断系统是传统意义上的51单片机的图册,我们使用的中断系统,它的一个内部资源会相对于较多一些,也更加的复杂。可以在上述图中发现,传统的单片机上最高只有两个优先级,中断源的个数也只有五个(RX和TX实际上都是串口中断),而我们89C51单片机一共有四个优先级,中断源个数一共有八个。
在串口终端当中又有 接收中断RX以及 发射中断TX。
🍎流程大致如下↓
定时器时钟系统[12MHZ分频]
计数系统(TR0启动⒈或者暂停0)然后计数器开始增加增加到溢出
产生中断
接在TF0
ET0两个开关
PT0有两个开关(决定了到高优先级还是低优先级,注:PT0为1高优先级、PT0为0低优先级)
🍎89C52的中断系统图
从上述图中可以知道定时器和中断系统是连接在一起的。