51单片机中断系统

这篇具有很好参考价值的文章主要介绍了51单片机中断系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、中断介绍

我们先来举一个生活事例: 你打开火,烧上一壶水。然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断。

对于单片机来讲,中断是指CPU在处理某一事件A时,发生了另一件事B,请求CPU迅速去处理(中断发生);CPU暂时停止当前的工作(中断响应),转去处理事件B(中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程中称为中断。
51单片机中断系统中段请求:
中断响应:
中断返回:

中断执行顺序是中断优先级。

单片机在执行程序时其程序流程图:
51单片机中断系统
中断嵌套:类似递归。

优点:
分时操作:CPU 可以分时为多个 I/O 设备服务,提高了计算机的利用
实时响应:CPU 能够及时处理应用系统的随机事件,系统的实时性大大增

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

2、中断结构及相关寄存器

STC89C5X 系列单片机提供了 8 个中断请求源,它们分别是:外部中断0(INTO)、外部中断 1(INT1)、外部中断 2(INT2)、外部中断 3(INT3)、定时器 0中断、定时器 1 中断、定时器 2 中断、串口(UART)中断。(注意:51 系列单片机一定有基本的 5 个中断,但不全有 8 个中断,需要查看芯片手册,通常我们使用的都是基本的 5 个中断:INT0、INT1、定时器 0/1,串口中断)
学会查看芯片手册查看中断数量以及类型
学会查看中断数量类型以及中断优先级
中断连接的端口

2.1、内部结构框图:

51单片机中断系统
IE:Interrupt enable
IP:Interrupt priority
EA:Enable all
EX:Enable exterior
ES:Enable serial
从该图中看出什么?
1、外部中断0 通过TCON寄存器中IT0控制位,采取下降沿中断(1)还是低电平中断(0)出现有效中断信号时,IE0请求标志位置1。IE寄存器中总中断EA打开,EX0外部中断允许位打开。PX0打开,传入CPU中断队列中。
2、定时器中断T0 通过TCON寄存器TF0,片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,IE寄存器中总中断打开ET0定时器中断允许打开。PX0打开,传入CPU中断队列。
3、RI或TI,串行口中断请求标志。当串行口接受完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位Ti,向CPU请求中断。

2.2、中断寄存器

IE:中断允许寄存器
51单片机中断系统
EX0(IE.0):外部中断0允许位;
ET0(IE.1):定时/计数器T0中断允许位;
EX1(IE.2):外部中断1允许位;
ET1(IE.3):定时/计数器T1中断允许位;
ES(IE.4):串口中断允许位;
EA(IE.7):CPU中断允许(总允许)位。

TCON:中断请求标志寄存器
51单片机中断系统
IT0(TCON.0):外部中断0触发方式控制位,当IT0 = 0时,为电平触发方式,当IT0 = 1时,为边沿触发方式(下降沿有效)。
IE0(TCON.1):外部中断0中断请求标志位;
IT1(TCON.2):外部中断1触发方式控制位;
IE1(TCON.3):外部中断1中断请求标志位;
TF0(TCON.5):定时/计数器T0溢出中断请求标志位;
TF1(TCON.7):定时/计数器T1溢出中断请求标志位;

中断满足的条件以及使用

中断响应条件:
1、CPU中断(总中断EA)打开
2、有效中断请求信号
3、此处中断源的中断允许位为1

使用中断我们需要做什么?
1、你想使用的中断是哪个?选择相应的中断号 (有多个中断时,根据任务的优先级/根据中断做什么,选择中断号)
2、你所希望的触发条件是什么?
3、中断之后做什么

总结:1、中断初始化;2、中断所需实现功能

//以外部中断0为例子
EA = 1		//总中断打开
EX0 = 1 	//外部中断0允许位打开
ITO = 0/1		//设置外部中断的触发方式,选择中断请求的是低电平还是下降沿中断

//中断服务函数
void int0() interrupt 0
{
		//编写用户所需的功能代码
}

3、外部中断实验

实现功能:使用独立按键K3控制LED亮灭,K3连接外部中断0(p3.2)管教。

3.1、外部中断介绍

外部中断0和外部中断1
中断号

3.2、外部中断配置

//初始化
void exti_init()
{
	EA = 1;		//总中断打开
	EX0 = 1;		//外部中断0开关打开
	IT0 = 1;		//设置外部中断0的触发方式
}
void int0()interrupt 0
{
	if (KEY3 == 1)
	{
		LED1 = !LED1;
	}
}

3.3、硬件设计

3.4、软件设计

#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;

//定义LED1端口
LED1 = P2^0;

//K3按键端口
K3 = P3^2;

//延时函数,按键消抖用,最好用定时器处理
void delay()
{}

//外部中断0初始化
void exti0_init()
{
	EA = 1			//IE寄存器中总中断EA打开
	EX0 = 1		//IE寄存器中外部中断0 EX0打开
	IT0 = 1		//外部中断0的触发方式 下降沿触发
}

void main()
{
	exti0_init();
	while (1)
	{

	}
	
}

void int0() interrupt 0
{
	delay()
	
	if (KEY3 == 1)
	{
		LED1 = !LED;
	}
}

3.5、面试问题

单片机没有操作系统,中断处理函数不能有输入参数也不能有函数返回。

1、什么是中断?

当程序A正在执行时,(谁检测到了中断信号)检测到有效中断信号(中断请求),CPU会执行程序B,CPU执行完程序B后(中断服务),返回中断请求处的位置(中断返回),这个过程叫中断。

2、中断响应执行流程?

优先执行高优先级的中断

3、中断的触发方式

外部中断有低电平和下降沿两种方式。
低电平:
下降沿:

4、中断优先级有哪些?

外部中断0
定时/计数器0
外部中断1
定时/计数器1
串口中断

5、写一个中断服务需要注意哪些?

1、中断初始化时,要确定相关寄存器中的中断开关打开
2、中断函数不能有输入参数和函数返回,以及中断号

6、哪些函数不能在中断中使用?

使用硬件资源的函数 比如printf
使用全局内存分配表 比如malloc free

7、中断和异常的区别

产生源不同,中断是硬件资源触发,异常是CPU发出的
中断时异步的,可以随时触发,异常是由CPU发出的,跟时钟频率同步
中断是在中断上下文处理,异常是在进程上下文处理。

8、什么叫不可重入函数?

可重入函数:可以被中断的函数
不可重入函数:
1、 函数体内使用了静态(static)数据结构
2、 函数体内调用malloc或者free函数
3、 函数体内调用I/O函数文章来源地址https://www.toymoban.com/news/detail-446688.html

9、中断和轮询哪个效率高?怎么决定是采用中断方式还是采用轮询方式去实现驱动?不会

到了这里,关于51单片机中断系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C51单片机中断系统与定时器/计时器(理论部分)

    前言 文章的开始,有人可能会问,我们在前几节课学了延时函数,为什么不用延时函数来取代定时器,而必须学定时器呢?这里,有如下几个理由: 1.使用delay函数时,单片机的cpu做不了其他事情,只能等待延时结束。 2.用了定时器cpu就可以做其他的事情,只要定时器溢出时

    2023年04月15日
    浏览(40)
  • 51单片机中断

    1、什么是中断? CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。 中断触

    2024年01月21日
    浏览(50)
  • 51单片机(九):中断

    一、“中断”与定时器的关系         前面我们学习过了定时器,实际上 定时器的一般用法都是采取中断的方式进行实现的 。需要明确的是,定时器和中断不是一回事,定时器是单片机模块的一个资源,确确实实存在的一个模块,而中断是单片机中的一种运行机制。 在单片

    2024年02月04日
    浏览(42)
  • 51单片机——中断

    中断系统的设置,是为了让CPU能对外界紧急事件进行实时处理 中断的过程是,当中断请求源发出中断请求时,CPU响应中断后,CPU先暂停当时正在执行的主程序,转而去处理中断服务程序,处理完后继续原来的工作 微型机一般允许多个中断源,当几个中断源同时发出中断时,

    2023年04月15日
    浏览(86)
  • 【51单片机——————外部中断】

    中断是指单片机主程序运行过程中,出现某些意外情况需要单片机处理,单片机能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。 在实际应用开发中,单片机不可能一直轮询查看按键是否按下,单片机还需要去执行其他任务,

    2024年02月06日
    浏览(47)
  • 【51单片机】外部中断

    51的 外部中断 与 定时器(内部中断) 有一个共同特点,那就是与主程序是 并行 工作的,就是主程序在运行的时候,中断也在等待触发条件,当 中断被触发的时候会暂停主程序 转而执行中断服务程序,只有中断服务程序执行完后,才会继续执行主程序。 这里的触发条件是指:

    2024年02月02日
    浏览(66)
  • 51单片机 | 外部中断实验

       51 单片机外部中断有 2 个,外部中断 0 和外部中断 1 ,它们的使用方法是一样的,所以只要学会一个即可掌握所有外部中断使用。本节所要实现的功能是:使用独立按键 K3 控制 LED 亮灭, K3 连接外部中断 0 ( P3.2 )管脚。   上一节我们介绍了 51 单片机的中断系统,我

    2023年04月26日
    浏览(52)
  • 51单片机——定时器中断

    新版51单片机内部有 3 个16位可编程的定时器/计数器,即定时器 T0,T1,T2 。他们既有 定时 功能又有 计数 功能,我们可以通过配置与它们相关的特殊功能寄存器可以选择启用定时功能或计数功能;其中需要注意的是,这个定时器系统是单片机内部的一个独立的硬件部分,它与

    2023年04月10日
    浏览(44)
  • 单片机c51中断 — 中断键控流水灯

    项目文件 文件 关于项目的内容知识点可以见专栏单片机原理及应用 的第五章,中断   在第4章的实例2中,按键检测是采用查询法进行的,其流程图如图所示 问题是这样的:由于查询法 -按键查询、标志位修改及彩灯循环几个环节是串联关系,当CPU运行于彩灯时,将因不能及

    2024年02月08日
    浏览(59)
  • 51 单片机【外部中断、定时器中断、回调函数】

    ​这里的外部中断类似监听器,时时刻刻监视某引脚的电平变化;这里的定时器中断类似于定时任务,可以定时执行某函数;这里将回调函数和中断结合起来,案例里有点设计模式的味道(忘了哪个了,也可能就是感觉,关于高层不能调用低层的解决),也有点函数式编程的

    2024年02月04日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包