【单片机学习】51单片机【中断系统】,详细介绍

发布者:祝福的4号最新更新时间:2022-07-28 来源: csdn关键字:单片机  51单片机  中断系统 手机看文章 扫描二维码
随时随地手机看文章

一、先知先会

1、什么是中断?

CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);


CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);


待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。


形象一些,把这图“理解记住

2、什么是中断源?

引起CPU中断的根源,称为中断源。

解释:中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统


3、中断源具有的优点

随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:


分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;

实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;

可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。

4、51单片机的中断系统结构

请对照图来理解记忆(用外部中断0来举例子)


(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。

TF0(TCON.5),单片机内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,TF0=1,并向CPU申请中断。

RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时TI=1,向CPU申请中断。


二、中断允许控制位

CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。

 

三、中断请求标志

1、TCON的中断标志位

  

2、中断优先级(中断源、中断号)

同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:

中断号

51单片机的中断优先级有三条原则:

为了实现上述后两条原则,**中断系统内部设有两个用户不能寻址的优先级状态触发器。**其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。


四、中断响应条件(必须同时满足)

  

五、代码演示+讲解【独立按键控制小灯的状态(含中断优先级)】

1、全部代码

#include


sbit K1=P3^3;//外部中断0,使用K1触发

sbit K2=P3^4;//外部中断1,使用K2触发

sbit LED1=P2^0;


void Delay(unsigned int ms);


void main()

{/*外部中断1可以打断外部中断0(优先级)*/


EA=1;//开中断总开关

EX0=1;//开外部中断0开关

EX1=1;//开外部中断1开关

IT0=1;//外部中断0:下降沿触发

IT1=1;//外部中断1:下降沿触发

    

while(1)

    {

      LED1=0;//LED常亮

    }

}


void Delay(unsigned int ms) //ms*1毫秒延时函数

{

int msi,msj;

for(msi=0;msi for(msj=0;msj<112;msj++);

}


void LED1Flash() interrupt 0 //外部中断0服务程序

{

int i;

for(i=0;i<10;i++)

{

LED1=1;

Delay(300);

LED1=0;

Delay(300);//LED1闪烁10次

}

}


void LEDAllFlash() interrupt 2//外部中断1服务程序

{

int j;

for(j=0;j<3;j++)

{

P2=0x00;

Delay(300);

P2=0xFF;

Delay(300);//LED全部闪烁3次

}

}


2、细节讲解

a.Why按键不调用,能起作用?

此处定义了两个按键,但是代码中并没有显示调用,因为外部中断0和外部中断1与按键K3和K4的地址是一样的。此时中断1和中断0为相同优先级,相互不能打断。


如下所示:

b.设置中断优先级(中断嵌套)

此时,外部中断1可以打断外部中断0。


c.设置下降沿触发的原因

因为开发板的IO初始化都是高电平,如果用低电平触发中断,两者会发生冲突。


d.中断嵌套注意:中断号的使用

中断号的选择正确与否,决定中断能否执行成功。

外部中断1 和 外部中断0具体例子

六、(总结)要弄清的problems

1、你想使用的中断是哪个?选择相应的中断号;

2、你所希望的触发条件是什么?

3、你希望在中断之后干什么?


关键字:单片机  51单片机  中断系统 引用地址:【单片机学习】51单片机【中断系统】,详细介绍

上一篇:【单片机学习】51单片机【串口】,详细介绍
下一篇:【单片机】【学习日志】51单片机学习日志[Day4、2022.1.12]

推荐阅读最新更新时间:2024-11-17 10:14

51单片机在定时中断函数里执行独立按键的扫描程序
一、使用proteus绘制简单的电路图,用于后续仿真 二、编写程序 /******************************************************************************************************************** ---- @Project: Independent-KEY ---- @File: main.c ---- @Edit: ZHQ ---- @Version: V1.0 ---- @CreationTime: 20200506 ---- @ModifiedTime: 2020
[单片机]
<font color='red'>51单片机</font>在定时中断函数里执行独立按键的扫描程序
数字转速计的设计
引 言    在工业控制中经常要进行转速测量,一般采用的是接触式转速计,这种转速计必须顶在转轴中心才能进行测量,使用起来不方便,而且局限性很大,安全性也不是很好。因此,我们设计了采用光电传感器的非接触式转速计,测量范围从1.0~9999转/分钟,四位数码管显示,当被测转速小于1000转/分钟时,精确到0.1转/分钟。 1 测量原理 在被测旋转轴上贴一片铝箔作为反光体,当反光体转到光电传感器的正前方时,光电传感器发出的红外光束被反射回来,同时被光电传感器上的红外接收管接收,产生一个脉冲信号,我们利用这个信号的边沿触发单片机内部的高精度定时器进行计时,精度可达1μs,当反光体再次转到光电传感器的正前方时,利用光反射信号的边沿停止
[工业控制]
51单片机驱动高精度时钟DS3231源代码
本程序一共有2个文件,成功的用stc89c51单片机驱动,完整的代码从 http://www.51hei.com/f/ds3231code.rar 处下载 下面是源码预览(第一个文件): /////////////////////////////////////////////////////////////////////////////////// /* DS3231.h文件 */ //////////////////////////////////////////////////////////////////////////////////// #ifndef _ds3231_h_ #define _ds3231_h
[单片机]
51单片机LED点阵实验(74HC595)
实验目的:用8*8的LED点阵显示一颗爱心。 实验仪器:普中开发板(非广告) 实验背景:出于一些原因,最近在看Arduino,但仍觉得51好玩。遂,一边看Arduino,一边整理51。 8*8的LED点阵电路如图一所示,有两种方式。单片机上集成的电路方式为第二种。 其中,行由P0口控制,列由D7~D0(HC595芯片控制,见下方)控制。 图一 首先考虑,如何先点亮一个灯? eg:让P0^7的端口为低电平,P0的其他端口为高电平;D7的端口为高电平,则第一行第一列的led被点亮。 同样的方式也可以,让其他单独的led点亮。 接着考虑,如何控制多个led的点亮? 类似与数码管的动态显示,利用余晖来进
[单片机]
<font color='red'>51单片机</font>LED点阵实验(74HC595)
AT89S51单片机串行口的内部结构及功能介绍
AT89S51单片机串行口的内部结构如下图所示。它有两个物理上独立的接收、发送缓冲器SBUF(属于特殊功能寄存器),可同时发送、接收数据。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,两个缓冲器共用一个特殊功能寄存器字节地址(99H)。 串行口的控制寄存器共有两个:特殊功能寄存器SCON和PCON。下面介绍这两个特殊功能寄存器各位的功能。 1、串行口控制寄存器SCON 串行口控制寄存器SCON,字节地址988H,可位寻址,位地址为98H~9FH。SCON的格式如下图所示。 下面介绍SCON中各位的功能。 (1) SM0、SMl:串行口4种工作方式选择位。 SM0、SM1两位的编码所对应的4种工作方式见下表。 表
[单片机]
AT89S<font color='red'>51单片机</font>串行口的内部结构及功能介绍
基于MCU和基于ASIC的LED可控硅调光方案对比与解析
作为一种新的、最有潜力的光源,LED照明以其节能、环保的优势越来越受到人们重视。加上国家和地方政府的政策鼓励,我国的LED照明产业进入了加速发展阶段,运用市场迅速增长。在室内照明方面,用LED灯替代传统的可调光白炽灯或者卤素灯也将是大势所趋。由于传统的白炽灯调光器采用可控硅调光器,用LED灯替代白炽灯时,要求不能改变原有线路,还要能适应现有的可控硅调光器。针对这一目标市场,目前很多大的半导体厂商(包括国际知名半导体厂商)都已经推出了自己的LED调光ASIC,但由于LED固有的发光原理,目前市面上的LED ASIC调光案都还不是很成熟,都有其固有的问题,本文就将针对目前的调光方案做一个详细的分析,并介绍我们基于MCU的调光方案。
[电源管理]
基于<font color='red'>MCU</font>和基于ASIC的LED可控硅调光方案对比与解析
基于PIC16F87X的电磁继电器控制设计
   0 引言   电磁继电器是自动控制中常用的一种元器件,它利用电磁原理实现接通或断开一个或一组接点的一种自动开关,广泛应用在电子设备、仪器仪表及自动化设备中。但在各种自动控制设备中,都存在一个低压的自动控制电路与高压电气电路的互相连接问题:一方面要使低压的电子电路的控制信号能够控制高压电气电路的执行元件;另一方面要为电子线路和电气电路提供良好的电隔离,以保护电子电路和人员的安全。为此,采用PIC16F87X单片机控制电磁式继电器尝试完成这一桥梁作用。    1 电磁继电器工作原理   电磁继电器是在输入电路内电流的作用下,由机械部件的相对运动产生预定响应的一种继电器。电磁继电器一般由控制线圈、铁芯、衔铁、触点簧片等
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved