中断系统:外部中断

news/2025/3/20 3:37:29/

中断系统:外部中断

实现功能

按下独立按键Key3,LED流水灯向右;按下Key4,LED流水灯向左。

单片机型号:STC89C52

硬件原理

在这里插入图片描述

中断系统就是当系统在进行一项工作时,需要终止这项工作,转而去执行另一项工作,当执行完成后再接着执行第一项工作。

如上图,STC89C52有两个外部中断(INT0INT1)、两个定时器中断(T0T1)、一个串口中断(RX/TX

以外部中断 INT0 讲解,INT1 同理。

外部中断 INT0 中的 IT0 是选择中断触发方式的,如果等于 1 ,则是下降沿触发中断;如果等于 0 ,则是低电平触发中断。EX0INT0 的中断允许,将其赋值为 1 ,则可以开启 INT0 的中断允许。EA 是总中断 ,只有将其打开才能允许中断。IP 是控制中断的优先级的,这里不做介绍,使用默认优先级。INT0 的管脚连在 P3^2INT1 的管脚连接在 P3^3 ,和独立按键 Key3Key4 连在同一个管脚,所以可以用独立按键 Key3Key4 来触发外部中断。

中断标号为:

  • INT0 0
  • T0 1
  • INT1 2
  • T1 3
  • RX/TX 4

软件编写

外部中断配置:

  • 中断源有中断请求。
  • 中断源的中断允许位为1.
  • CPU开中断。(即 EA=1)

题目要求按下两个按键,流水灯需要往不同的方向流动,所以需要两个外部中断。首先将两个外部中断配置好,再写出两个外部中断需要执行的函数。在写外部中断函数时需要用到关键字 interrupt ,再在后面写上中断标号。例如外部中断 INT0 的中断函数这样写 void Int0() interrupt 0 ,千万不要将中断标号写错了。

#include <REGX52.H>
#include <intrins.h>#define LED  P2//定义独立按键管脚
sbit Key3=P3^2;  
sbit Key4=P3^3;unsigned int i;void delay(unsigned int x)
{while(x--);
}void Int0_Init()   //外部中断 0 配置 
{IT0=1;    //跳变沿触发方式(下降沿)EX0=1;    //打开 INT0 的中断允许EA=1;     //打开总中断
}void Int1_Init()   //外部中断 1 配置
{IT1=1;EX1=1;EA=1;
}void Int0() interrupt 0   //外部中断 0 中断函数
{delay(1000);if(Key3==0){for(i=0;i<16;i++)   //流水灯流动点亮16个灯后停止流动{delay(5000);LED=_crol_(LED,1);delay(5000);}	}
}void Int1() interrupt 2   //外部中断 1 中断函数
{delay(1000);if(Key4==0){for(i=0;i<16;i++){delay(5000);LED=_cror_(LED,1);delay(5000);}	}
}void main()
{LED=~0x01;    //流水灯初始赋值while(1){Int1_Init();Int0_Init();}
}

http://www.ppmy.cn/news/123455.html

相关文章

Linux中断子系统(一)-中断控制器及驱动分析

1. 概述 从这篇文章开始&#xff0c;来聊一聊中断子系统。中断是处理器用于异步处理外围设备请求的一种机制&#xff0c;可以说中断处理是操作系统管理外围设备的基石&#xff0c;此外系统调度、核间交互等都离不开中断&#xff0c;它的重要性不言而喻。 来一张概要的分层图&…

51单片机中断系统

中断定义 CPU在处理某一事件A时&#xff0c;发生了另一事件B请求CPU迅速去处理&#xff08;中断发生&#xff09;&#xff1b; CPU暂时中断当前的工作&#xff0c;转去处理事件B&#xff08;中断响应和中断服务&#xff09;&#xff1b; 待CPU将事件B处理完毕后&#xff0c;再回…

中断控制器及驱动分析

说明&#xff1a; Kernel版本&#xff1a;4.14ARM64处理器&#xff0c;Contex-A53&#xff0c;双核使用工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 概述 从这篇文章开始&#xff0c;来聊一聊中断子系统。 中断是处理器用于异步处理外围设备请求的一种机制&am…

程序的中断控制方式(3种)

1.return return值&#xff1a;将方法的运算结果返回给调用者并退出当前执行的代码块 return&#xff1a;告诉虚拟机运行到此处时退出当前执行的代码块 2.break和continue 在循环条件满足的情况下提前终止循环语句的执行 ps&#xff1a;若是循环嵌套的话是跳出最近的那次循…

Cortex-M0中断控制和系统控制

目录 1.NVIC和系统控制块特性2.中断使能和清除使能3.中断挂起和清除挂起4.中断优先级5.中断控制的通用汇编代码使能和禁止中断设置和清除中断挂起状态设置中断优先级 6.异常屏蔽寄存器&#xff08;PRIMASK&#xff09;7.中断输入和挂起行为8.中断等待9.系统异常的控制寄存器10.…

单片机的中断系统(单片机)

目录 一、中断系统的基本概念 二、中断系统的控制 三、中断系统应用举例 1.实现方法 2.程序设计 主要看注释 一、中断系统的基本概念 1、中断源 要让单片机停止当前的程序去做其他事情&#xff0c;需要向它发出请求信号&#xff0c;CPU接收到中断请求信号后才能产生中…

Linux中断(interrupt)子系统之三:中断流控处理层

1. 中断流控层简介 早期的内核版本中&#xff0c;几乎所有的中断都是由__do_IRQ函数进行处理&#xff0c;但是&#xff0c;因为各种中断请求的电气特性会有所不同&#xff0c;又或者中断控制器的特性也不同&#xff0c;这会导致以下这些处理也会有所不同&#xff1a; 何时对中…

中断控制器及中断控制

所有以ARM为内核的处理器的异常共分为&#xff17;中&#xff0c;每一种异常对应一个异常向量&#xff0c;每个异常向量占&#xff14;个字节&#xff0c;指出中断服务程序的入口地址。异常向量表从0x00000000~0x0000001F。 其中普通中断和快速中断的向量地址为0x00000018~0x0…