-
2021-12-01 21:19:09
- 两种触发方式:电平触发方式和跳沿触发方式。
4.6.1 电平触发方式
- 外部中断申请触发器的状态随着CPU在每个机器周期采样到的外部中断输入引脚的电平变化而变化。
- 在**中断服务程序返回之前,外部中断请求输入必须无效(**即外部中断请求输入已由低电平变为高电平),否则会再次响应中断。
- 所以本方式适合于外部中断以低电平输入且中断服务程序能清除外部中断请求源(即外中断输入电平又变为高电平)的情况。
4.6.2 跳沿触发方式
- 外部中断申请触发器能锁存外部中断输入线上的负跳变。即使不能响应,中断请求标志不丢失。
- 相继连续两次采样,一个机器周期为高,下一个机器周期采样为低,则中断申请触发器置1,直到CPU响应此中断时,才清0。
- 输入的负脉冲宽度至少保持12个时钟周期,才能被采样到。适合于以负脉冲形式输入的外部中断请求。
更多相关内容 -
51单片机外部中断触发方式
2021-01-19 18:16:5351单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器... -
51单片机外部中断的两种触发方式资料下载
2021-07-07 11:23:5551单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器... -
51汇编(八):外部中断
2020-05-11 17:50:57中断是一种计算机内部机制,常用于处理突发事件(优先级高的事件)。 下图是中断机制的原理图,计算机自动检测五个中断标志,判断是否有中断请求,再判断是否允许响应该中断请求,最后去执行中断响应函数。 我们...中断
中断是一种计算机内部机制,常用于处理突发事件(优先级高的事件)。
下图是中断机制的原理图,计算机自动检测五个中断标志,判断是否有中断请求,再判断是否允许响应该中断请求,最后去执行中断响应函数。
我们可以把中断机制理解为一间房子,首先我们需要记住两道门:小门和大门。小门有五扇,指的是5个源允许位;大门只有一扇,指的是总允许位。大门不开,谁都进不来,大门开了,小门锁上,对应的房间也进不去;因此只有当大门和小门同时打开,才能完成一次中断响应(中断允许)。其次这房子还有一个特点,就是同一个时间只能进去一个人,因此如果有两个人(两个中断请求)同时要求进入,且两扇门都是打开的,这时管家(单片机)就会把这两人分为等级,等级高的先进入,我们也可以不按照管家的分级(默认优先级),自己为五个人分级(优先级控制器)。至此,中断机制就差不多了。
中断源
中断机制由中断源和中断响应函数组成,AT89C52单片机的中断源有两个外部中断,三个内部中断
中断源(默认优先级):
- 外部中断0 (外部中断)
最高优先级
- 定时器0中断 (内部中断)
- 外部中断1 (外部中断)
- 定时器1中断 (内部中断)
- 串口中断 (内部中断)
最低优先级
本篇主要讲外部中断,不考虑自定优先级,不考虑同时发生。
中断寄存器
-
中断控制寄存器
外部中断0/1:- IE0/1:外部中断0/1请求标志位,如果出现中断信号,该位由硬件置1。
- IT0/1:外部中断0/1触发方式控制位,0为低电平触发,1为高电平触发。
定时器0/1:
- TF0/1:定时器0/1溢出标志位,计数器溢出则该位由硬件置1.
- TR0/1:定时器0/1启动位,0不允许运行,1允许运行。
串口中断:
- RI:接收中断
- TI:发送中断
- 中断允许控制寄存器
- EA:中断总允许
- EX0:外部中断0中断允许位
- ET0:定时器0中断允许位
- EX1:外部中断1中断允许位
- ET1:定时器1中断允许位
- ES:串口中断允许位
以上各位置1为允许
- 中断优先级控制寄存器(本篇不讲)
中断地址
一旦触发了中断,单片机就会到指定的地点去寻找中断响应函数,这个固定的地方就叫做中断地址。
地址 功能 0003H—000AH 外部中断0 000BH—0012H 定时/计数器0中断 0013H—001AH 外部中断1 001BH—0022H 定时/计数器1中断 0023H—002AH 串行中断 002BH—0032H 定时/计数器2中断 外部中断
外部中断有两种触发方式,分别为低电平触发和下降沿触发(我们通常使用下降沿触发),具体到单片机就是P3.2(外部中断0),P3.3(外部中断1)。
配置外部中断0:- 设置下降沿触发,打开两扇门(允许位置1)
SETB IT0 SETB EX0 SETB EA
- 中断响应函数
ORG 03H AJMP EX0_INTERRUPT …… …… EX0_INTERRUPT: PUSH ACC PUSH PSW …… …… POP PSW POP ACC RETI
例程:
ORG 0000H AJMP START ORG 0003H ;外部中断0中断地址 AJMP EX0_INTERRUPT ;外部中断0响应函数 ORG 0013H ;外部中断1中断地址 AJMP EX1_INTERRUPT ;外部中断1响应函数 ;MAIN------------------------------------------------- ORG 0030H START: ;VIDEO MEMORY----------------------------------------- MOV 30H, #1 MOV 31H, #2 MOV 32H, #3 MOV 33H, #4 ACALL EX_INIT MIANLOOP: ACALL DISPLAY AJMP MIANLOOP ;EX INIT--------------------------------------------- EX_INIT: SETB IT0 SETB IT1 SETB EX0 SETB EX1 SETB EA RET ;EX0_INTERRUPT---------------------------------------- EX0_INTERRUPT: PUSH ACC PUSH PSW INC 33H MOV A, 33H CJNE A, #10, EX0_EXIT MOV 33H, #0 INC 32H MOV A, 32H CJNE A, #10, EX0_EXIT MOV 32H, #0 EX0_EXIT: POP PSW POP ACC RETI ;EX1_INTERRUPT---------------------------------------- EX1_INTERRUPT: PUSH ACC PUSH PSW DEC 33H MOV A, 33H CJNE A, #0, EX0_EXIT MOV 33H, #9; DEC 32H MOV A, 32H CJNE A, #0, EX0_EXIT MOV 32H, #0 EX1_EXIT: POP PSW POP ACC RETI ;显示函数--------------------------------------------------------- ;段选:P0.0->P0.7 ;位选:P2.0->P2.3 DISPLAY: MOV DPTR, #1000H ;码表起始地址 MOV R0, #30H ;显存起始地址 MOV R1, #01H ;位选码 P2.7-> 0 0 0 0 0 0 0 1 ->P2.0 ;四位循环---------------------------------------------------------- DISPLAYLOOP: MOV P0, #0FFH ;消影 ;查表,将显存中的数字映射到段码 MOV A, @R0 MOVC A, @A+DPTR MOV P0, A ;段选赋值 MOV P2, R1 ;位选赋值 ACALL DELAY ;延时 INC R0 ;显存自加,切换到下一位数字的显存 ;位选左移切换 MOV A, R1 RL A MOV R1, A CJNE R1, #10H, DISPLAYLOOP ;根据位选码,判断是否完成四位切换 RET ;延时函数---------------------------------------------------------- DELAY: MOV R7, #2 DELAYLOOP1: MOV R6, #2 DELAYLOOP2: MOV R5, #10 DELAYLOOP3: NOP DJNZ R5, DELAYLOOP3 DJNZ R6, DELAYLOOP2 DJNZ R7, DELAYLOOP1 RET ;码表------------------------------------------------------------- ORG 1000H DB 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 END
- 外部中断0 (外部中断)
-
【51单片机学习记录】:外部中断
2020-11-02 21:12:17作业二:外部中断 作业要求: 利用开发板完成以下功能:外部中断0发生时,P0口所接的发光二极管自上而下循环点亮3圈; 当外部中断1发生时,发光二极管自上下两端到中间点亮3圈。 要求外部中断1可以打断外部中断0,...外部中断
51基本型有2个中断优先级:高优先级和低优先级。 STC89C52RC有4个中断优先级:3、2、1、0。
可以实现两级的中断嵌套,中断嵌套的基本规则有2条。 (1)低优先级的中断可被高优先级的中断打断,反之不行;
(2)一个被响应的中断,不会被同级的中断打断。IP:中断优先级控制寄存器
作用:设置各个中断的优先级。
复位状态:IP(××00 0000B)
寻址方式:字节寻址和位寻址
优先级相同时,哪一个中断请求会被CPU相应,取决于中断的自然优先级。如果各中断源的优先级相同,中断响应则按照自上向下,自然优先级由高到低,外部中断0的自然优先级最高,定时器T2的自然优先级最低,CPU会响应自然优先级高的中断。
采用C语言编程时,中断号即可表示中断查询次序,中断号越小,自然优先级越高。C语言中中断函数的格式如下。
函数类型 函数名 interrupt n using m void EXINT0(void) interrupt 0 //外部中断0中断函数。 void Timer0(void) interrupt 1 //定时器0中断函数。 void EXINT1(void) interrupt 2 //外部中断1中断函数。 void Timer1(void) interrupt 3 //定时器1中断函数。 void Uart0(void) interrupt 4 //串口中断函数。 void Timer2(void) interrupt 5 //定时器2中断函数。
1、外部中断0、外部中断1都有2种触发方式,下降沿触发和低电平触发。低电平触发时,相应引脚的低电平的持续时间至少为2个时钟周期;下降沿触发时,高电平和低电平都至少维持一个时钟周期。
2、外部中断请求的标志位是位于TCON寄存器中的IE0(TCON.1)、IE1(TCON.3)。
3、设置外部中断0~3的触发方式的标志位是位于TCON寄存器中的IT0(TCON.0)、IT1(TCON.02)。如ITx=0(x=0,1),则在(x=0,1)引脚检测到至少2个时钟周期的低电平后,相应的中断标志位IEx(x=0,1)被置“1”,向CPU申请中断;当ITx=1(x=0,1),则在(x=0,1)引脚检测到高电平至少持续1个时钟周期,随后的低电平也至少持续1个时钟周期后,相应的中断标志位IEx(x=0,1)被置“1”,向CPU申请中断。当外部中断被响应后,外部中断请求标志位IE0、IE1会被硬件自动清零。作业要求:
利用开发板完成以下功能:外部中断0发生时,P0口所接的发光二极管自上而下循环点亮3圈;
当外部中断1发生时,发光二极管自上下两端到中间点亮3圈。
要求外部中断1可以打断外部中断0,并且外部中断1恢复后,可以从上次被打断的LED灯处开始点亮。此实验采用的开发板中,KEY0与KEY1分别对应外部中断0与外部中断1,故按键按下时,P3^2 与 P3^3会检测到。
程序如下:(仅供参考)
/*********作业二******** 作业要求: 利用开发板完成以下功能:外部中断0发生时,P0口所接的发光二极管自上而下循环点亮3圈; 当外部中断1发生时,发光二极管自上下两端到中间点亮3圈。 要求外部中断1可以打断外部中断0,并且外部中断1恢复后,可以从上次被打断的LED灯处开始点亮。 作者:Ginno 地址: https://blog.csdn.net/weixin_45685859/article/details/109457246 ************************/ #include <reg52.h> #include <intrins.h> //译码器引脚位定义 sbit LSA = P1^5; sbit LSB = P1^6; sbit LSC = P1^7; //函数声明 void EXint_Init(void); //声明外部中断初始化函数 void Delayms(int xms); //声明延时函数 void Up_to_Down(int x); //声明自上而下点亮函数 void UpDown_to_Cent(int x); //声明自上下向中间点亮函数 /*********************** 函数名称:main 函数功能:主函数 ***********************/ void main(void) { EXint_Init(); //中断初始化 LSA = 0; LSB = 0; LSC = 0; //译中Y0管脚,使Q6导通 while(1) //循环体内容 { } } ///*******中断函数定义(中断函数无需声明)******/ /*********************** 函数名称:EXINT0 函数功能:外部中断0中断服务函数 中断号:0 中断优先级:0 ***********************/ void EXINT0() interrupt 0 { Up_to_Down(3); } /*********************** 函数名称:EXINT1 函数功能:外部中断1中断服务函数 中断号:2 中断优先级:1 ***********************/ void EXINT1() interrupt 2 { UpDown_to_Cent(3); } ///****************已声明的函数定义**************/ //函数名称:EXint_Init //函数功能:外部中断初始化(配置触发方式,触发优先级,全局中断和功能中断) void EXint_Init(void) { IT0 = 0; //外部中断0低电平触发 IT1 = 0; //外部中断1低电平触发 PX1 = 1; //外部中断1的优先级为高 EA = 1; //开总中断 EX0 = 1; //允许外部中断0中断 EX1 = 1; //允许外部中断1中断 } ///*********************** //函数名称:Delayms //函数功能:延时 //***********************/ /*STP-ISP生成*/ void Delayms(int xms) { int i,j; for(i = xms;i > 0;i --) { for(j = 110;j > 0;j --); } } ///*********************** //函数名称: Up_to_Down //函数功能:使P0口的LED灯从上往下点亮 //***********************/ void Up_to_Down(int x) { int i,j; int sel = 0X7F; //灯初始化(最高一位点亮)0111 1111 for(i = 0;i < x;i ++) //循环x圈 { for(j = 0;j < 8;j++) //每圈移位控制,末位移出后最高位补零 { P0 = sel; Delayms(500); sel = _cror_(sel,1); //循环右移一位 } } } ///*********************** //函数名称:UpDown_to_Cent //函数功能:使P0口的LED灯从上,下两端往中间点亮 //***********************/ void UpDown_to_Cent(int x) { int i; int sel_1 = 0X7E; //灯状态1 0111 1110 int sel_2 = 0X3C; //灯状态2 0011 1100 int sel_3 = 0X18; //灯状态3 0001 1000 int sel_4 = 0X00; //灯状态4 0000 0000 for(i = 0;i < x;i ++) //循环x圈 { P0 = sel_1; //状态1 Delayms(500); P0 = sel_2; //状态2 Delayms(500); P0 = sel_3; //状态3 Delayms(500); P0 = sel_4; //状态4 Delayms(500); } }
*
文章尚未完善,仅供参考* -
C51单片机外部中断的触发方式
2020-06-23 15:30:25○ 外部中断引脚的低电平要一直保持,直到CPU响应外部中断 ○ CPU响应中断后,会硬件将IE清0(IE=0),但是不会取消掉外部中断引脚的低电平,因此需要硬件加软件清除低电平(p133) 2. 下降沿触发方式 ○ CPU... -
关于51单片机“外部中断触发方式”的经验总结
2019-05-05 17:14:4951单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器... -
(学习笔记)单片机外部中断的两种模式
2015-08-17 10:32:1451单片机的外部中断有两种模式:电平触发模式和跳变沿触发模式 第一,选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。第二,选择边沿触发方式时,... -
STM32F103:外部中断(EXTI)——原理和程序
2021-11-23 13:50:08一、外部中断(EXTI)—简介 EXTI (External interrupt/event controller)——外部中断/事件控制器。 互联型STM32有20个能够产生事件/中断请求的边沿检测器,STM32F103系列有19个能够产生事件/中断请求的边沿检测器。 ... -
ESP32 外部中断原理分析 & GPIO外部中断实战
2021-10-17 22:34:12ESP32外部中断原理&实战 阅读建议: 有一定Cortex-m架构知识基础。 外部中断原理 外部中断实战 首先配置GPIO ESP-IDF提供了一个结构体方便对其进行初始化,结构体如下: typedef struct { uint64_t ... -
关于51单片机外部中断的触发方式
2016-01-25 11:47:5551单片机有两个外部中断申请输入端:INT0 和 INT1。51单片机的外部中断,分为低电平触发和下降沿触发。在单片机内部,分别由控制位 IT0 和 IT1 来控制。复位时,IT0/1 都为 0,即默认为低电平触发。一般来说,外设第... -
STM32学习:外部中断
2022-02-24 20:47:331、外部中断(EXTI)是STM32芯片实时处理外部事件的一种机制,由于中断请求来自于GPIO端口的引脚, 所以称之为外部中断。 2、STM32芯片有16个外部中断源EXTI0–EXTI15,分别对应7个中断服务函数,其中EXTI0–EXTI4是... -
stm32之中断与外部中断
2019-05-25 22:15:021.有51单片机开发经验会比较容易理解中断优先级; 2.本篇博文基于STM32F103RCT6芯片和3.5.0标准库编写; 3.作为自己学习的一些心得,如有不足之处,还请前辈多多指教; 一、stm32中断系统 对于中断的基本概念这里就... -
51单片机学习笔记5 -- 外部中断
2022-01-11 10:26:3051单片机外部中断简介和编程,简单描述中断类型和中断号 -
Arduino 外部中断的使用
2021-07-31 09:46:07外部中断在不同的Arduino型号上位置也不同,只有外部中断发生在以下端口,Arduino才能捕获到,以下例举了常见的几种型号的外部中断引脚标号。 型号 int.0 int.1 int.2 int.3 int.4 int.5 UNO\... -
arduino学习7——外部中断使用
2021-09-11 16:10:14目录中断定义中断引脚中断模式中断函数(1)attachInterrupt(interrupt, function,mode)detachInterrupt(interrupt)实验:外部中断实现开关电源 中断定义 程序运行过程中时常需要监控一些事件的发生,如对某一传感器的... -
单片机外部中断—中断嵌套
2020-03-26 16:33:46但这种优先级只是逻辑上的优先级,当同时有几种中断到达时,高优先级中断会先得到服务。这种优先级实际上是中断同时到达的情况下,谁先得到服务的优先级,而不是可提供中断嵌套能力的优先级。这种优先级被称为逻辑... -
STm32F103 外部中断干货
2018-05-21 16:11:29比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,那么依此类推,我们能得出一共有16 组,STM32 规定,每一组中同时只能有一个中断触发源工作,那么,最多工作的也就是16个外部中断。STM32F... -
按中断的功能来分,中断有哪几种类型?
2020-05-19 23:37:29对某中央处理机而言,他的外部非通道式装置所引起的中断称为外部中断。 例如:时钟中断、操作员控制台中断、多机系统中CPU到CPU的通信中断。 3、 机器故障中断 当机器发生故障时所产生的中断叫硬件故障中断。例如:... -
51单片机入门——定时器与外部中断
2022-01-04 19:32:33外部中断 2.1. 中断的背景 2.2. 定时器中断的应用 2.3. 中断的优先级 1. 定时器 1.1. 定时器的初步认识 在认识定时器之前我们先了解两个基本概念。 时钟周期:时钟周期 T 是时序中最小的时间单位,具体计算方法就是... -
STM32 外部中断详解(原理+配置代码)
2020-02-27 22:24:38本文介绍了STM32基于标准外设库的外部中断配置,以及基于参考手册如何更加寄存器配置外部中断 -
外部中断(STM32)
2022-04-26 09:52:16文章目录一些概念中断中断优先级中断嵌套STM32中断EXTI外部中断 一些概念 中断 在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来... -
外部中断和定时器中断
2018-11-20 13:53:278.外部中断实现代码 9.定时器/计数器中断工作原理 10.定时器/计数器定时值的计算 11.定时器/计数器实现代码 1.什么是中断 中断就是指CPU正在执行一项任务A,然后突然停止任务A去执行任务B,执行完任务B再回来... -
【Arduino实验09 外部中断触发报警】
2022-01-31 17:27:03任务描述:通过按键、传感器产生一个触发事件,触发外部中断,调用中断函数发出声光警报。 -
51单片机~定时器和外部中断(各个位控制作用详解)
2021-04-18 14:13:53(一)中断 (二)定时器,计数器中断 TL0低八位先进行存储,达到0XF,向上进一,直到...(2)控制寄存器TCON:(低四位控制外部中断,高四位控制计数器启动和中断申请) (3)定时器的四种工作方式: ... -
STM32之外部中断[概念篇]
2021-04-17 20:00:08目录一、中断和异常二、NVIC和EXTI1、嵌套向量中断控制器(NVIC)2、外部中断/事件控制器(EXTI)3、区别三、NVIC寄存器和EXTI寄存器1、NVIC中的寄存器四、中断向量表 一、中断和异常 1、中断——当需要出现时,CPU暂时... -
3.外部中断
2019-06-27 21:34:06其中内部中断是通过数时钟脉冲,外部中断是通过判断引脚电平边沿变化。上面对中断的认识是在51单片机上学习到的,因为51单片机中的中断只有相对重要且基础的几个,比如,定时器中断,计数器中断,还有串口中断(当... -
51单片机中断源的扩展方法
2020-07-14 09:28:33MCS—51系列单片机内部只有两个外部中断源输入端,当外部中断源多于两个时,就必须进行扩展,下面介绍几种简单的扩展方法 -
快速复习51单片机的外部中断、计数/定时器中断和串行口中断,加代码实现
2021-09-13 15:12:32SBUF是像是李信,光信和暗信是一个英雄,但是有不同的技能和外观。 -
HAL库教程4:外部中断
2019-04-09 22:36:11外部中断机制 本章我们仍然是通过按键来控制LED,只不过实现方式由轮询变为了外部中断。为什么需要外部中断?为了给CPU减轻负担。 举个例子 比如你今天有个快递,快递一般放在前台或是门卫。你有两种...