51单片机中断简介及例程分析

控制/MCU

1811人已加入

描述

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 源代码

单片机

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分