控制/MCU
5.1 中断概念
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行,以一个例子来说明什么叫做中断。
假设一个人在家看电视,这时候突然门铃响了,这个人此时就要停止看电视去开门,然后关上门后继续回来看电视,这个例子当中看电视这个动作就是常规的计算机运行过程,门铃响就相当于一个中断信号(中断请求),用户这时停止看电视(中断当前程序)起来开门(中断响应),关上门后(中断处理结束)继续看电视(继续执行当前程序)。这一整个过程就是中断发生时,CPU的处理方式。
还是上面的例子,现在假设门铃响的时候水烧开了,此时用户可以选择先开门后关水,也可以选择先关水后开门,这个先后关系就是中断优先级,假设门铃的中断优先级比烧水的优先级高,那就会先开门,后关水,反之,则会先关水,后开门,这就是针对两个及两个以上中断同时发生的时候CPU根据中断优先级执行中断的过程。
CPU在处理某一件事件A时,发生了另外一件事件B请求CPU迅速去处理(中断发生),此时CPU暂时中断当前的工作,转过去处理事件B(中断响应与中断服务),等到CPU将事件B处理结束后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程叫做中断。
传统51单片机具有5个中断源,中断优先级从高到低依次是:外部中断0(interrupt0)、定时器0(interrupt1)、外部中断1(interrupt2)、定时器1(interrupt3)和串口中断(interrupt4)。
引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。
5.2 51单片机中断简介
51单片机的中断结构图如下图所示。
从图中可知配置外部中断必须先配置IT0(或者IT1,定时器与串口没有这一项),根据赋值选择触发方式,外部中断的触发方式总共有两种,下降沿触发与高电平触发,然后配置对应的中断使能,EX0,ET0,EX1,ET1,ES,最后开启总中断EA即可。
5.3 外部中断相关寄存器
5.3.1 中断控制寄存器IE
寄存器地址:0xA8
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
EA | - | - | ES | ET1 | EX1 | ET0 | EX0 |
Bit 7:总中断使能
0:关闭
1:开启
Bit 4:串口中断使能
0:关闭
1:开启
Bit 3:定时器1中断使能
0:关闭
1:开启
Bit 2:外部中断1中断使能
0:关闭
1:开启
Bit 1:定时器0中断使能
0:关闭
1:开启
Bit 0:外部中断0中断使能
0:关闭
1:开启
5.3.2 中断标志寄存器TCON
寄存器地址:0x88
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
Bit 7:定时/计数器1溢出中断请求标志位
0:没有产生中断
1:产生中断
Bit 6:定时/计数器1使能
0:定时/计数器1关闭
1:定时/计数器1使能
Bit 5:定时/计数器0溢出中断请求标志位
0:没有产生中断
1:产生中断
Bit 4:定时/计数器0使能
0:定时/计数器0关闭
1:定时/计数器0使能
Bit 3:外部中断1中断请求标志位
0:没有产生中断
1:产生中断
Bit 2:外部中断1触发方式控制位
0:电平触发方式
1:边沿触发方式(下降沿有效)
Bit 1:外部中断0中断请求标志位
0:没有产生中断
1:产生中断
Bit 0:外部中断0触发方式控制位
0:电平触发方式
1:边沿触发方式(下降沿有效)
5.3.3 中断优先级控制寄存器IP
寄存器地址:0xB8
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
- | - | PT2 | PS | PT1 | PX1 | PT0 | PX0 |
Bit 5:定时/计数器2优先级设置
Bit 4:串口优先级设置
Bit 3:定时/计数器1优先级设置
Bit 2:外部中断1优先级设置
Bit 1:定时/计数器0优先级设置
Bit 0:外部中断0优先级设置
5.4 例程分析
5.4.1 原理图
5.4.2 实现的功能
没有中断发生时,D1~D8按顺序循环点亮,每次只亮一个LED,当按键按下时,LED灯全亮1s,1s后从LED灯断开的位置继续循环点亮(不允许从从开始点亮)。
5.4.3 源代码
全部0条评论
快来发表一下你的评论吧 !