精华内容
下载资源
问答
  • CPU在执行过程中,一般来说都是在执行主程序(main函数里面代码)。... MCS-51 单片机中,有两个外部中断(INT0与INT1),中断有两种方式低电平触发与负跳变(下降沿)触发。 下面通过讲IN...

    CPU在执行的过程中,一般来说都是在执行主程序(main函数里面的代码)。如果希望处理其他的功能,可以通过查询的方式进行,判断是否需要处理或者通过中断的方式,进入中断服务函数程序里面执行。

        前者是在主程序中判断条件是否成立,如果成立则执行其他功能,否则不执行;后者是CPU在执行过程中,判断是否有中断标志位,响应中断进入中断服务函数,执行相关功能。

        MCS-51 单片机中,有两个外部中断(INT0与INT1),中断有两种方式低电平触发与负跳变(下降沿)触发。

     

        下面通过讲INT0说明外部中断,INT1同理。

     

        原理图:

        P0连接8个LED,INT0引脚连接一个按钮连接到地。

           

          在中断系统中,INT0设计的寄存器中有IE、IP、TCON,在C51规定特殊寄存器的地址为8的倍数均可以位寻址。IE寄存器地址为:0xA8;IP寄存器地址为0xB8;TCON寄存器地址为0x88;因此它们可以被位寻址。

        以下是它们的位定义。

    /*  TCON  */
    sbit TF1   = TCON^7;
    sbit TR1   = TCON^6;
    sbit TF0   = TCON^5;
    sbit TR0   = TCON^4;
    sbit IE1   = TCON^3;
    sbit IT1   = TCON^2;
    sbit IE0   = TCON^1;
    sbit IT0   = TCON^0;
    ​
    /*  IE  */
    sbit EA    = IE^7;
    sbit ET2   = IE^5; //8052 only
    sbit ES    = IE^4;
    sbit ET1   = IE^3;
    sbit EX1   = IE^2;
    sbit ET0   = IE^1;
    sbit EX0   = IE^0;
    ​
    /*  IP  */
    sbit PT2   = IP^5;
    sbit PS    = IP^4;
    sbit PT1   = IP^3;
    sbit PX1   = IP^2;
    sbit PT0   = IP^1;
    sbit PX0   = IP^0;

     

            如果需要使用外部中断,需要满足以下条件

            1)中断中允许设置(置1)EA = 1;

            2)中断源允许设置(置1)Ex0 = 1;

            3)中断触发方式设置(置1或置0) IT0 =1 或者 IT0 = 0;

            4)  中断服务函数 

     

     

    代码实现

    #include "reg52.h"
    #include "stdio.h"
    ​
    void main(){
       IT0 = 1;
       EA = 1;
       EX0 = 1;
       while(1){};
    ​
    }
    ​
    void irq0(void) interrupt  0
    {
        P0=~P0;
    }

     

        注:由于IT0 =1;设置中断触发方式为负跳变(下降沿),CPU相应中断后清除中断标志位。而由于IT0 =0;设置中断触发方式为低电平触发,CPU相应中断后不会清除中断标志位。

         在上面的中断服务功能中表现,按一下LED灯亮,再按一次LED灯灭;

    如果将IT0设置为0,则按下时LED会闪烁。因为中断标志位没有清除,不断进入中断服务函数。

     

       如果需要设置外部中断1,负跳变触发。只需要改上面代码的三条语句即可。

     IT0 = 1; ---->  IT1 = 1;
     
      EX0 = 1;  ---->  EX1 = 1;
       
       
    void irq0(void) interrupt  0   -->  修改终端号,将0 修改为2;
    ​
    void irq0(void) interrupt  2    ---->函数名irq0,可根据需要修改或不改 

     

     

     

    ---------------------------------------------------------

    如果觉得文章还不错,那就扫码关注吧!

    展开全文
  • 中断系统

    2021-01-19 21:49:11
    (2)中断知识:对于51单片机来说,有5个中断源,分别是外部中断0、定时器/计数器中断0、外部中断1、定时器/计数器中断1、串行中断。中断优先级也是按照这个顺序来。 (3)中断原理:要实现触发一个中断,要满足...

    (1)中断概念:CPU正在执行一个事件,然后响应中断源的请求,进而去执行另外一件事,执行完毕后,返回继续原来的事件,这是一个完整的中断系统。
    (2)中断知识:对于51单片机来说,有5个中断源,分别是外部中断0、定时器/计数器中断0、外部中断1、定时器/计数器中断1、串行中断。中断优先级也是按照这个顺序来的。
    (3)中断原理:要实现触发一个中断,要满足条件。
    1、中断允许寄存器IE中的中断允许位要允许。
    EX0(IE.0),外部中断0允许位;
    ET0(IE.1),定时/计数器T0中断允许位;
    EX1(IE.2),外部中断0允许位;
    ET1(IE.3),定时/计数器T1中断允许位;
    ES(IE.4),串行口中断允许位;
    EA (IE.7), CPU中断允许(总允许)位。
    2、设置中断触发方式
    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溢出中断请求标志位。
    3、打开总中断开关
    4、中断号要对应
    在这里插入图片描述(4)源代码:K3按键控制8个LED灯的熄灭和点亮

    #include<reg51.h>
    #define LED P2
    sbit K3=P3^3;
    typedef unsigned char u8;
    typedef unsigned int u16;
    void delay(u16 i)//延时函数
    {
    	while(i--);
    }
    void Init0Init()//配置中断
    {		
    	EX0=1;//中断允许位
    	IT0=1;//下降沿触发
    	EA=1;
    }
    void main()
    {
    	Init0Init ();
    	while(1);
    }
    void Init0() interrupt 0//中断响应
    {
    	delay(1000);
    	if(K3==0)
    	{
    		LED=~LED;
    	}
    }
    
    展开全文
  • STC89C52的中断

    2021-01-31 16:40:57
    中断分为四个步骤:中断请求->中断响应->中断处理->中断返回 ...这两个外部中断源标识和它们触发方式控制位由特殊功能寄存器TCON低4位控制。 内部中断源(3个) T0-定时器/计数器0中断,

    中断分为四个步骤:中断请求->中断响应->中断处理->中断返回

    数据输入输出传送方式
    1.无条件传送 (led)
    2.查询传送方式(温度传感器,ADC采样转换)
    3.中断传送方式(IRQ)
    4.直接储存器存取方式(DMA)

    5个中断源
    外部中断源(2个)
    INT0-由P3.2端口引入,低电平或下降沿引起。
    INT1-由P3.3端口引入,低电平或下降沿引起。
    这两个外部中断源标识和它们的触发方式控制位由特殊功能寄存器TCON的低4位控制。
    内部中断源(3个)
    T0-定时器/计数器0中断,由T0回零溢出引起。
    T1-定时器/计数器0中断,由T1回零溢出引起。
    TI/RI-串口IO中断,串行端口完成一帧字符发送或接收后引起。
    这3个内部中断源的控制位分别锁存在特殊功能寄存器TCON和SCON中。
    在这里插入图片描述

    1.允许中断

    中断允许寄存器IE和XICON(特殊功能寄存器sfr)
    在这里插入图片描述
    EA可位寻址

    2.配置中断方式

    在这里插入图片描述

    3.编写中断处理函数

    中断优先级:外部中断0(入口号0)>T0溢出中断(入口号1)>外部中断1(入口号2)>T1溢出中断(入口号3)>串行口中断(入口号4)
    void int1() interrupt 2 关键字interrupt 和入口号
    {

    }

    #include <reg52.h>
    sbit key=P3^3;
    sbit led=P1^0;
    void main()
    {
       IT1=0;
       EX1=1;
       EA=1;
       while(1)
       {}
    }
    void int1() interrupt 2
    {
      led=~led;
    }
    

    定时器相关
    两个16位定时器/计数器:定时器0(T0为P3.4)和定时器1(T1为P3.5)
    这里说的16位是指定时/计数器内部分别有16位的计数寄存器。
    当工作在定时模式时,每经过一个机器周期内部的16位计数寄存器的值就会加1,当这个寄存器装满溢出时,我们可以计算出工作在定时模式时的最高单次定时时间为65535*1.085us=时间(单位us)
    当工作在计数器模式时,T0(P3.4引脚),T1(P3.5引脚)每来一个脉冲计数寄存器加1。

    使用步骤
    启动定时器/计数器(通过TCON控制器)
    设置定时器/计数器工作模式(通过TMOD控制器)
    查询定时器/计数器是否溢出(读TCON内TF位)
    TMOD 地址:89H 复位值:00H 不可位寻址
    在这里插入图片描述

    #include <reg52.h>
    sbit time0=P3^4;
    sbit led=P1^0;
    int i=0;
    void main()
    {
      EA=1;
      ET0=1;
      TR0=1;
      TMOD=0x01;
      TH0=(65535-46082)/256;
      TL0=(65535-46082)%256;
      while(1)
      {
    //    if(TF0==1)
    //	{
    //	    TF0=0;
    //		TH0=(65535-46082)/256;
    //	    TL0=(65535-46082)%256;
    //		i++;
    //	    if(i==20)
    //	      {
    //		    i=0;
    //	        led=~led;	
    //	      }
    //	}   
      }
    }
    void timer0() interrupt 1
    {
     TH0=0x4b;
     TL0=0xfd;
     i++;
     if(i==20)
       {
         i=0;
        led=~led;
       
       }
    }
    

    串口中断
    串行通信又可分为异步通信和同步通信
    异步通信指发送和接收设备使用各自的时钟 ,以字符(构成的帧)为单位进行传输的,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传输的,即字符之间不一定有位间隔的整数倍的关系,但同一字符内的各位之间的距离均为位间隔的整数倍
    起始位 +数据 +终止位
    同步时钟根据时钟发数据

    串行通信中常见的错误校验
    奇偶检验
    代码和校验
    循环冗余校验

    传输速率
    比特率是每秒传输二进制代码的位数,单位是位/秒(bps)
    如9600bps,每个字节8位( 不带起始位和终止位的),9600/8=1200个字节,波特率位9600时,每秒钟传输1200字节

    串行接口的结构
    在这里插入图片描述
    串行口工作之前需要对相关寄存器进行配置,设定其工作模式
    1.设置T1的工作方式(编程TMOD的寄存器);
    2.计算T1的初始值,装载TH1,TL1;
    3.启动T1(编程TCON中的TR1位);
    4.确定串行口控制(编程SCON寄存器);
    5.如需串行口在中断方式工作时,要进行中断设置编程IE寄存器。

    与串口通信相关的寄存器
    在这里插入图片描述
    (附图)
    IE寄存器:EA ES
    SCON寄存器:
    在这里插入图片描述在这里插入图片描述
    其中SM0和SM1决定了不同的工作方式。
    在这里插入图片描述
    波特率计算方式
    在这里插入图片描述

    #include <reg52.h>
    sbit led=P1^0;
    int num=0;
    void main()
    {
      EA=1;		   //串口初始化
      ES=1;
      SM0=0;SM1=1;  //串口工作方式1,8位uart波特率可变
      REN=1;     //串口允许接收
      //设置定时器产生的波特率
      TR1=1;
      TMOD=0x20; //
      TH1=0xfd;
      TL1=0xfd;
      while(1)
      {
      }
    }
    void uart() interrupt 4
    {
      if(RI)
      {
        num=SBUF;
    	SBUF=num;
        led=~led;
    	RI=0;
      }
    }
    
    展开全文
  • 外部中断0是所有中断里面优先级最高->INT0 单片机优先级 P3.2-P3.7都是和中断有关I/O口 INT0外部中断0>TO定时计数器0>INT1>T1 中断响应条件 1. 2. 3. 中断请求 中断使能->全局中断=0 外部中断=...

    理论基础

    EX0口导通为1 
    中断嵌套
    外部中断0是所有中断里面优先级最高的->INT0
    单片机优先级	P3.2-P3.7都是和中断有关的I/O口
    INT0外部中断0>TO定时计数器0>INT1>T1
    

    在这里插入图片描述

    中断涉及的几个环节

    ①中断源           (前面提到的甲方)
    ②中断申请       (甲方发出信号提出申请)
    ③开放中断       (乙方同意传送)
    ④保护现场       (安排好当前的工作)
    ⑤中断服务       (响应乙方的要求)
    ⑥恢复现场       (完事后,回去……)
    ⑦中断返回       (继续做打断前的工作)
    

    中断响应条件

    1.中断源有中断请求;
    2.此中断源的中断允许位为1;
    3.CPU开中断(即EA=1)。
    

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


    一次中断过程的完整步骤

    中断请求
    中断使能->全局中断=0   外部中断=0、
    中断响应
    中断处理
    中断返回
    

    中断优先级的三条原则:

    1.CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
    2.正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。
    3.正在进行的低优先级中断服务,能被高优先级中断请求所中断。
    

    EA :全局中断使能位(总允许位)。

    =0:全局中断禁止;
    =1:全局中断允许。
    

    中断函数的书写

    void functionName()interrupt n
    {
    	...
    }//interrupt表示成中断服务函数,n是中断号,中断号是编译器识别不同中断的唯一编号
    

    中断函数与普通函数的区别

    不需要声明
    不能传参、
    不能直接调用中断函数,它是由硬件触发的
    




    实践部分

    下降沿触发

    独立按键部分默认先输入0X0F就是高电平,那么按下他就会实现高电平到低电平的下降沿从而触发中断
    

    低电平触发

    当按下独立按键的时候电平高转低,不松手的时候一直处于低电平,那么中断函数内的P2就会一直翻转,
    而由于反转速度过快,人眼无法识别,所以呈现的是全亮状态。
    

    外部中断

    INT0
    INT1
    
    /*********************************************************************************
    *实验名   :外部中断实验(低电平触发)
    *实验效果	:按住学习板上第三排任意按键 LED灯8位全亮
                  松开按键后 随机上4个或下4个灯亮
    *
    *********************************************************************************/
    #include<reg52.h>
    //按下独立按键的时候电平高转低,不松手的时候一直处于低电平,那么中断函数内的P2就会一直翻转,
        而由于反转速度过快,人眼无法识别,所以呈现的是全亮状态。
    void main()
    {
        P1=0X0F;//0000 1111	 前四个灯灭 后四个灯亮
    	P3=0X0F;//独立按键部分默认先输入0X0F就是高电平,那么按下他就会实现高电平到低电平的下降沿从而触发中断
    	EA=1;//全局中断打开
    	EX0=1;//INT0中断开启
    	IT0=0;//低电平触发
    	while(1)
    	{
    	    ;
    	}
    }
    
    void ISR_KEY()interrupt 0	 //中断服务函数
    {
        P1=~P1;
    }
    
    /*********************************************************************************
    *实验名   :外部中断实验(下降沿触发)
    *实验效果	:按下学习板上第三排任意按键,LED灯前后四位状态调换
    *
    *********************************************************************************/
    #include<reg52.h>
    //按一次就跳变,也就是说开始前四个灯不亮后四个亮,按下之后就反过来
    void main()
    {
        P1=0X0F;//0000 1111	 前四个灯灭 后四个灯亮
    	P3=0X0F;
    	EA=1;//全局中断打开
    	EX0=1;//INT0中断允许
    	IT0=1;//触发方式为下降沿触发
    	while(1)
    	{
    	    ;
    	}
    }
    
    void ISR_KEY()interrupt 0
    {
        P1=~P1;
    }
    
    EX0(IE.0),外部中断0允许位;
    ET0(IE.1),定时/计数器T0中断允许位;
    EX1(IE.2),外部中断0允许位;
    ET1(IE.3),定时/计数器T1中断允许位;
    ES(IE.4),串行口中断允许位;
    EA (IE.7), CPU中断允许(总允许)位。
    
    展开全文
  • 单片机中断总结

    千次阅读 2016-06-26 11:09:12
    中断响应条件 1.中断源有中断请求(T0,T1) 2.T0,T1中断中断允许位为1 3.CPU开中断 (EA=1) 以上三个条件同时满足...EX0(IE.0),外部中断0允许位; ET0(IE.1),定时/计数器T0中断允许位;  EX1(IE.2),外部
  • 关于可屏蔽中断与不可屏蔽中断

    千次阅读 2014-05-07 19:10:38
    可屏蔽中断和不可屏蔽中断都属于外部中断,是由外部中断源引起;但它们也有区别:可屏蔽中断是通过CPUINTR引脚引入,当中断标志IF=1时允许中断,当IF=0时禁止中断,不可屏蔽中断是由NMI引脚引入,不受IF标志...
  • 第五章中断系统第六章定时器及应用一、判断下列说法正误,并说明原因:1、中断允许寄存器IE最高位(EA)为1是89C51系统响应中断重要条件。...√5、89C51单片机中,外部中断优先级比内部中断源...
  • 晶振两边的电容:晶振的标称值在测试时有一个“负载电容”的条件,在工 作时满足这个条件,振荡频率才与标称值一致。一般来讲,有低负载电容(串 联谐振晶体),高负载电容(并联谐振晶体)之分。在电路上的特征为:...
  • 9. 8086/8088在当前指令执行完且IF=1情况下可以响应一个外部INTR中断请求。( ) 10. 8086被复位后,寄存器Flag、IP、CS内容分别是0000 、0001 、FFFFH。 ( ) 四、汇编程序(共20分) 1. 试分析下面程序段完成...
  • 答:80386把中断分为外部中断和内部中断两大类,外部中断经NMI和INTR引线输入请求信号。内部中断也叫内部异常中断,分为陷阱中断、内部故障异常中断、异常终止中断。 32.80386在保护方式下中断描述符表与8086中断...
  • 5.19 如何访问位于机器地址0的中断向量?如果我将指针值设为0,编译器可能会自动将它转换为非零空指针内部表示。 5.20运行时“nullpointerassignment”错误是什么意思?应该怎样捕捉它? 第6章 数组和指针 ...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    3.18 需要根据条件把一个复杂表达式赋给两个变量中一个。可以用下面这样代码吗?((condition) ? a : b)= complicated_expression; 41  3.19 我有些代码包含这样表达式。a ? b=c : d 有些编译器可以接受...
  • 5.19 如何访问位于机器地址0的中断向量?如果我将指针值设为0,编译器可能会自动将它转换为非零空指针内部表示。 62  5.20 运行时“null pointer assignment”错误是什么意思?应该怎样捕捉它? 62 第6章...
  • 13、MCS-51的中断允许寄存器内容为8AH,CPU可以响应的中断请求是( )。 A、T1 B、T0,T1 C、T1,串行接口 D、T0 14、指令AJMP的跳转范围是( )。 A、64KB B、2KB C、256B D、128B 15、下列指令中正确的是( )...
  • 4.6 外部中断的响应时间 4.7 外部中断的触发方式选择 4.7.1 电平触发方式 4.7.2跳沿触发方式 4.8 中断·清求撤消 4.9 中断服务程序设计 4.10 多外部中断源系统设计 4.10.1 定时器/计数器作为外部中断使用...
  • 单片机期末考试题目及答案详解

    热门讨论 2009-06-23 10:30:30
    中断查询确认后,在下列各种单片机运行情况中,能立即进行响应的是 A.当前指令是ORL A,Rn指令 B.当前正在执行RETI指令 C.当前指令是MUL指令,且正处于取指令机器周期 D.当前正在进行1优先级中断处理 下列...
  • 8086/8088汇编语言程序设计教程

    热门讨论 2008-10-22 22:52:54
    5.3.4 外部中断 5.3.5 内部中断 5.3.6 中断优先级和中断嵌套 5.3.7 中断处理程序设计 5.4 基本输入输出系统BIOS 5.4.1 基本输入输出系统BIOS概述 5.4.2 键盘输入 5.4.3 显示输出 5.4.4 打印输出 5.5 软中断处理...
  • 10.外部设备提出中断请示的条件是 。 A.一个CPU周期结束 B. 外设工作完成和系统允许 C. CPU开放中断系统 D. 总线空闲 11.在3种集中式总线控制中,_______方式响应时间最快,_______方式对电路故障最敏感。 A.链式...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    STANDBY电流测试:测量IC处于HALT模式时即每一个接点(PAD)在1态0态或Z态保持不变时漏电流是否符合最低之规格。  耗电测试:整颗IC静态耗电与动态耗电。  输入电压测试:测量每个输入接脚...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    删除操作一旦执行,立即被监听器捕获到,进而在执行 删除操作前执行自定义函数体,即判断实体有无undeletable标签,有则中断删除操作,无则正常删除。 用例图 关系 关联关系 ;依赖关系 ;泛化关系;关系...
  • 三个基本状态是等待、执行和就绪,在一定的条件下,进程的状态将发生转换。 (2)进程调度算法 主要有先来先服务(FCFS)、时间片轮转法、多级反馈轮转法、优先数法。 (3)进程控制块(PCB)是进程...
  • 代码 #include //该头文档中有单片机内部资源符号化定义,其中包含 P2 和 P3 该头文档中有单片机内部资源符号化定义, 该头文档中有单片机内部资源符号化定义 void main( void ) { P3 = 0xff; While( 1 ) { /...
  • STM32F10xxx参考手册

    2012-10-17 11:38:40
    8.4.5 外部中断配置寄存器3(AFIO_EXTICR3) 127 8.4.6 外部中断配置寄存器4(AFIO_EXTICR4) 128 8.5 GPIO 和AFIO寄存器地址映象 129 9 中断和事件 130 9.1 嵌套向量中断控制器 130 9.1.1 系统嘀嗒(SysTick)校准值...
  • 《手把手教你学MCS51单片机》源码 配套书目录 第1章 实验设备及器材使用介绍 1.1 单片机发展史及特点1 1.2 单片机入门有效途径2 ...20.5.3 外部中断INT0291 20.5.4 定时器/计数器0292 附件
  • move 盘符路径要移动文件名 存放移动文件路径移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件提示就直接覆盖 fc one.txt two.txt > 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中...
  • 修改外部数据库在4.12版中导致不兼容问题,并增加了对MS SQL Server数据库中image和text字段类型说明。 7. 修改扩展界面支持库一,禁止透明标签在父窗口刷新时自动刷新,以解决其导致窗口刷新缓冲问题。 8....

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

外部中断0响应的条件