0°

(六)51基础:8051中断

介绍

中断是在连续工作中随机发生的事件。这就像你忙于工作时的电话,根据电话优先级,你决定是接听还是忽视。

微控制器也是如此。8051架构处理5个中断源,其中两个是内部的(定时器中断),两个是外部的,一个是串行中断。每个中断都有其中断向量地址。最高优先级中断是复位,向量地址为0x0000。

向量地址:这是控制器在中断后跳转以服务ISR(中断服务程序)的地址。

(六)51基础:8051中断

Reset

  • 复位是优先级最高的中断,复位8051单片机开始执行0x0000地址的代码。

内部中断(定时器中断)

  • 8051有两个内部中断,即timer0和timer1。只要定时器溢出,就会设置定时器溢出标志(TF0 / TF1)。然后微控制器跳转到它们的向量地址以服务中断。为此,应启用全局和定时器中断。

串行中断

  • 8051具有串行通信端口并具有相关的串行中断标志(TI / RI)。当发送一个字节的最后一位(停止位)时,TI串行中断标志置位,当接收到接收数据字节的最后一位(停止位)时,RI标志置位。

IE寄存器:中断使能寄存器

  • IE寄存器用于启用/禁用中断源。
(六)51基础:8051中断

8051 IE寄存器

Bit 7 – EA:启用所有位

  • 1 =启用所有中断
  • 0 =禁用所有中断

Bit 6,5 -保留位

Bit 4 – ES:使能串行中断位

  • 1 =启用串行中断
  • 0 =禁用串行中断

Bit 3 – ET1:使能Timer1中断位

  • 1 =使能Timer1中断
  • 0 =禁止Timer1中断

Bit 2 – EX1:使能External1中断位

  • 1 =启用External1中断
  • 0 =禁用External1中断

Bit 1 – ET0:使能Timer0中断位

  • 1 =使能Timer0中断
  • 0 =禁止Timer0中断

Bit 1 – ET0:使能External0中断位

  • 1 =启用External0中断
  • 0 =禁用External0中断

中断优先级

可以使用中断优先级寄存器(IP)分配中断优先级

复位后的中断优先级:

(六)51基础:8051中断

在该表中,显示了复位时的中断优先级。根据8051中断优先级,在微控制器完成优先级较高的中断之前,不会提供最低优先级的中断。在两个或多个中断到达的情况下,微控制器根据优先级对它们进行排队。

IP寄存器:中断优先级寄存器

8051具有中断优先级寄存器,用于为中断分配优先级。

(六)51基础:8051中断

中断优先级寄存器

Bit 7,6,5 -保留位。

Bit 4 – PS:串行中断优先级位

  • 1 =为串行中断分配高优先级。
  • 0 =为串行中断分配低优先级。

Bit 3 – PT1: Timer1中断优先级位

  • 1 =为Timer1中断分配高优先级。
  • 0 =为Timer1中断分配低优先级。

Bit 2 – PX1:外部中断1优先级位

  • 1 =为External1中断分配高优先级。
  • 0 =为External1中断分配低优先级。

Bit 1 – PT0: Timer0中断优先级位

  • 1 =为Timer0中断分配高优先级。
  • 0 =为Timer0中断分配低优先级。

Bit 0 – PX0: External0中断优先级位

  • 1 =为External0中断分配高优先级。
  • 0 =为External0中断分配低优先级。

8051中的外部中断

  • 8051有两个外部中断INT0和INT1。
  • 通过外部中断引脚PORT3.2,PORT3.3提供电平或边沿,可以通过外部中断中断8051控制器。
  • 如果启用了全局和外部中断,外部外设可以通过这些外部中断中断微控制器。
  • 然后,微控制器将执行当前指令并跳转到中断服务程序(ISR)以进行中断。
  • 在轮询方法中,微控制器必须通过监视引脚来连续检查脉冲,而在中断方法中,微控制器不需要轮询。每当发生中断时,微控制器就会发出中断请求。

外部中断有两种类型的激活级别:

  1. 边沿触发(上升沿/下降沿检测发生中断)
  2. 电平触发(高/低电平检测中断)

在8051中,使用两种类型的激活级别。这些是:

  • 低电平触发

只要在全局和外部中断使能时INT0 / INT1引脚上检测到低电平,控制器就跳转到中断服务程序(ISR)以服务中断。

  • 下降沿触发

每当在INT0 / INT1引脚上检测到下降沿时全局和ext。中断使能,控制器跳转到中断服务程序(ISR)以服务中断。

TCON寄存器中有低4个标志位,用于选择和监视外部中断类型和ISR状态。

TCON:定时器/计数器寄存器

(六)51基础:8051中断

8051 TCON寄存器

Bit 3- IE1

  • 外部中断1边沿标志,当INT1引脚发生中断时由硬件置1,当中断处理完成时由硬件清零。

Bit 2- IT1
该位选择INT1引脚上的外部中断事件类型,

  • 1 =在下降沿设置中断
  • 0 =设置低电平中断

Bit 1- IE0

  • 中断0边沿标志,当INT0引脚发生中断时由硬件置1,当处理中断时由硬件清零

Bit 0 – IT0

该位选择INT0引脚上的外部中断事件类型。

  • 1 =在下降沿设置中断
  • 0 =设置低电平中断

让我们编写AT89C51的外部中断,以便在INT0引脚上检测到下降沿时,微控制器将切换P1.0引脚。

(六)51基础:8051中断

8051边沿触发外部中断

编程步骤

  1. 启用全局中断,即EA = 1
  2. 启用外部中断,即EX0 = 1
  3. 启用中断触发模式,即中断是下降沿触发还是电平触发,这里我们将使用下降沿触发中断,因此使IT0 = 1。

程序

/*
 * 8051_External_Interrupt
 * https://www.qutaojiao.com
 */

#include <reg51.h>	/* Include x51 header file */
sbit LED = P1^0;	/* set LED on port1 */ 

void Ext_int_Init()				
{
	EA  = 1;	/* Enable global interrupt */
	EX0 = 1;      	/* Enable Ext. interrupt0 */
	IT0 = 1;      	/* Select Ext. interrupt0 on falling edge */
}
											
void External0_ISR() interrupt 0
{
	LED = ~LED;	/* Toggle pin on falling edge on INT0 pin */
} 

注意:对于电平触发中断,需要清零IT0,即IT0 = 0。

本节课程序下载:

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论