学习笔记之-51单片机中断

发布者:心满意足最新更新时间:2022-05-17 来源: eefocus关键字:学习笔记  51单片机  中断 手机看文章 扫描二维码
随时随地手机看文章

1.中断的概念

通俗的讲,中断就是cup正在工作的时候,突然外部来了某一请求,要求cpu转去处理请求的事件,当事情做完之后cup再回来继续它的工作。这一过程称为中断 。


单片机中断响应可以分为以下几个步骤:

1、停止主程序运行。当前指令执行完后立即终止现行程序的运行;

2、保护断点。把程序计数器PC 的当前值压入堆栈,保存终止的地址(即断点地址),以便从中断服务程序返回时能继续执行该程序;

3、寻找中断入口;

4、执行中断处理程序;

5、中断返回。执行完中断处理程序后,就从中断处返回到主程序,继续往下执行。


流程图如下:

 这里写图片描述 

中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:

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

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

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


2.51单片机中断详解

中断

上图是80C51单片机中断系统的结构,从图中可以看到80C51的中断系统有5个中断源(补充:8052有 6个) ,分别是: 外部中断0/1(P3.2,P3.3),内部中断(定时计数器中断)0/1(P3.4,P3.5),串口中断(这一节先不讨论)

先介绍几个和中断相关的寄存器


TCON

这里写图片描述

TF1:定时器T1溢出标志,可由程序查询和清零,TF1也是中断请求源,当CPU响应T1中断时由硬件清零。

TF0:定时器T0溢出标志,可由程序查询和清零,TF0也是中断请求源,当CPU响应T0中断时由硬件清零。

TR1:T1充许计数控制位,为1时充许T1计数(定时)。

TR0:T0充许计数控制位,为1时充许T0计数(定时)。

IE1:外部中断1请示源(INT1,P3.3)标志。IE1=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”。

IT1:外部中断源1触发方式控制位。为1设置为底电平触发,为0设置为下降沿触发。

IE0:外部中断0请示源(INT0,P3.2)标志。IE0=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”。

IT0:外部中断源0触发方式控制位。为1设置为底电平触发,为0设置为下降沿触发。

高四位是控制内部中断(定时计数器)的,底四位是控制外部中断的,从中断结构图可以知道,外部中断有两种触发方式,IT0或者IT1为外部中断源触发方式控制位,此位为1设置为电平触发,为0设置为下降沿触发。TF0,TF1,IE0,IE1这四个位都是中断标志位,不需要设置的。


中断允许寄存器IE:

ie

顾名思义,中断允许寄存器就是控制中断是否打开,注意EA总中断,使用任何中断这个位都要置一,当EA=0时,所有中断都将关闭。


中断优先级寄存器:

ip

80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。51单片机中自然的优先级为:

这里写图片描述

从中断系统结构图中可以看到,中断优先级分为两级,每一级都是按照自然优先级排列,这样说应该可以理解吧。IP这个寄存器默认值为xx000000b,所有的中断都处在同一级,它就按照自然优先级进行响应。假设我们想人为的把串口的优先级设置为最高,那我们就可以在IP寄存器的PS位写一,这样,串口就被设置为更高一级,它的优先级是最高的。


这样,和单片机外部中断的几个寄存器都讲完了,定时器和串口的中断会分开阐述的。这里重点理解外部中断。


3.中断服务程序

上面讲中断过程中我们知道,那5个过程都是由计算机自动完成的,与我们无关,我们的工作只是在这5 个入口地址处存放有中断处理的程序,那么怎么具体写中断服务程序呢?


格式:


void function(void) interrupt x using y

x=0 是外部中断0;

x=1 是定时器中断0;

x=2 是外部中断1;

x=3 是定时器中断1;

x=4 是串行口中断;

y只能取以下值,一般我们是不用后面的using的

y=0 是第0组寄存器;

y=1 是第1组寄存器;

y=2 是第2组寄存器;

y=3 是第3组寄存器;


4.实例:外部中断

protues环境下硬件搭建

123

实现一个外部中断的步骤:

1.设置外部中断源触发方式控制位,为1设置为电平触发。

2.开总中断

3.开外部中断0


#include

sbit led=P1^0;

sbit s=P3^2;

void main()

{


 IT0=1; //1.设置外部中断源触发方式控制位,为1设置为电平触发。

 EA=1;  //2.开总中断

 EX0=1; //3.开外部中断0

while(1)

{

}

}


void exterfunction(void) interrupt 0 using 1

{

 led=~led;

}

关键字:学习笔记  51单片机  中断 引用地址:学习笔记之-51单片机中断

上一篇:学习笔记之-51单片机定时计数器
下一篇:学习笔记之-51单片机IO口详解

推荐阅读最新更新时间:2024-11-12 22:45

