首页 理论教育外部中断的引入和清除,寄存器位地址表示

外部中断的引入和清除,寄存器位地址表示

【摘要】:外部中断是由外部信号引起的,需要在芯片上设置引入端。中断请求的撤销。中断响应后要及时清除中断请求标志位。定时中断和脉冲方式中断的撤销是自动的,不需要用户干预。若仅有一个中断源或不考虑中断优先控制时,外部中断初始化要设置中断总允许、外中断允许和中断方式三项。寄存器的内容及位地址表示如下:单片机复位后,IE=00H禁止一切中断。

所谓“中断”就是计算机为提高运行效率而采用的一种方式。例如对一个变量,当它状态发生改变时就要立即进行处理。为此,就必须时刻查询这个变量的状态,但这样做会浪费计算机大量的运行时间,显然这是不合理的。而采用“中断”方式就可以有效地克服这种缺点。当一个变量一旦要发生的改变时,计算机立即自动触发“中断”转向这一段服务程序,执行完成后自动返回主程序的原断点继续运行,不必要时刻查询这个变量的状态。变量在不发生改变时可以放心做其他工作。这样就解放了计算机的大量能力,提高了运行效率。就像我们接听电话一样,一旦电话铃声响起时,就立即中断当前的工作,转去接电话。结束后立即返回原工作继续进行,而不必要时刻守在电话机旁。由此看来“中断”是非常必要的一种方式。

在以下的练习中为了利于理解、掌握,在中断响应的服务程序均用了一段延时程序。但实际应用中是不同功能的服务程序,这在本节应用实例程序中将体现。

1.【例3-48】 两个灯循环闪烁源程序

978-7-111-47138-7-Chapter03-106.jpg

978-7-111-47138-7-Chapter03-107.jpg

实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。安装在单片机上P1.2和P1.5的发光二极管闪烁。

程序点评:程序应用了0中断,电平触发方式。

说明:若是应用复制、粘贴的方法将该程序中粘贴在Keil μ Vision2编译软件中使用时,要将Word文档下的分号改变成英文输入状态下的分号。编译中注释部分要变成绿色。指令变成蓝色。另外,还要注意语句中不能随便加空格,特别要区分字母“O”与数字“0”的书写。

2.中断控制学习

(1)中断源

MCS51系列单片机共有5个中断源分3类,外部中断2个、定时中断2个、串行中断1个,对应的中断地址区为

0003H~000AH 外部中断0中断地址区

000BH~0012H 定时器/计数器0中断地址区

0013H~001AH 外部中断1中断地址区

001BH~0022H 定时器/计数器1中断地址区

0023H~002AH 串行中断地址区

一般使用时在5个中断地址区首地址存放一条无条件转移指令,中断在响应后转移到中断程序的入口地址。

MCS51系列单片机5个中断源的使用与P3口的第二功能设置紧密相关。P3口的第二功能见表3-2。

表3-2 P3口的第二功能

978-7-111-47138-7-Chapter03-108.jpg

定时中断是为满足定时或计数的需要设置的。串行中断是为数据传送的需要设置的。这两种中断的请求是在单片机内部发生的,不需要在芯片上设置引入端。

外部中断是由外部信号引起的,需要在芯片上设置引入端。外部中断0中断和外部中断1中断分别需要在芯片P3.2978-7-111-47138-7-Chapter03-109.jpg和P3.3978-7-111-47138-7-Chapter03-110.jpg引入。

外部中断申请有两种信号方式:电平方式和脉冲方式。

电平方式的中断请求是低电平有效。只要在单片机的中断请求端,即芯片P3.2978-7-111-47138-7-Chapter03-111.jpg和P3.3978-7-111-47138-7-Chapter03-112.jpg端采样到有效的低电平就可以激活外部中断。

脉冲方式的中断请求是脉冲的后沿负跳有效。只要在单片机的中断请求端,即芯片P3.2978-7-111-47138-7-Chapter03-113.jpg和P3.3978-7-111-47138-7-Chapter03-114.jpg端采样到前一次是高电平,后一次是低电平就可以激活外部中断。

