51 单片机中断系统总结 ---- 外部中断

51 单片机中断系统总结—- 外部中断

中断系统是 51 单片机的一个重难点,如果没有掌握中断系统的使用方法,就不能说是学会了 51 单片机。本文档完全用自己的语言来解释中断系统,目的是给自己的学习做备份,以方便以后复习,同时希望大家学习时单片机时,理解使用中断系统有所帮助。初学单片机,若有错误请及时指正!

什么是中断系统

当处理器正在执行处理当前程序时,接收中断信号,触发中断,请求 cpu 优先处理另一个程序(中断程序),处理完成此请求后,处理器返回继续执行原未完成的程序。

中断系统可以分为两种,外部中断与定时 / 计数器中断。本文主要说明外部中断,在下一篇文档中在说明定时 / 计数器中断的同时,与外部中断进行对比。

外部中断引脚

外部中断 0(IINT0) P3^2

外部中断 1(INT1) P3^3

两个引脚都为双功能引脚,既可以作为双向 I/O 引脚使用,也可以作为中断引脚。但一般为中断专用引脚。

什么是外部中断

当单片机中断引脚检测到信号后,即向处理器发出中断请求,请求执行中断程序。之所以称作外部中断,是因为串口的信号变化是由外部原因产生的。在编写程序时要注意编写中断条件,比如按键按下、传感器检测到某特定数据等。

单片机的中断管脚可以检测到两种中断信号—-** 低电平与下降沿,** 这两种触发方式略有不同。

低电平触发:当默认的高电平转为低电平后,发出中断请求。只要引脚检测到此时电平为低电平时,就会发出中断请求。

下降沿触发:当默认的高电平转为低电平时,电平呈现出由高变低的变化过程,引脚检测到电平下降的过程,发出中断请求。

当你选择低电平为触发条件时,假设你按着按键不放手,那么此时中断引脚上为持续低电平。如果此时中断程序已经执行完成,引脚仍然是低电平,所以即使你没有第二次按下按键,处理器也将进行第二次,甚至多次中断程序。而当你选择下降沿为触发方式后,只有你在第一次中断完成后再按下按键才能进行第二次中断。

TCON 寄存器

名称 功能
7 TF1 定时器 Timer1 中断标志位。
6 TR1 Timer1 中断开关位。
5 TF0 定时器 Timer0 中断标志位; TF0=1 表示中断程序正在被执行,TF=0 表示当前没有执行中断程序。
4 TR0 Timer0 中断开关位。 TR=1 时定时器 0 开启,TR=0 时定时器 0 关闭。
3 IE1 INT1 中断标志位。
2 IT1 设置 INT1 中断触发方式。
1 IE0 INT0 中断标志位。 IE0=1 表示中断程序正在被执行,IE=0 表示当前没有执
0 IT0 设置 INT0 中断触发方式。 IT=1 时为下降沿触发,IT=0 时为低电平触发。

IE 寄存器

名称 功能
7 EA 中断总开关。当 EA=1 开启中断系统,当 EA1=0 时任何中断都不能使用。
6
5 ET2
4 ES
3 ET1
2 EX1 INT1 开关。
1 ET0
0 EX0 INT0 开关。当 EX0=1 时启用外部中断 0,当 EX0=0 时关闭外部中断 0。

在编写程序中,对寄存器的操作直接使用其名称即可。

中断号

0:外部中断 0

1:定时 / 计数器 0

2:外部中断 1

3:定时 / 计数器 1

在编写中断程序时,中断号即代表相应的中断方式。

中断相应的条件

  1. 设置中断条件,设置中断方式。

  2. 打开中断开关,包括总开关与中断方式对应的开关。

  3. 满足已设置的中断条件,即可 cpu 提出中断请求。

中断函数

'''

void NAME() interrupt 0 // 编写一个函数名为 NAME 的中断函数,使用外部中断 0,中断号为 0

{

// 中断函数主体

}

'''