-
2020-12-08 17:27:15
/************************************************************************************** 实验现象:下载程序后,操作K4按键使LED1(D11)状态取反 接线说明: (具体接线图可见开发攻略对应实验的“实验现象”章节) 1,单片机-->LED&交通灯模块 P20-->D1 2,单片机-->独立按键模块 P33-->K4 注意事项: ***************************************************************************************/ #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit k4=P3^3; //定义按键K4 sbit led=P2^0; //定义P20口是led /******************************************************************************* * 函 数 名 : delay * 函数功能 : 延时函数,i=1时,大约延时10us *******************************************************************************/ void delay(u16 i) { while(i--); } /******************************************************************************* * 函 数 名 : Int1Init() * 函数功能 : 设置外部中断1 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Int1Init() { //设置INT1 IT1=1;//跳变沿出发方式(下降沿) EX1=1;//打开INT1的中断允许。 EA=1;//打开总中断 } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { Int1Init(); // 设置外部中断1 while(1); } /******************************************************************************* * 函 数 名 : Int1() interrupt 2 * 函数功能 : 外部中断0的中断函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Int1() interrupt 2 //外部中断1的中断函数 { delay(1000); //延时消抖 if(k4==0) { led=~led; } }
更多相关内容 -
【51单片机学习记录】:外部中断
2020-11-02 21:12:17要求外部中断1可以打断外部中断0,并且外部中断1恢复后,可以从上次被打断的LED灯处开始点亮。 程序: #include <reg52.h> #include <intrins.h> //译码器引脚位定义 sbit LSA = P1^5; sbit LSB = P1^6;...外部中断
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); } }
*
文章尚未完善,仅供参考* -
STM32CUBE配置GPIO中断,以及中断回调函数编写
2020-04-05 23:56:46STM32CUBE配置GPIO中断,以及中断回调函数编写 . -
8051外部中断1解析
2019-07-23 10:41:21程序实现的功能: 在实验板上左下方有一...(外部中断1和外部中断0在处理上类似, 红色的部分为不同之处) 中断处理程序标号: 外部中断0 -----------> 0 定时器0中断 -----------> 1 外部中断1 -----------&...程序实现的功能:
在实验板上左下方有一个黑色的独立按键(K4), 当我们按下它时, D1(LED灯)的状态就会取反.
(外部中断1和外部中断0在处理上类似, 红色的部分为不同之处)
中断处理程序标号:
外部中断0 -----------> 0
定时器0中断 -----------> 1
外部中断1 -----------> 2
定时器1中断 -----------> 3
串口中断 -----------> 4
独立按键电路原理图(K4对应P33):
程序源代码:
#include <STC89C5xRC.H>
void delay()//获得1ms延时
{
TH0 = 0xFC;
TL0 = 0x18;//65536 - 1000 = 64536 = FC18H
TR0 = 1;//开启定时器0
while(TF0 == 0);//等待定时器0计数溢出
TF0 = 0;
TR0 = 0;//暂停定时器0
}void EX_INT0() interrupt 2//外部中断1处理函数
{
delay();//1ms延时消抖
if(P33 == 0)
{
P20 = ~ P20;//D1电平翻转
}
}int main()
{
TMOD = 0x01;//设置定时器0的工作模式
TR0 = 0;
TF0 = 0;
P20 = 0;//开发板上D1亮EA = 1;//中断总开关打开
EX1 = 1;//外部中断1开关打开
IT1 = 1;//边沿触发
//IT0 = 0 -> 低电平触发中断, IT0 = 1 -> 边沿触发中断
while(1)
{
;
}
return 0;
} -
关于51单片机的中断函数的使用,利用外部中断1点亮LED灯并记录其使用次数
2022-03-20 16:44:04可以看到,外部中断1(INT1)位于P3_3口,在P3_3处连接一个按钮,当按钮按下时,P3_3 = 0,由此触发中断函数 在此之前,打开中断总开关EA = 1,中断使能EX1 = 1,采用下降沿触发 #include <REGX52.H> ...下面是仿真的线路图,P0口,P2口的线路不用连接
这里,我们使用外部中断1作为中断开关,LED共阴极,阳极分别连接P1_1,P1_2,P1_3,P1_4,高电平点亮,这里只放置了4个LED,有需要的可自行连接
可以看到,外部中断1(INT1)位于P3_3口,在P3_3处连接一个按钮,当按钮按下时,P3_3 = 0,由此触发中断函数
在此之前,打开中断总开关EA = 1,中断使能EX1 = 1,采用下降沿触发
#include <REGX52.H> unsigned char num = 0; unsigned char list[] = {0x00,0x01,0x03,0x07,0x0F}; void LED(unsigned char num){ P1 = list[num]; } void init(){ EA = 1; EX1 = 1; IT1 = 1; } void main(){ init(); while(1){ LED(num); } } void ZDmain1() interrupt 2{ num++; if(num>4){num = 0;} }
-
STM8S103K3T6外部中断源程序_电机测速
2018-12-03 17:43:07主函数调用其他函数利用外部中断 tim4定时1s,测电机的转速, 通过在线仿真观察外部中断情况 有外部中断需要的,测电机的都可以下载参考参考 -
中断(外部中断0、外部中断1、定时器中断0、定时器中断1)
2020-07-17 08:36:37外部中断0 外部0中断触发:(P3.2口触发;P3.2触发;P3.2触发) 若IT0=0,则为低电平触发 若IT0=1,则为下降沿触发 外部中断0初始化: 初始化方法一: void Init_INT0() { IT0=1;//设置外部中断0;下降沿触发 EX0=... -
STM32 关于外部中断线、中断源和中断服务函数的问题
2018-08-27 17:17:10STM32 关于外部中断线、中断源和中断服务函数的问题 中断线问题: 上图可以看出,PA0、PB0...PG0共用的EXTI0中断线,PA1、PB1...PG1共用的EXTI1中断线,也就是 编程里面的(如下图库文件),对应16个中断线,... -
浅谈外部中断中的相关函数设置
2018-04-16 23:38:37说在前面:记得前几天写了一个用按键来控制灯的函数,但是无论怎样都无法实现函数的重复使用,一开始以为是没有设置好循环,但是,因为没有实现外部中断才做不了循环操作2.外部中断1.作为STM32而言,每一个IO口都... -
STM32外部中断
2021-05-22 21:58:11外部中断概述 外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续... -
STM32 外部中断详解(原理+配置代码)
2021-05-23 08:50:49本文介绍了STM32基于标准外设库的外部中断配置,以及基于参考手册如何更加寄存器配置外部中断1 前言打算写一下中断,又忍不住想说一下中断的概念,去书上翻一翻,或者自己在搜索引擎上搜一下,都可以找到一大堆,... -
单片机c语言函数中断函数(中断服务程序).docx
2020-09-30 07:44:54PAGE / NUMPAGES 单片机_C语言函数_中断函数中断服务程序 ? 在开始写中断函数之前我们来一起回顾一下... 1中断源中断请求信号的来源8051有3个内部中断源T0T1串行口2个外部中断源INT0INT1这两个低电平有效上面的那个横杠 -
51单片机基础(1) -外部中断
2021-08-04 20:54:29外部中断 以下是假期对51单片机课程内容做的一些小结 中断的基本概念 中断: CPU与外设并行工作,当外设数据准备好或者有某种突发事件发生时,向CPU提出请求,CPU暂停正在进行的工作,转而为该外设服务(或者是处理... -
外部中断与内部中断原理与使用
2021-07-26 09:36:51外部中断源2个 1.INT0 — 由P3.2端口控制引入,低水平或者下降沿引起。(下降沿就是给5V后给0V形成下降电压) 2.INT1 —由P3.3端口控制引入,低水平或者下降沿引起。 (这两个中断源标志与中断方式由特殊功能寄存器... -
6.STC15W408AS单片机外部中断
2021-07-15 09:29:24STC15W408AS单片机有4个外部中断,它们分别是:外部中断0(INT0)、外部中断1(INT1)、外部中断2(INT2)、外部中断3(INT3)。 外部中断0(INT0)和外部中断1(INT1)触发有两种触发方式,上升沿或下降沿均可触发方式 和仅... -
STM32-外部中断
2021-10-02 22:07:221 外部中断概述 EXTI(External interrupt/event controller)—外部中断/事件控制器,和在STM32NVIC中断优先级管理(中断向量表)中讲述的CM3内核的外部中断不同。特指的是,在中断向量表中的EXTI的外部中断。STM... -
51单片机:外部中断1程序设计
2020-07-20 11:13:03操作K4按键使LED8(D8)状态取反 #include <reg52.h> typedef unsigned int u16; typedef unsigned char u8;... //INT1 ...//设置外部中断1 void Int1Init() { IT1=1;//设置触发方式 EX1=1;//打开 -
ESP32外部中断
2021-11-21 17:43:22文章目录前言一、外部中断概念二、配置外部中断1.编写中断服务函数2.配置中断总结 前言 提示:以下是本篇文章正文内容 一、外部中断概念 外部中断是单片机实时地处理外部事件的一种内部机制 当外部事件发生后,... -
stm32hal库之外部中断巨坑导致程序卡死在中断函数
2020-03-03 10:29:56stm32hal库之外部中断巨坑,如果使用按键外部中断会导致频繁触发中断,从而不能退出中断,导致卡死 void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) { /* EXTI line interrupt detected */ if(__HAL_GPIO_EXTI_... -
进一步理解中断函数
2021-05-18 17:10:051.另一个外部中断前面两讲都是围绕外部中断0(P3.2的功能)来讲解,这里我们也还有一个外部中断1(P3.3的功能)。P3.3要想实现上一讲的功能只需杜邦线接下面的IO端口即可代码就是把“EX0”改为“EX1”,“IT0”改为“IT1... -
51单片机——外部中断
2021-04-16 12:35:06一、外部中断 1.1 中断 关于中断的概念在上一篇博客中已经提到了。(传送门:51单片机入门教程(5)——定时器中断) 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并... -
C51中断函数的写法(最新整理)
2021-05-23 05:06:05《C51中断函数的写法(最新整理)》由会员分享,可在线阅读,更多相关《C51中断函数的写法(最新整理)(4页珍藏版)》请在人人文库网上搜索。1、一、中断允许控制CPU 对中断系统所有中断以及某个中断源的开放和屏蔽是由... -
外部中断,定时器中断的理解
2021-04-25 23:20:53外部中断一般指io高低电平来触发并响应io中断函数 定时器中断 定时器中断是指计数器在晶振的震荡下一直加数一直加到一定数值后溢出产生中断,并进入中断服务函数 先把相关的寄存器放上去 1:先说外部中断 ... -
【51单片机】外部中断
2021-12-07 11:12:1351的 外部中断 与 定时器(内部中断) 有一个共同特点,那就是与主程序是...这里的触发条件是指:低电平或者下降沿,满足条件后会才执行中断函数。 说到这里就要提一下,51只有2个外部中断:P3^2口——外部中断0 ... -
STM32 HAL 外部中断
2022-03-23 16:14:19* 函数功能: 按键外部中断回调函数 * 输入参数: GPIO_Pin:中断引脚 * 返 回 值: 无 * 说 明: 无 */ /* USER CODE BEGIN 1 */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { //在此判断是哪个外部中断... -
STM8L152 外部中断例程
2014-12-03 14:36:54调试成功的例程,包括整个工程文件,非常适合初学者 -
51单片机外部中断0实例详解
2021-05-22 03:49:54151单片机的中断源51单片机共有5个中断源,分别为:外部中断0定时器0中断外部中断1定时器1中断串口中断每一个中断都对应一个中断向量,中断向量表如下所示:2什么是中断事件当中断发生时单片机将正在执行的程序暂时... -
STM32F103:外部中断(EXTI)——原理和程序
2021-11-23 13:50:08一、外部中断(EXTI)—简介 EXTI (External interrupt/event controller)——外部中断/事件控制器。 互联型STM32有20个能够产生事件/中断请求的边沿检测器,STM32F103系列有19个能够产生事件/中断请求的边沿检测器。 ... -
HAL库教程4:外部中断
2019-04-09 22:36:11外部中断机制 本章我们仍然是通过按键来控制LED,只不过实现方式由轮询变为了外部中断。为什么需要外部中断?为了给CPU减轻负担。 举个例子 比如你今天有个快递,快递一般放在前台或是门卫。你有两种... -
8051单片机实战分析(以STC89C52RC为例) | 10 - 外部中断的使用
2021-06-05 10:22:20IP寄存器位 作用 PS 串行口RX/TX中断优先 PT1 定时器T1中断优先 PX1 外中断INT1中断优先 PT0 定时器T0中断优先 PX0 外部中断INT0中断优先 2 原理图 下面我们进行例子来学习外部中断INT0与INT1的使用,例子很简单:...