中断请求的撤销。中断响应后要及时清除中断请求标志位。定时中断和脉冲方式中断的撤销是自动的,不需要用户干预。串行中断和电平方式中断的撤销需要软件设置,如电平方式在中断响应后需要在中断请求信号引脚用软件(指令)从低电平设置成高电平。

(2)中断控制寄存器

MCS51系列单片机提供给用户的控制中断的寄存器有4个。在设计使用中断服务程序前首先要根据所选中断源的类型对中断寄存器初始化(值)进行正确的设置。若仅有一个中断源或不考虑中断优先控制时,外部中断初始化要设置中断总允许、外中断允许和中断方式三项。采用定时中断初始化要设置中断总允许、外中断允许两项。

1)中断允许控制寄存器(IE)。IE是专业寄存器,其地址为0A8H,位地址是0A8H~0AFH。寄存器的内容及位地址表示如下:

978-7-111-47138-7-Chapter03-115.jpg

单片机复位后,IE=00H禁止一切中断。中断控制各位状态的设置如下:

①EA———中断总允许控制位。

若EA=0,禁止一切中断;若EA=1,中断条件总允许。

②×———无效位,是保留位。

③ET2———定时器2中断允许位。

若ET2=0,此位禁止;ET2=1,此位允许有效(EA=1时)。

④ES———串行接口中断允许位。

若ES=0,此位禁止;ES=1,此位允许有效(EA=1时)。

⑤ET1———定时器1中断允许位。

若ET1=0,此位禁止;ET1=1,此位允许有效(EA=1时)。

⑥EX1———外部中断1允许位。

若EX1=0,此位禁止;EX1=1,此位允许有效(EA=1时)。

⑦ET0———定时器0中断允许位。

若ET0=0,此位禁止;ET0=1,此位允许有效(EA=1时)。

⑧EX0———外部中断0允许位。

若EX0=0,此位禁止;EX0=1,此位允许有效(EA=1时)。

2)中断优先级寄存器IP。IP是专业寄存器,其地址0B8H。位地址是0B8H~0BFH。寄存器的内容及位地址表示如下:

978-7-111-47138-7-Chapter03-116.jpg

单片机复位后IP=00H中断无优先级。在各位状态的设置中,若某位置“1”,则表示优先级为高,若该位清“0”表示优先级为低。×表示无效位,是保留位。

①PT2———定时器2优先级设置位。

PT2=1,优先级为高。

②PS———串行接口中断优先级设置位。

PS=1,优先级为高。

③PT1———定时器1中断优先级设置位。

PT1=1,优先级为高。

④PX1———外部中断1优先级设置位。

PX1=1,优先级为高。(www.chuimin.cn)

⑤PT0———定时器0中断优先级设置位。

PT0=1,优先级为高。

⑥PX0———外部中断0优先级设置位。

PX0=1,优先级为高。

所谓优先级设置就是设置计算机对中断响应的选择权。当几个通道同时发生中断时,计算机只能选择一个通道进行响应,即具有高优先级的通道才能被响应。当多个高优先级中断发生或无优先级设定时,要按照下面自然优先级响应中断:PX0最高→PT0→PX1→PT1→PS→PT2最低。

3)串行接口控制寄存器(SCON)。SCON是专业寄存器,其地址位98H。位地址是98H~9FH。寄存器的内容及位地址表示如下:

978-7-111-47138-7-Chapter03-117.jpg

串行接口控制寄存器(SCON)与中断有关的控制位有2位,即串行发送位和接收位。

①TI———串行接口发送中断请求标志位。在转向中断服务程序后,用软件清“0”。

②RI———串行接口接收中断请求标志位。在转向中断服务程序后,用软件清“0”。

4)定时器(中断)控制寄存器(TCON)。TCON是专业寄存器,用于保存外部中断请求以及定时器的计数溢出。它既有中断控制功能又有定时器/计数器的控制功能。其地址为88H,位地址8FH~88H。寄存器的内容及位地址表示如下:

978-7-111-47138-7-Chapter03-118.jpg

单片机复位后,TCON=00H。各位标志如下:

①TF1———计数器T/C1的溢出标志位。

当计数器T/C1产生计数溢出时,溢出标志位TF1=1。当进入中断服务程序后,由硬件自动清“0”。

②TF0———计数器T/C0的溢出标志。

