精华内容
下载资源
问答
  • 外部中断0的中断函数
    千次阅读
    2021-05-19 17:30:46

    原标题:STC89C52单片机外部中断0实验

    /

    实现功能: 设置,然后通过点亮与P1口第一个引脚相连的D1来

    显示系统进入了外部中断0

    实验板型号:BS-XYD-C52

    实验名称: 外部中断0测试

    编写人: 谢应东

    编写日期: 2012-4-27

    /

    #include

    #include

    #define uchar unsigned char //定义unsigned char 为 uchar

    #define uint unsigned int

    sbit 1=P1^0; //定义P1口的第一个引脚为LED1,方便写程序

    #define LED1_ON LED1=0 //定义D1被点亮的标示

    /

    函数名称:Init_INT0

    函数功能:设置单片机的外部中断0,具体的设置状态为外部低电平触发

    参数介绍:无

    返回值: 无

    注意事项:无

    /

    void Init_INT0()

    {

    EA=1; //首先开启总中断

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

    IT0=0; //设置成低电平触发,1为下降沿触发

    }

    /

    函数名称:main

    函数功能:完成外部中断0的初始化设置,然后系统完全进入等待状态,直到有外部中断

    被触发

    参数介绍:无

    返回值: 无

    注意事项:无

    /

    void main()

    {

    Init_INT0();

    while(1);

    }

    /

    函数名称:Interrupt0_handler

    函数功能:进入中断服务函数,本实验室通过一个名为D1的发光二极管的点亮来表示进

    入了外部中断0的

    参数介绍:无

    返回值: 无

    注意事项:无

    /

    void Interrupt0_handler() interrupt 0

    {

    LED1_ON;

    }

    责任编辑:

    更多相关内容
  • 外部中断0 外部0中断触发:(P3.2口触发;P3.2触发;P3.2触发) 若IT0=0,则为低电平触发 若IT0=1,则为下降沿触发 外部中断0初始化: 初始化方法一: void Init_INT0() { IT0=1;//设置外部中断0;下降沿触发 EX0=...

    中断

    在这里插入图片描述

    TMOD:定时器/计数器工作方式寄存器

    TCON:定时器/计数器控制寄存器

    在这里插入图片描述

    IE:中断允许控制寄存器

    在这里插入图片描述

    IP:中断优先级控制寄存器

    外部中断0

    外部0中断触发:(P3.2口触发;P3.2触发;P3.2触发

    若IT0=0,则为低电平触发

    若IT0=1,则为下降沿触发

    外部中断0初始化:

    初始化方法一:

    void Init_INT0()
    {
     IT0=1;//设置外部中断0;下降沿触发 
     EX0=1;//开启外部中断0; 
     EA=1;//开启中断总开关 
     } 
    
    
    初始

    化方法二:

    void Init_INT0()
    { 
     TCON=TCON|0x01;//0000 0001->0x01相当IT0=1;设置下降沿触发中断
     IE=0x81;//1000 0001->0X81;
         //第一个1是EA=1;即中断总开关
         //第二个1是EX0=1;即中断分支开关
    }
    
    
    外部0

    中断子函数:

    void RSI_INT0() interrupt 0
    {
     P0=~P0;//当触发中P0口的LED取反 
    }

    主函数:

    void main()
    {
     P0=0xff;//灯全熄灭
     Init_INT0();//初始化外部中断0
     while(1);
    }
    
    
     

    外部中断1:

    外部1中断触发:(P3.3口触发;P3.3触发;P3.3触发

    若IT1=0,则为低电平触发

    若IT1=1,则为下降沿触发

    外部中断1初始化:

    方法一:

    void Init_INT1()
    {
     IT1=1;//设置外部中断1;下降沿触发 
     EX1=1;//开启外部中断1; 
     EA=1;//开启中断总开关 
     } 
    
    
     

    方法二:

    void Init_INT1()
    { 
    // IT1=1;//设置下降沿触发
    // EX1=1;//外部中断1的分支开关
    // EA=1;//中断总开关
      
      TCON=TCON|0x04;//0000 0100->0x04相当IT1=1;设置下降沿触发
      IE=0x84;//IE=1000 0100->0x84
         //第一个1相当EA=1;第二个1相当EX1=1
    }
    
    
     
    
    外部1

    中断子函数:

    void ISR_Int1() interrupt 2
    {
      P0=~P0;//取反 
    }

    主函数:(P3.3给了下降沿,软件触发)

    void main()
    {
     P0=0xff;//熄灭所有的灯
     Init_INT1();//外部中断1初始化
     while(1){
      Int1=1;
      Int1=0;//P3.3由1->0;下降沿触发
     }
    }

    该主函数可进行Dobug,查看函数的走向。

    例题:(中断嵌套)

    利用外部中断0,进行3次流水灯;

    利用外部中断1,进行3次闪耀;

    且外部中断1的优先级高于外部中断1。

    不进行中断时LED灯处于熄灭状态。

    #include <reg51.h>
    
     
    
    //延时程序
    
    void delay()
    
    {
    
           int i,j;
    
           for(i=0;i<10;i++)
    
            for(j=0;j<3000;j++);    
    
    }
    
    //外部中断0和1初始化
    
    void Init_INT01()
    
    {      
    
           TCON=TCON|0x05;//0000
    0101->0x01相当IT0=1,IT1=1;设置下降沿触发中断
    
           IE=0x85;//1000 0101->0X85;
    
                                       //第一个1是EA=1;即中断总开关
    
                                       //第二个1是EX1=1;即中断1分支开关
    
                   //第二个1是EX0=1;即中断0分支开关
    
           IP=IP|0x04;//设置外部中断1优先级高于外部中断0
    
    }
    
     
    
    //LED右移程序
    
    void lelf(unsigned int n)
    
    {
    
           unsigned int i,j;
    
           for(i=0;i<n;i++)
    
           {
    
                  for(j=0;j<8;j++)
    
                  {
    
                         P0=~(0x80>>j);
    
                         delay();
    
                  }
    
           }
    
           P0=0xff;
    
    }
    
     
    
    //闪耀程序
    
    void flash(unsigned int n)
    
    {
    
           unsigned int i;
    
           for(i=0;i<n;i++)
    
           {
    
                  P0=~P0;
    
                  delay();
    
           }
    
    }
    
    void main()
    
    {
    
           Init_INT01();
    
           while(1);
    
    }
    
    //外部中断0子程序
    
    void out_INT0() interrupt 0
    
    {
    
           lelf(3);
    
           
    
    }
    
    //外部中断1子程序
    
    void out_INT1() interrupt 2
    
    {
    
           flash(4);
    
    }

    定时器0中断:

    中断触发:

    定时/计数时间到触发中断

    定时/计数原理:

    脉冲下降沿,定时器/计数的值加 1

    初始化程序:
    //定时器/计数器0初始化

    void tminer0_Init()
    {
     TMOD&=0XFC;//选择定时模式C/T=0;计数模式C/T=1;
     TMOD|=0x01;//选择定时器0;工作模式1,16位定时/计数
     TH0=0xFF;  //装初值
     TL0=0xFE;  //定时1us
     ET0=1;     //定时器0开关
     EA=1;      //中断总开关
     TR0=1;     //启动定时器0
    }

    中断子程序:

    //定时器中断0子程序
    void time0() interrupt 1
    {
     TH0=0xFF;//重新装初值
     TL0=0xFE;//定时1us
     P0=~P0;
    }

    主程序:

    void main()
    {
     tminer0_Init();
     while(1);
    }
     

    定时器1中断:

    #include
    <reg51.h>
    //定时器/计数器1初始化
    
    void
    tminer1_Init()
    
    {
    
           TMOD&=0XCF;//选择定时模式C/T=0;计数模式C/T=1;
    
           TMOD|=0x10;//选择定时器1;工作模式1,16位定时/计数
    
           TH1=0xFF;//装初值
    
           TL1=0xFE;//定时1us
    
           ET1=1;//定时器1开关
    
           EA=1;//中断总开关
    
           TR1=1;//启动定时器1
    
    }
    
    void
    main()
    
    {
    
           tminer1_Init();
    
           while(1);
    
    }
    
    //定时器中断1子程序
    
    void
    time0() interrupt 3
    
    {
    
           TH1=0xFF;//重新装初值
    
           TL1=0xFE;//定时1us
    
           P0=~P0;
    
    }
    展开全文
  • 实验11:外部中断0

    千次阅读 2020-03-05 21:11:06
    实验11:外部中断0 /************************************************************************************** * 外部中断0实验 * 实现现象:下载程序后按下K3按键可以对D1小灯状态取反。 注意事项...

    实验11:外部中断0

    这里要知道51单片机只有P3.2和P3.3引脚的低电平或下降沿信号中断。

    注意51单片机一共支持5个中断源,其中2个外部中断源,3个内部中断源
    (1)外部中断0,由INT0(P3.2引脚)输入。
    (2)外部中断1,由INT1(P3.3引脚)输入。
    (3)定时/计数器0溢出中断(T0)请求。
    (4)定时/计数器0溢出中断(T1)请求。
    (5)串行口发送/接收中断请求。

    1、设置中断触发方式,即IT0=1或0,IT1=1或0
    当IT0=0时,为电平触发方式。
    当IT0=1时,为边沿触发方式(下降沿有效)。

    2、开对应的外部中断,即EX0=1或EX1=1;
    外部中断0允许位或外部中断1允许位。

    3、开总中断,即EA=1;

    4、等待外部设备产生中断请求,即通过P3.2,P.3.3口连接外部设备产生中断

    5、中断响应,执行中断服务函数

    /**************************************************************************************
    *		              外部中断0实验												  *
    实现现象:下载程序后按下K3按键可以对D1小灯状态取反。
    注意事项:无。																				  
    ***************************************************************************************/
    
    #include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器
    
    typedef unsigned int u16;	  //对数据类型进行声明定义
    typedef unsigned char u8;
    
    sbit k3=P3^2;  //定义按键K3
    sbit led=P2^0;	 //定义P20口是led
    
    /*******************************************************************************
    * 函 数 名         : delay
    * 函数功能		   : 延时函数,i=1时,大约延时10us
    *******************************************************************************/
    void delay(u16 i)
    {
    	while(i--);	
    }
    
    /*******************************************************************************
    * 函 数 名         : Int1Init()
    * 函数功能		   : 设置外部中断1
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/
    void Int0Init()
    {
    	//设置INT0
    	IT0=1;//跳变沿出发方式(下降沿),当0时,为电平触发方式。
    	EX0=1;//打开INT0的中断允许。	确认是中断0而非中断1.
    	EA=1;//打开总中断“开关”	
    }
    
    /*******************************************************************************
    * 函 数 名       : main
    * 函数功能		 : 主函数
    * 输    入       : 无
    * 输    出    	 : 无
    *******************************************************************************/
    void main()
    {	
    	Int0Init();  //	设置外部中断0
    	while(1);		
    }
    
    /*******************************************************************************
    * 函 数 名         : duan0()	
    * 函数功能		   : 外部中断0的中断函数
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/
    
    void duan0()	interrupt 0		//外部中断0的中断函数
    {
    	delay(1000);	 //延时消抖
    	if(k3==0)
    	{
    		led=~led;
    	}
    }
    
    
    展开全文
  • 目录如何配置GPIO的外部中断配置RCC时钟GPIO配置EXTI配置NVIC配置中断服务函数 IRQ_Handler 如何配置GPIO的外部中断 以STM32F103为例,记录配置GPIO外部中断的一般方法与流程。 配置RCC时钟 RCC时钟配置是STM32MCU...
  • 中断对于开发嵌入式系统来讲的地位绝对是毋庸置疑的,在C51单片机时代,一共只有5个中断,其中2个外部中断,2个定时/计数器中断和一个串口中断,但是在STM32中,中断数量大大增加,而且中断的设置也更加复杂。...
  • cc2530的外部中断的使用,主要是使用按键中断的方式来控制单片机,还有中断处理函数
  • 今天遇到一个惨痛的教训。 用CubeMX生成按键的外部中断工程,Nucleo的板子上PA5连接LED,PC13连接按键,并且外接上拉电阻。如图 于是在CubeMX配置PA5引脚和PC13引脚,一个作为推挽...那么中断函数在哪里呢?打开工
  • 51单片机外部中断0实例详解

    千次阅读 2021-05-22 03:49:54
    今天就以51单片机的外部中断0为例,来简单讲解一下单片机中断的用法。151单片机的中断源51单片机共有5个中断源,分别为:外部中断0定时器0中断外部中断1定时器1中断串口中断每一个中断都对应一个中断向量,中断向...

    今天就以51单片机的外部中断0为例,来简单讲解一下单片机中断的用法。

    1 51单片机的中断源

    51单片机共有5个中断源,分别为:外部中断0

    定时器0中断

    外部中断1

    定时器1中断

    串口中断

    每一个中断都对应一个中断向量,中断向量表如下所示:

    a6cdb607f79bfc891f89a65b8e2b9fdf.png

    2 什么是中断事件

    当中断发生时单片机将正在执行的程序暂时放下而去处理中断事件,当中断事件处理完毕后再接着去处理之前的事情,这样可以大大降低单片机的资源,提高执行效率。举个例子说明一下什么是中断:

    我很喜欢打CS,每天晚上我都会抽时间打CS,但同时厨房里正在烧水,为了不使水烧干,我每隔5分钟就去厨房看一下水有没开,但这就错过了游戏老被别人爆头干掉,我很苦恼,怎么办。于是我在网上买了一个水烧开就会叫的水壶,这样我就不用每隔5分钟去厨房了从而可以专心的打游戏,只有听到水壶吱吱叫的时候,我去把水倒出来就可以了。

    在这个例子里,打游戏就是主任务,水烧开就是中断,吱吱叫就是中断向量,听到吱吱响我就明白水烧开了,这时我要把打游戏这个主任务暂时放下,转而去处理水烧开了这个中断事件,水倒完后我就又回到了游戏这个主任务中。这样是不是提高了打游戏的效率呢?

    3 中断的硬件实现

    51单片机的外部中断0引脚接一只按键,该按键通过上拉电阻接到电源,即没有按键发生时单片机检测到的是高电平,当按键按下时单片机检测到的是低电平。单片机的P0.0引脚以灌电流的方式接了一只LED,当按键按下时LED灯点亮,没按键时LED灯熄灭。

    c990411e38221a3a6d325ceac62b476f.png

    4 中断的软件实现

    单片机中断函数的写法比较固定,51单片机中断函数的写法如下:

    void Initd() interrupt 0

    其中:void:为中断函数的返回类型,中断函数多为空类型;

    Initd():是中断函数的名称,这个函数名符合C语言函数命名规范就可以,随便起;

    interrupt:为51单片机中断的关键字,必须这么写(51单片机必须这么写);

    0:为中断向量,该值详看第一个表格,如果是外部中断1就写2,如果是定时器1中断就写3;

    中断函数不用在主函数中调用,只要中断事件发生,单片机自己主动会调到中断函数中。

    该例子的函数如下所示:

    386c4eae8860bcd9d1a9301c4c1328fe.png

    5仿真实现

    当按键发生时,LED灯点亮,如下图所示。注意对比两种图中按键的状态。

    58afbe67600f0ea8626252b3926890ac.png

    展开全文
  • STM32外部中断详解

    2020-08-11 07:53:36
    ARM Coetex-M3内核共支持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置。STM32目前支持的中断共84个(16个内部+68个外部),还有16级可编程的中断优先级的设置,仅使用中断优先级设置...
  • CPU正在处理某个事件,突然另外一个事件需要处理,于是进入中断后,而你不想将现在执行的程序的各寄存器状态入栈,那么可以把这个中断程序放入另一个寄存器组,如切换到1组,然后退出中断时,再切回到0组(原来的...
  • 主要介绍了外部中断的使用方法,包括: 1 基本概念 2 GPIO外部中断 3 程序开发
  • STM32 外部中断简介

    2020-08-11 08:13:53
    STM32 IO 口中断的一些基础概念。STM32 的每个 IO 都可以作为外部中断的中断输入口,这点也是 STM32 的强大之处。STM32F103 的中断控制器支持 19 个外部中断/事件请求。
  • STM32外部中断

    千次阅读 2021-05-22 21:58:11
    外部中断概述 外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续...
  • PAGE / NUMPAGES 单片机_C语言函数_中断函数中断服务程序 ? 在开始写中断函数之前我们来一起回顾一下... 1中断源中断请求信号的来源8051有3个内部中断源T0T1串行口2个外部中断源INT0INT1这两个低电平有效上面的那个横杠
  • C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。
  • 起初想用stm32做一个中断控制的4x4阵列键盘,利用的是PA0~PA7,八个I/O口。摁下按键对应的横(纵)线为接地为低电平。 识别方式为PA4~PA7设为上拉电阻输入,PA0~PA3设为推挽输出并将其复位(设为0)来保证无论...
  • ESP32外部中断

    千次阅读 2021-11-21 17:43:22
    文章目录前言一、外部中断概念二、配置外部中断1.编写中断服务函数2.配置中断总结 前言 提示:以下是本篇文章正文内容 一、外部中断概念 外部中断是单片机实时地处理外部事件的一种内部机制 当外部事件发生后,...
  • 本文介绍了STM32基于标准外设库的外部中断配置,以及基于参考手册如何更加寄存器配置外部中断1 前言打算写一下中断,又忍不住想说一下中断的概念,去书上翻一翻,或者自己在搜索引擎上搜一下,都可以找到一大堆,...
  • 可以看到,外部中断1(INT1)位于P3_3口,在P3_3处连接一个按钮,当按钮按下时,P3_3 = 0,由此触发中断函数 在此之前,打开中断总开关EA = 1,中断使能EX1 = 1,采用下降沿触发 #include <REGX52.H> ...
  • 外部中断与内部中断原理与使用

    千次阅读 2021-07-26 09:36:51
    外部中断源2个 1.INT0 — 由P3.2端口控制引入,低水平或者下降沿引起。(下降沿就是给5V后给0V形成下降电压) 2.INT1 —由P3.3端口控制引入,低水平或者下降沿引起。 (这两个中断源标志与中断方式由特殊功能寄存器...
  • 单片机-外部中断

    2020-08-27 15:33:34
    外部中断在单片机中占有很重要的作用。而且外部中断的优先级默认是最高的。平台单片机一般有两个外部中断---INT0、INT1。
  • 外部中断算是中断机制中的一种,只要中断引脚触发,便会打断当前的执行任务到外部中断函数中 如遇到有重要任务执行时不想被外部中断所打断,便需要暂时关闭外部中断 在库函数中没找到外部中断打开关闭的操作函数,在...
  • STM32-外部中断详解

    千次阅读 2022-03-16 23:42:37
    本章讲解STM32的另一个重要的外设资源——外部中断;在前面已经讲过了NVIC中断优先级管理,相信大家对STM32的中断系统有了初步的了解,知道了如何给每一个内部的中断设置顺序,然而只有内部外设的中断信号还不够,有...
  • 【51单片机】外部中断

    千次阅读 多人点赞 2021-12-07 11:12:13
    51的 外部中断 与 定时器(内部中断) 有一个共同特点,那就是与主程序是并行工作的,就是主程序在运行的时候,中断也在等待触发条件,当中断被触发...说到这里就要提一下,51只有2个外部中断:P3^2口——外部中断0 ...
  • 51单片机学习——8.1外部中断0和1

    千次阅读 2021-02-13 08:49:54
    外部中断0和1外部中断原理编程原理(外部中断0)代码实现 外部中断原理 外部中断0:(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置...
  • 《初学者C51自学笔记》之中断(外部中断0

    万次阅读 多人点赞 2018-08-05 18:06:49
    概念:  CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);CPU暂时中断当前的工作...(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时...
  • 每按一下按键(外部 0 中断 P3.2),8 个 LED 从下向上流水 1 次。 电路图: 代码: #include<reg51.h> #include<intrins.h> void delay(unsigned int m) { unsigned int i; for(;m>0;m--) { ...
  • STM32-外部中断

    千次阅读 2021-10-02 22:07:22
    1 外部中断概述 EXTI(External interrupt/event controller)—外部中断/事件控制器,和在STM32NVIC中断优先级管理(中断向量表)中讲述的CM3内核的外部中断不同。特指的是,在中断向量表中的EXTI的外部中断。STM...
  • 单片机中断是指CPU在正常执行程序的过程中,由于计算机内部或外部发生了另一...今天要做的一个实验叫做外部中断,按下按键,停止主程序中的内容,立即转去执行中断服务函数。 我们主要看到原理图与代码,了解中断是什...
  • c语言中的中断函数注意事项单片机_C语言函数_中断函数(中断服务程序)在开始写中断函数之前,我们来一起回顾一下,...(8051有3个内部中断源T0,T1,串行口,2个外部中断源INT0,INT1(这两个低电平有效,上面的那个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 121,032
精华内容 48,412
关键字:

外部中断0的中断函数