扯会儿单片机开发:中断

前言

宣读到当下首,你不过好就来了一部分基础知识和单片机入门编程力量,接下去聊聊中断(Interrupt)。
据此程序员的角度说,单片机的间歇机制有点像面向对象中之事件,只不过单片机中之这些“事件”是由于另外的部件引发。


哎是暂停

简易,就是死处理器且让那拍卖非常打断她的轩然大波。就好像你在戏耍电脑,然后家里的暖壶响了,这时你晤面拖眼前之从,去厨房关火。水开始了、壶响了便是搁浅的触发,关掉煤气灶就是刹车而拍卖常之主次。当你拉了眼红就可持续回来做眼前之业务。中断也是是道理。

操作系统中断

操作系统的向上进程,大体上即是一个想方设法不断增强资源利用率的历程,而提高资源利用率就需要在程序尚未使用某种资源的时刻,把她对那种资源的占有权释放掉,而这个作为,就需要经过暂停实现。

自上述引段中好看看,操作系统中之暂停机制引入的初衷就是是以加强多道程序设计的资源利用率的。

单片机中断

在单片机中,换汤不换药,也主要是为处理发生的间歇事件要设定的

单片机开始运行后,会起执行主程序中的代码,当遇到抛锚时,单片机就见面中断读取主程序代码,转而读取中断代码,当行了中断代码后,继续手下的兆程序代码。
大多数单片机并无操作系统,比如笔者日前拿嬉戏的51文山会海。所以啊提不达到他们见面发多道程序设计,更不用说过程那些概念。因为单片机的大部用途还是独运行单一一个顺序就算足足了。


52单片机

说回到52单片机,也就是stc89c52或at89c52之类的。

类别

她发三种植中断类型

类型 说明
外部中断 比较通用,外部中断引脚收到信号后发生中断
串口中断 串口RXD引脚收到信号后发生中断,往往是接受够一个字节后触发
定时器中断 每当定时器计数溢出后触发

联合6单中断源,其中2单外表中断源,3只定时器中断源,1独串口中断源。这里才讨论52独自片机内的中断设置。

有关寄存器

暂停涉及到一定量单寄存器,一个凡是刹车允许寄存器(IE,Interrupt
Enablement),另一个凡搁浅优先级寄存器(IP,Interrupt Priority)。
停顿允许寄存器(IE)
列中断源的开关,字节地址:A8H(reg52.h中曾经定义sfr IE = 0xA8;),可以各寻址(A8H~AFH),复位时通清零。

位序号 位地址 位符号 说明
D7 AFH EA 全局中断允许位,就像电闸上总闸,是所有开启任何中断的前提,若关闭,则关闭所有中断。
D6 这一位为空,无用。
D5 ADH ET2 定时器2中断允许位,若打开则允许定时器2溢出后引发中断。
D4 ACH ES 串口中断允许位,若打开则允许RXD引脚接受到1个字节的信息后引发中断。
D3 ABH ET1 定时器1中断允许位,若打开则允许定时器1溢出后引发中断。
D2 AAH EX1 外部中断1中断允许位,若打开则允许外部中断引脚接收信号后引发中断。
D1 A9H ET0 定时器0中断允许位,若打开则允许定时器0溢出后引发中断。
D0 A8H EX0 外部中断0中断允许位,若打开则允许外部中断引脚接收信号后引发中断。

上述所有个的价值吗1凡是开辟,0是关。
停顿优先寄存器(IP)
用于设定各被断源的优先级,字节地址B8H(reg52.h中早已定义sfr IP = 0xB8;),可以各寻址(B8H~BFH),复位时全清零。

位序号 位地址 位符号 说明
D7 这一位为空,无用。
D6 这一位为空,无用。
D5 这一位为空,无用。
D4 BCH PS 串口中断优先级控制位。
D3 BBH PT1 定时器1中断优先级控制位。
D2 BAH PX1 外部中断1优先级控制位。
D1 B9H PT0 定时器0中断优先级控制位。
D0 B8H PX0 外部中断0优先级控制位。

以上各位值为1时呢胜优先级,0位低优先级。
52单片机中,供用户设置的发出点儿种植优先级,高跟亚。他们以以下老三久规则:

1.低优先级中断源而叫大优先级被断源中断,高优先级中断源不克吃其他中断源中断。
2.等同种不论高低之中断源一旦得响应,与的同级的中断源不可中断它。
3.当还要接受几单跟预级的暂停源时,响应优先级以那默认中断级别实施。

列中断源默认中断级别与暂停序号

中断源 默认中断级别 序号(C语言)
外部中断0 1st 0
定时器0中断 2nd 1
外部中断2 3rd 2
定时器1中断 4th 3
串口中断 5th 4
定时器2中断 6th 5

参考文献

1.《51单独片机C语言课程》,郭天祥 著,电子工业出版社
2.《操作系统联考复习指导》,王道论坛 组编,电子工业出版社
3.《现代操作系统》,Andrew S. Tanenbaum 著,机械工业出版社
4.单片机中断的IE和IP寄存器,电工学习网