当计数器T/C0产生计数溢出时,溢出标志位TF0=1。当进入中断服务程序后,由硬件自动清“0”。

计数器的溢出标志位TF1和TF0的使用有两种情况。采用中断方式时,作为中断请求标志位使用。在转向中断服务程序后,由硬件自动清“0”。采用查询方式时,作为查询状态位使用。当查询有效后应用软件的方法及时将该位清“0”。

③TR1———定时器T/C1运行控制位。

若令TR1=1,定时器T/C1进入工作,TR1=0,定时器T/C1停止工作,均由软件控制。

④TR0———定时T/C0器运行控制位。

若令TR0=1,定时器T/C0进入工作,TR0=0,定时器T/C0停止工作,均由软件控制。

⑤IE1———外部中断978-7-111-47138-7-Chapter03-119.jpg请求标志位。

当单片机检测到978-7-111-47138-7-Chapter03-120.jpgINT1引脚上出现外部中断请求时,IE1=1,在进入中断服务程序后该位由硬件自动清“0”。

⑥IE0———外部中断978-7-111-47138-7-Chapter03-121.jpg请求标志位

当单片机检测到978-7-111-47138-7-Chapter03-122.jpgINT0引脚上出现外部中断请求时,IE0=1,在进入中断服务程序后该位由硬件自动清“0”。

⑦IT1———是外部中断978-7-111-47138-7-Chapter03-123.jpgINT1脉冲触发类型控制位。

由软件设置或清除,当IT1=1时,是下降沿触发,当IT1=0时,是电平触发。

⑧IT0———是外部中断978-7-111-47138-7-Chapter03-124.jpg脉冲触发类型控制位。

由软件设置或清除,当IT0=1时,是下降沿触发,当IT0=0时,是电平触发。

(3)中断初始化设置(中断控制寄存器的状态设置)

在设计单片机程序时,如果要使用中服务程序就要遇到中断初始化问题。中断初始化主要有两个工作,一是结合选定的中断类型确定中断地址区,即中断入口;另一个工作是设置中断控制寄存器的状态。若不包括优先级控制,外部中断要设置中断总允许、外中断允许和中断方式。对于定时中断没有中断方式的设定。设置时可以对控制寄存器进行字节操作,也可以进行位操作。

具体设置步骤如下:

1)确定TCON值,选定中断触发方式。

2)确定IE值,EA=1,允许总中断并设置中断的类型。

3)确定IP值,因只有一个中断,可以不设置优先级,仍保持复位状态IP=00H。

4)确定中断服务程序地址入口。

5)确定控制寄存器初始值是进行字节设置,还是位设置。

【例3-49】 外部中断1中断,电平触发方式(对控制寄存器位操作)

978-7-111-47138-7-Chapter03-125.jpg

978-7-111-47138-7-Chapter03-126.jpg

【例3-50】 外部中断0中断,脉冲触发方式(对控制寄存器位操作)

978-7-111-47138-7-Chapter03-127.jpg

在对外部中断初始化的过程中要注意,选择外部中断0或外部中断1时,一方面要与中断0、中断1的地址对应,另一方面也要与各控制寄存器中的中断0、中断1位符号相对应。对于定时器/计数器中断和串行中断的初始化练习,将在后续的实例中讲述及应用,在此不再叙述。

3.编程练习

【例3-51】 利用外部中断0中断(脉冲触发方式)流动灯源程序

978-7-111-47138-7-Chapter03-128.jpg

978-7-111-47138-7-Chapter03-129.jpg

实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。安装在单片机上P1口的8个灯循环往返亮灭。

程序点评:0中断,入口地址为0003H,对应P3.2口线,脉冲触发方式后沿负跳有效。

本程序在编译过程中要注意左右位移指令(助记符)与累加器A之间仅留一个空格。

【例3-52】 利用外部中断1中断(电平触发方式)二进制数进位源程序

978-7-111-47138-7-Chapter03-130.jpg

978-7-111-47138-7-Chapter03-131.jpg

实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。安装在P1口各位的发光二极管从0000 0000B开始至1111 1111B模拟二进制数规律亮灭。

程序点评:程序使用了1中断,入口地址位000BH,对应P3.3口线,电平触发方式为低电平有效。