STM32CubeMX之串口不定长数据接收(接收中断+空闲中断
环境: 开发板:STM32F4探索者(正点原子) 一. 空闲(IDLE)中断 1. 空闲帧 什么是空闲帧?在 STM32的中文参考手册 中,你会发现如下解释: 空闲帧可理解为整个帧周期内电平均为“1”(停止位的电平也是“1”),该帧后是下一个数据帧的起始位。如下图所示: 其实按使用的情况来看,应是数据帧接收之后,从停止位开始一直为高电平,一直持续一帧的时间(包含停止位)为高电平,那时就会产生空闲中断。 二. 空闲中断相关的宏 使能 IDLE 中断 __HAL_UART_ENABLE_IT(__HANDLE__, UART_IT_IDLE) //使能idle中断 获取 IDLE 中断标志位 __HAL_UA
[单片机]
STM32CubeMX之串口不定长数据接收(接收<font color='red'>中断</font>+空闲<font color='red'>中断</font>)
mcs51单片机的运算器组成及功能
1、 算术逻辑单元(ALU) 2、 累加器A,B寄存器、暂存器 3、 程序状态字(PSW):C AC FO RS1 RS0 OV - P 4、 十进制调整电路、布尔处理器 它们功能包括: 加、减、乘、除算术运算 加1、减1运算 十进制数调整 位操作置1、清0、取反 与、或、异或等逻辑运算 数据传送操作
[单片机]
51单片机对继电器的控制
典型的弱电控制强点途径。 怎么样理解这个电路图? 要理解这个电路,其实也比较容易.那么请您按照我的思路来,应该没有问题: 首先的,里面的三极管很重要.三极管是电子电路里很重要的一个元件.怎么样理解三极管呢? 简单的来说三极管有两个作用一个是放大作用,一个是开关作用.(严格来讲开关作用是放大作用的极限情况,不过没关系,把两者分开,更便于理解它的工作原理).在这里,我们只了解它跟本电路有关的开关作用. 首先把三极管想成一个水龙头. 简单C代码 主要功能:对白炽灯的控制,闪烁,时隔3秒 #include reg52.h sbit jdq_1=P1^0; void delay(void) //延时3S 误差 0us { u
[单片机]
<font color='red'>51单片机</font>对继电器的控制
浅析51单片机IO口的四种使用方法
传统51单片机IO接口只可以作为标准双向IO接口,如果用其来驱动LED只能用灌电流的方式或是用三极管外扩驱动电路。 灌电流方式:LED正极接VCC,负极接IO口。IO为高电平是LED两极电平相同,没有电流,LED熄灭;IO为低电平时,电流从VCC流入IO,LED点亮。但是当你吧LED正极接在IO接口,负极接GND时,将IO接口置于高电平,LED会亮,但因为IO接口上拉能力不足而使亮度不理想,可以用下面介绍的方式解决这个问题。 推挽工作方式:LED正负极分别接在两个IO口上,然后设置正极IO接口为推挽输出,负极IO接口为标准双向灌电流输入。推挽方式具有强上拉能力,可以实现高电平驱动LED。 IO口的四种使用方法 从
[单片机]
浅析<font color='red'>51单片机</font>IO口的四种使用方法
串口通信 校验码_8051单片机串口通信中的检错方法
对于基于flash控制器的8051的芯片结构,一般在进行数据传输时,都是先通过串口将数据传送到flash控制器的buffer中。由于buffer的大小为512 bytes,所以每次传输的最大数据量为512bytes。本文中所讨论的三种检错方法的传输数据量均为512 bytes。 1 检错方式 基于8051的串口数据通信系统的硬件开发平台框图如图1所示。利用该平台进行数据传输时,通常有三种数据检错方式。 1.1 奇偶校验 奇偶校验是检错中比较常见的一种方法。它利用数据中的1的个数作为检错的标志位,若1的个数为奇数个,则错误检测的标志位为1,若1的个数为偶数,则错误检测的标志位为0。在发送端和接收端同时检测奇偶位,若得到相同
[单片机]
串口通信 校验码_80<font color='red'>51单片机</font>串口通信中的检错方法
基于51单片机的秒表和数显时钟
刚刚学过51单片机最重要的两个部分,定时器和中断,学完后应用定时器和数码管,首先,我们可以做出一个秒表程序,做出后,我们再在秒表的基础上,做一个数显时钟 #include reg52.h sbit k1=P3^1; //定义四个按键 sbit k2=P3^0; sbit k3=P3^2; sbit k4=P3^3; sbit LSA=P2^2; //38译码器数码管位选 sbit LSB=P2^3; sbit LSC=P2^4; typedef unsigned char u8; //对数据类型进行声明定义 typedef unsigned int u16; u8 code smgduan ={0x3f,0x0
[单片机]
STM32 (CortexM3) 中NVIC(嵌套向量中断控制)的理解
一、STM32 (Cortex-M3) 中的优先级概念 STM32(Cortex-M3)中有两个优先级的概念:抢占式优先级和响应优先级,也把响应优先级称作 亚优先级 或 副优先级 ,每个中断源都需要被指定这两种优先级。 1. 何为占先式优先级(pre-emption priority) 高占先式优先级的中断事件会打断当前的主程序/中断程序运行 抢断式优先响应,俗称中断嵌套。 2. 何为副优先级(subpriority) 在占先式优先级相同的情况下,高副优先级的中断优先被响应; 在占先式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才能得到
[单片机]
STM32 (CortexM3) 中NVIC(嵌套向量<font color='red'>中断</font>控制)的理解
GD32如何配置中断优先级分组以及中断优先级
使用GD32 MCU的过程中,大家可能会有以下疑问:中断优先级如何配置和使用? 本文将会为大家解析中断优先级分组以及中断优先级的配置使用: 中断优先级分组配置 一个GD32 MCU系统需要大家明确系统中使用的中断优先级分组,避免中断优先级配置越界导致一些不符合预期的中断现象。 中断优先级分组可采用以下函数接口,其中有4个bit可用于中断优先级分组,如果全用于抢占优先级,则可以配置0-15的优先级,如果2位用于抢占,2位用于次优先级,则抢占优先级可以配置0-3,此优先级可以配置0-3。 注意:如果中断优先级配置为2位抢占和2位此优先级的话,抢占优先级配置为4(二进制为100b),优先级配置越界,实际配置进去的优先级为0,最高
[单片机]
GD32如何配置<font color='red'>中断</font>优先级分组以及<font color='red'>中断</font>优先级
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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