精华内容
下载资源
问答
  • 外部中断1的中断号为
    千次阅读
    2019-07-23 10:41:21

    程序实现的功能:

    在实验板上左下方有一个黑色的独立按键(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;
    }

     

    更多相关内容
  • 外部中断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;
    
    }
    展开全文
  • 51 中断系统 外部中断0 外部中断1

    万次阅读 多人点赞 2019-06-14 22:26:11
    EX0(IE.0),外部中断0允许位; ET0(IE.1),定时/计数器T0中断允许位; EX1(IE.2),外部中断0允许位; ET1(IE.3),定时/计数器T1中断允许位; ES(IE.4),串行口中断允许位; EA (IE.7), CPU中断允...

    51单片机的中断系统结构

    中断允许控制

    CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。

    EX0(IE.0),外部中断0允许位;

    ET0(IE.1),定时/计数器T0中断允许位;

    EX1(IE.2),外部中断0允许位;

    ET1(IE.3),定时/计数器T1中断允许位;

    ES(IE.4),串行口中断允许位;

    EA (IE.7), CPU中断允许(总允许)位。

    中断请求标志

    1、TCON的中断标志

    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溢出中断请求标志位。      

     

    中断源

     

    中断响应条件

     中断源有中断请求;

    n此中断源的中断允许位为1;

     CPU开中断(即EA=1)。

    以上三条同时满足时,CPU才有可能响应中断

     

     

     

    
    #include "reg51.h"   
    #include "intrins.h"
    typedef unsigned char u8;
    typedef unsigned int u16;
    
    
    sbit k1=P3^3;	 
    sbit led=P2^0;	
    void delay(u16 i)
    {
    	while (i--);
    } 
    
    //外部中断0条件
    void Int0Init()
    {
    	IT0 = 1;	//设置外部中断的触发方式为下降沿触发。
    	EX0 = 1;	//开启外部中断0
    	EA = 1;		//中断总开关
    }
    
    //外部中断1条件
    void Int1Init()
    {
    	IT1 = 1;	//设置外部中断1的触发方式为下降沿触发。
    	EX1 = 1;	//开启外部中断1
    	EA = 1;		//中断总开关
    }
    
    void main()
    {
    	Int1Init();
    	while(1);
    }
    void Int0()	   interrupt 0
    {
    	  delay(1000);
    	  if(k1 == 0)
    	  {
    	  	led= ~led;
    	  }
    }
    
    void Int1()	   interrupt 2
    {
    	  delay(1000);
    	  if(k1 == 0)
    	  {
    	  	led= ~led;
    	  }
    }
    

     

    proteus 8 电路原理图,k3接p32,k4接p33。p32默认高电平,按下k3后,电平拉低,产生下降沿,触发中断0。同样k4按下,触发为中断1。

     

    #include "reg51.h"   
    #include "intrins.h"
    typedef unsigned char u8;
    typedef unsigned int u16;
    
    sbit k3=P3^2;
    sbit k4=P3^3;	 
    sbit led=P2^0;	
    void delay(u16 i)
    {
    	while (i--);
    } 
    
    //外部中断0条件
    void Int0Init()
    {
    	IT0 = 1;	//设置外部中断的触发方式为下降沿触发。
    	EX0 = 1;	//开启外部中断0
    	EA = 1;		//中断总开关
    }
    
    //外部中断1条件
    void Int1Init()
    {
    	IT1 = 1;	//设置外部中断1的触发方式为下降沿触发。
    	EX1 = 1;	//开启外部中断1
    	EA = 1;		//中断总开关
    }
    
    void main()
    {
    	Int0Init();
    	while(1);
    }
    void Int0()	   interrupt 0
    {
    	  delay(1000);
    	  if(k3 == 0)
    	  {
    	  	led= ~led;
    	  }
    }
    
    void Int1()	   interrupt 2
    {
    	  delay(1000);
    	  if(k4 == 0)
    	  {
    	  	led= ~led;
    	  }
    }

     

    展开全文
  • 6.STC15W408AS单片机外部中断

    千次阅读 2021-07-15 09:29:24
    STC15W408AS单片机有4个外部中断,它们分别是:外部中断0(INT0)、外部中断1(INT1)、外部中断2(INT2)、外部中断3(INT3)。 外部中断0(INT0)和外部中断1(INT1)触发有两种触发方式,上升沿或下降沿均可触发方式 和仅...

    一、外部中断简介

            STC15W408AS单片机有4个外部中断,它们分别是:外部中断0(INT0)、外部中断1(INT1)、外部中断2(INT2)、外部中断3(INT3)。

            外部中断0(INT0)和外部中断1(INT1)触发有两种触发方式,上升沿或下降沿均可触发方式

    和仅下降沿触发方式。

            TCON寄存器中的IT0/TCON.0和IT1/TCON.2决定了外部中断0和1是上升沿和下降沿均可触发还是仅下降沿触发。如果ITx = 0(x = 0,1),那么系统在INTx(x = 0,1)脚探测到上升沿或下降沿后均可产生外部中断。如果ITx = 1(x = 0,1),那么系统在INTx( x= 0,1)脚探测下降沿后才可产生外部中断。外部中断0(INT0)和外部中断1(INT1)还可以用于将单片机从掉电模式唤醒。

            外部中断2(INT2)、外部中断3(INT3)都只能下降沿触发。外部中断2~3的中断请求标志位被隐藏起来了,对用户不可见,故也无需用户清"0"。当相应的中断服务程序被响应后或中断允许位EXn (n=2,3)被清零后,这些中断请求标志位会立即自动地被清0。这些中断请求标志位也可以通过软件禁止相应的中断允许控制位将其清"0"(特殊应用)。外部中断2(INT2)、外部中断3(INT3)也可以用于将单片机从掉电模式唤醒。

            由于系统每个时钟对外部中断引脚采样1次,所以为了确保被检测到,输入信号应该至少维持2个时钟。如果外部中断是仅下降沿触发,要求必须在相应的引脚维持高电平至少1个时钟,而且低电平也要持续至少一个时钟,才能确保该下降沿被CPU检测到。同样,如果外部中断是上升沿、下降沿均可触发,则要求必须在相应的引脚维持低电平或高电平至少1个时钟,而且高电平或低电平也要持续至少一个时钟,这样才能确保CPU能够检测到该上升沿或下降沿。

    二、中断结构图

    这里,我们只需要看最上面的部分就可以。

    三、中断寄存器

            IE寄存器是中断总控制,IP是中断优先级控制寄存器,TCON的低4位是外部中断0和外部中断1控制位。一般情况下我们只需要操作IE和TCON寄存器即可。

    四、实验电路图

    实验现象是点按一下按钮,LED闪烁一次,和上面的按键输入实验效果是一样的。

    五、实验程序

    #include "stc15.h"
    void main()
    {
    	P11 = 0; // 初始设置P1.1为低电平 熄灭LED
    	IT0 = 1; // 设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
    	EX0 = 1; // 使能INT0中断
    	EA = 1;  // 打开总中断
    	while (1);
    }
    //外部中断服务程序
    void exint0() interrupt 0 //INT0中断入口
    {
      P11 = !P11; //将P1.1口取反
    }
    

            这里需要说明的是为什么外部中断服务程序是 interrupt 0。这个后面数字和中断优先级有关。从上面的中断结构图中,我们就可以看出外部中断0的优先级是最高的,所以这里是0,其他的在后面使用到再讲。

    更多首发原创,请关注我。

    展开全文
  • STM32外部中断

    千次阅读 2021-05-22 21:58:11
    外部中断概述 外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续...
  • ESP32外部中断

    千次阅读 2021-11-21 17:43:22
    文章目录前言一、外部中断概念二、配置外部中断1.编写中断服务函数2.配置中断总结 前言 提示:以下是本篇文章正文内容 一、外部中断概念 外部中断是单片机实时地处理外部事件的一种内部机制 当外部事件发生后,...
  • 外部中断

    千次阅读 2020-11-20 12:41:42
    文章目录外部中断硬件控制外部中断矢量外部中断控制寄存器外部中断控制位软件控制外部中断0初始化方法外部中断1初始化方法外部中断程序框架示例P3.2口脉冲输入计数 硬件控制 外部中断矢量 中断源名称 中断源地址...
  • 【51单片机】外部中断

    千次阅读 多人点赞 2021-12-07 11:12:13
    51的 外部中断 与 定时器(内部中断) 有一个共同特点,那就是与主程序是并行工作的,就是主程序在运行的时候,中断也在等待触发条件,当中断被触发的时候会暂停主程序转而执行中断服务程序,只有中断服务程序执行完后...
  • 51单片机——外部中断

    千次阅读 2021-04-16 12:35:06
    一、外部中断 1.1 中断 关于中断的概念在上一篇博客中已经提到了。(传送门:51单片机入门教程(5)——定时器中断) 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并...
  • 51单片机基础(1) -外部中断

    千次阅读 2021-08-04 20:54:29
    外部中断 以下是假期对51单片机课程内容做的一些小结 中断的基本概念 中断: CPU与外设并行工作,当外设数据准备好或者有某种突发事件发生时,向CPU提出请求,CPU暂停正在进行的工作,转而该外设服务(或者是处理...
  • 51单片机:外部中断1程序设计

    千次阅读 2020-07-20 11:13:03
    操作K4按键使LED8(D8)状态取反 #include <reg52.h> typedef unsigned int u16; typedef unsigned char u8; ...//设置外部中断1 void Int1Init() { IT1=1;//设置触发方式 EX1=1;//打开
  • AT89X51单片机中断嵌套程序,定时器1外部中断0相互嵌套
  • 51单片机学习——8.1外部中断0和1

    千次阅读 2021-02-13 08:49:54
    外部中断1:(P3.3)可由IT1(TCON.2)选择其低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。 编程原理(外部中断0) 首先我们对中断允许控制寄存器...
  • Arduino ESP8266外部中断触发示例

    千次阅读 2022-03-26 19:00:25
    ESP8266外部中断触发示例 在Fritzing中找不到WeMos D1开发板,只能选择D1mini板子作为接线图。 实验选择的开发板类型,不局限于NodeMCU,这个型号,可以选择Wemos , 实例代码 /* * * 中断触发模式 LOW 低...
  • 外部中断,定时器中断的理解

    千次阅读 2021-04-25 23:20:53
    外部中断 外部中断一般是由计算机外设发出的中断请指求,如:键盘中断、打印机中断、定时器中断等。外部中断一般指io高低电平来触发并响应io中断函数 定时器中断 定时器中断是指计数器在晶振的...1:先说外部中断 ...
  • ESP32外部中断原理&实战 阅读建议:   有一定Cortex-m架构知识基础。 外部中断原理 外部中断实战 首先配置GPIO   ESP-IDF提供了一个结构体方便对其进行初始化,结构体如下: typedef struct { uint64_t ...
  • 每按一下按键(外部 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...
  • 51单片机外部中断拓展(两个以上的外部中断

    千次阅读 多人点赞 2021-05-14 14:17:03
    而很多现实场景需要有多个外部中断同时进行,这时候单片机自带的外部中断端口可能就不够用了,那么,怎么解决这个问题呢,本文将会用最典型的51单片机例,介绍两种较简单的拓展外部中断的方法。
  • 外部中断事件

    千次阅读 2018-11-12 23:13:23
    外部中断事件 众所周知,CPU在计算机系统中,除了能够执行指令,进行运算外,还应该有输入输出功能。比如说,我现在在打字输入‘a’,CPU他会处理这个按键,并在你的屏幕上显示‘a’。我们想想,它能显示,是不是...
  • 这里,我们使用外部中断1作为中断开关,LED共阴极,阳极分别连接P1_1,P1_2,P1_3,P1_4,高电平点亮,这里只放置了4个LED,有需要的可自行连接 可以看到,外部中断1(INT1)位于P3_3口,在P3_3处连接一个按钮,当按钮按...
  • 外部中断与内部中断原理与使用

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

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

    千次阅读 2021-05-22 03:49:54
    151单片机的中断源51单片机共有5个中断源,分别外部中断0定时器0中断外部中断1定时器1中断串口中断每一个中断都对应一个中断向量,中断向量表如下所示:2什么是中断事件当中断发生时单片机将正在执行的程序暂时...
  • 实验二 外部中断应用 设计要求: ...当外部中断1请求中断时发光二极管闪烁。 电路设计: 软件代码: /***************************************************************************** * 头文件
  • 一、外部中断介绍 ...INT1—外部中断1,由P33端口线引入,低电平或下降沿触发中断。 T0—定时器/计数器0中断,由T0计数器计满回零引起。 T1—定时器/计数器1中断,由T1计数器计满回零引起。 T2—...
  • Arduino 定时器中断 外部中断

    万次阅读 多人点赞 2019-04-09 17:29:31
    但如果此时发生了某一件事件B请求CPU迅速去处理(中断发生),CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务),待CPU将事件B处理完毕后,再回到原来被中断的地方继续执行程序(中断返回),这一过程成...
  • 中断优先级寄存器IPPS——串行口中断优先级控制位PT1——定时器/计数器1中断优先级控制位PX1——外部中断1中断优先级控制位PT0——定时器/计数器0中断优先级控制位PX0——外部中断0中断优先级控制
  • IP 中断优先级控制寄存器 这个我们一般不改,用缺省值, 外部中断0 > 计数/定时器中断0 > 外部中断1 > 计数/定时器中断1 > 串行通信中断 什么是这样的排序呢?因为在单片机的ROM他们的入口地址也是按照这个顺序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 236,311
精华内容 94,524
关键字:

外部中断1的中断号为

友情链接: NINTENDO-64-JOYSTICK.rar