精华内容
下载资源
问答
  • 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;
    	  }
    }

     

    展开全文
  • 外部中断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;
    
    }
    展开全文
  • 外部中断

    2020-03-01 17:28:35
    文章目录一.外部中断输入引脚二....外部中断1(INT1):P3.3口的附加功能 当引脚上出现有效的中断信号时,就有中断标志置1,向CPU申请中断。 二.外部中断相关寄存器 1.中断允许寄存器(IE) EA:CPU开启中断...

    一.外部中断输入引脚

    在这里插入图片描述
    外部中断0(INT0):P3.2口的附加功能
    外部中断1(INT1):P3.3口的附加功能

    当引脚上出现有效的中断信号时,就有中断标志置1,向CPU申请中断。

    二.外部中断相关寄存器

    1.中断允许寄存器(IE)

    在这里插入图片描述
    EA:CPU开启中断总允许位。EA=1时,才能启动中断功能。
    EX0:外部中断0允许位。EX0=1时,外部中断1才能启动。下同。
    EX1:外部中断1允许位。

    2.中断标志寄存器(TCON)

    在这里插入图片描述
    IT0/IT1:控制外部中断的触发条件。0:低电平有效 1:下降沿有效
    一般来说,设置成下降沿有效(1)会比较多。

    IE0/IE1:外部中断标志位。当外部中断触发时,标志位变成1,向CPU申请中断。申请中断完成后,标志位重新置0.

    三.外部中断配置与程序举例

    依前,还是要设置基本的三个函数

    中断配置函数:以使用外部中断0为例
    void Int0Init0(){
    EA=1;
    EX0=1;
    IT0=1;
    }

    主函数:

    void main{
    IntInit0();
    While(1);
    }

    中断服务函数
    Void Int0() interrupt 0 //中断号为0
    {
    所要执行的程序动作
    }

    举例:使用外部中断,利用独立按键控制LED灯的亮灭(按一下会开,再按就关)

    分析:涉及的外部资源有独立按键和LED灯。其中,独立按键K3与P3.2口相连,故可以用K3作为外部中断输入。当按下按键后,led1(P2^1)就会取反,从而有亮-灭-亮的效果。

    #include "reg52.h"
    #include <stdio.h>
    
    #define u16 unsigned int
    
     sbit k3 = P3^2;   //独立按键K3与外部中断引脚P3.2相连
     sbit led = P2^1;  //定义LED模块的1号灯为led
    
     void dalay()
     {
     	u16 i;
    	for(i=0;i==1000;i++);  //延时函数,用于独立按键消抖
     }
     
     void Init_INT0()
     {
     	EA=1;
    	EX0=1;
    	IT0=1;  //设置外部中断为下降沿有效
    
     }
    
     void main()
     {
     	Init_INT0();   //主程序中需要有中断配置
    	while(1);     //程序在此处停止,等待中断发生
     }
    
     void INIT0() interrupt 0
     {
       void delay();
       if(k3==0)
          	led=~led;  //按下按键时,led1取反
       
     }
    
    展开全文
  • #include<reg52.h> typedef unsigned int u16;...//外部中断0 的触发方式控制位 1表示为下降沿触发 EX0=1;//打开ITO的中断允许 ET0=1;//打开定时器0中断允许 EA=1;//打开中断总开关 } void delay(int ...
    #include<reg52.h>
    typedef unsigned int u16;
    sbit k1=P3^2;
    sbit led1=P2^0;
    void init(){
    	IT0=1;//外部中断0 的触发方式控制位 1表示为下降沿触发
    	EX0=1;//打开ITO的中断允许
    	ET0=1;//打开定时器0中断允许
    	EA=1;//打开中断总开关
    }
    void delay(int i){
    	while(i--);
    }
    void Int0() interrupt 0{//处理外部中断0
    	delay(1000);
    	if(k1==0){//检测按键
    		TH0=0xfc;
    		TL0=0x18;
    		TR0=1;
    	}
    	else{
    		TR0=0;
    		led1=1;
    	}
    	
    }
    void ETO() interrupt 1{//处理定时器0中断
    	static u16 i;
    	TH0=0XFC;	//给定时器赋初值,定时1ms
    	TL0=0X18;
    	i++;
    	if(i==1000){
    		i=0;
    		led1=~led1;
    	}
    }
    	
    void main(){
    	init();
    	while(1);
    }
    
    展开全文
  • 51单片机各个引脚功能 IO口引脚: 中断系统的主要功能:处理随机突发事件 中断系统结构: ...代码实现由外部中断控制P1口的电平高低: #include<reg52.h> #include<intrins.h> #define uint
  • 外部中断1:(P3.3)可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。 编程原理(外部中断0) 首先我们对中断允许控制寄存器...
  • 夜猫子:51单片机中断基本概念​zhuanlan.zhihu.com外部中断软件设计原理中断发生的三个条件①中断源有中断请求;...//设置外部中断的触发方式(下降沿触发)如果要配置的是外部中断 1,只需将 EX0 改为 ...
  • 外部中断部分

    2019-07-02 12:31:00
    外部中断多达16位,P1和P2口的引脚全部可以用来做外部中断使用。只能响应边沿事件,不能产生电平中断,当然本来电平中断就很鸡肋,一般用不上,边沿中断也足够灵活以应对不同应用场景。需要留意的寄存器也不多,跟51...
  • 来源《霖锋带你征服嵌入式》 0、89C51中断系统分类: ...外部中断1: 低电平触发:P3.2是0 下降沿触发:p3.2电平:1变为0则触发。 外部中断2同1。 2、中断允许控制 EA是总开关;EX0、ET...
  • 单片机-外部中断

    2017-11-26 12:45:49
    #include<reg52.h>#define uchar unsigned char void main() { SP = 0x50; // 将堆栈指针指向0x50单元 ... // 打开外部中断1中断允许位 EA = 1; // 打开总中断允许控制位 while(1){} // 踏步等待
  • 51中断系统 一.中断 1.中断允许控制寄存器IE 2.TCON的中断标志 ...1.外部中断请求 见中断源,即P3.2或P3.3引脚低电平或下降沿型号可以触发中断。一般使用下降沿信号触发中断,也就是在按下独立按键...
  • 外部中断0

    2017-05-21 20:05:00
    外部中断0中断,效果是低四位点亮,当中断发生时高四位点亮, 中断结束后程序回到主程序中继续点亮低四位点亮 */ #include <reg51.h> #include <stdio.h> //要中断就要设置一些参数 void ...
  • AT89C51单片机外部中断

    2020-11-27 22:12:30
    C51单片机外部中断调用P3_2 ,P3_3口。 中断方式有两种,分别为电平方式和脉冲方式。 中断请求有0和1。中断总允许为EA=1, IE0:外部中断请求0标志位;...外部中断1中断服务程序的编写: void 函数名()inte
  • 13.外部中断

    2020-06-18 11:07:57
    外部中断0: 通过按键K3实现LED灯状态反转: #include<reg51.h> typedef unsigned char u8; typedef unsigned int u16; sbit led=P2^0;//D1 sbit k3=P3^2;//K3 void delay(u16 i) { while(i--); } void Int...
  • 2)中断允许打开 ET0= 1或者 ET1= 1;3)设置定时器计/计数器的工作方式(设置TMOD) 4)装载定时器,设置计数器的初始计算值。 5)开启定时器(TCON中的TR0 = 1或者TR1 = 1) 6)中断服务函数通过前面一些中断文章的...
  • 单片机控制外部中断输入

    千次阅读 2015-12-14 11:45:50
    1、什么是外部中断 外部中断即通过外部电平或上...EX为外部中断允许寄存器,1允许,0为关闭; IT为外部中断触发方式选择寄存器,1为边沿触发,0为电平触发; 3、程序设计 使用外部中断零设计电路,使单片机
  • 3.EX0/EX1:外部中断0和外部中断1中断允许位。EX0/ET1=1;允许中断。[ ] 定时器/计数器控制寄存器TCON 与外部有关的仅仅是后四位,前四位与定时器有关,在这不做描述。IE0:外部中断0请求标志,IE...
  • 在51单片机中,有2路外部中断输入INT0(P3.2)和INT1(P3.3);2路中断触发信号:低电平触发和下降沿触发。 中断允许寄存器IE(0:禁止中断;1:使能中断) 定时/计数器中断控制寄存器TCON...IT1:外部中断1触发方式控
  • 中断基本概念 外部中断软件设计原理 ...如果要配置的是外部中断 1,只需将 EX0 改为 EX1,IT0 改为 IT1 在编写程序时通常我们会将外部中断的配置放到一个自定义函数内便于管 理维护。如下伪代码所示: void Int0In
  • 中断系统(2)–外部中断示例 1.想实现的目标 2.分析 3.代码 #include<reg52.h> #include<intrins.h> sbit LED1=P1^0; sbit LED2=P1^1; //对两个led灯进行位定义... //中断允许位置1 ...//外部中断1中断服务程
  • 51单片机的外部中断

    千次阅读 2010-07-13 19:30:00
    51单片机外部中断只需设置两个寄存:... 外部中断有两个:外部中断0、外部中断1。外部中断0是管脚P3.2,外部中断1是管脚P3.3。 #include void delay(){ int x,y; for(x=0;x for(y=0;y}void main(){ EA=1; //IE
  • 中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断...中断允许控制 CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允...
  • 现在许多MCU都内嵌有中断,C51中有5个中断源,今天我们就来做一下外部中断的实验,使用的是外部中断0(INT0)。 文章目录前言中断系统1、中断系统的内部结构2、C51中断源3、中断有关寄存器(1)、中断请求寄存器...
  • 单一外部中断的应用

    2020-12-20 17:12:22
    80C51中断系统的组成 TCON寄存器(Timer/Counter Control ...IE为中断允许寄存器 IP寄存器(Interrupt Priority Registers) IP为中断优先级寄存器 电路图 要求 无任何操作时D0 ~ D7全亮 按下k1后松开时,
  • 蓝桥杯中断程序设计 一、寄存器介绍 1.中断允许寄存器IE(可位寻址) 名称 地址 B7 ...EA:CPU的总中断允许位 ...ES:串行口1中断允许位,ES=1,允许串行口中断 ET1:定时/计数器 T1 的溢出中断允许位,ET1=1 允许T1中断
  • 一、STM32F103知识总结-外部中断1.中断的相关概念2.NVIC嵌套向量中断器4.外部中断、事件控制器(EXTI): 1.中断的相关概念 (1).定义: 专业说法:中断指的是计算机运行中,正在运行事情被打断,需要紧急处理 ​ 中断...
  • 单片机实验:外部中断按键

    千次阅读 2019-07-14 17:00:33
    这是之前写的,一直没发。 实验内容: 实验大致上就是说:按键不按的时候,灯一直亮,按键按下的时候,灯不...1.总中断允许开关EA=1。 2.中断源的中断允许位为1。 3.中断源发出中断请求。 4.无同级或更高级中断正在...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 284
精华内容 113
关键字:

允许外部中断1中断