精华内容
下载资源
问答
  • C51单片机 外部中断

    2020-06-15 10:48:56
    51单片机中断系统 一、中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来...

    51单片机的中断系统

    一、中断的概念

    CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);
    CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);
    待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。

    如图
    在这里插入图片描述
    引起CPU中断的根源,称为中断源中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统

    如图
    在这里插入图片描述

    中断源

    在这里插入图片描述
    中断系统的优点:

    分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;

    实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;

    可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。

    二、51单片机的中断系统结构

    89C51/52的中断系统有5个中断源 ,2个优先级,可实现二级中断嵌套
    在这里插入图片描述
    1、(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。(外部中断0)

    2、(P3.3)可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。(外部中断1)

    3、TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。(定时器中断0)

    4、TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。(定时器中断1)

    5、RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。(串口中断)

    三、中断允许控制

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

    在这里插入图片描述
    每一位控制不同的而中断允许
    在这里插入图片描述
    (从左以此往右)

    EX0(IE.0),外部中断0允许位;  //1000 0001
    ET0(IE.1),定时/计数器T0中断允许位; //1000 0010
    EX1(IE.2),外部中断0允许位; //1000 0100
    ET1(IE.3),定时/计数器T1中断允许位; //1000 10000
    ESIE.4),串行口中断允许位; //1001 0000
    EA (IE.7)CPU中断允许(总允许)位。
    

    四、中断请求标志

    1、TCON的中断标志
    在这里插入图片描述
    在这里插入图片描述

    IT0TCON.0),外部中断0触发方式控制位。
            当IT0=0时,为电平触发方式。
            当IT0=1时,为边沿触发方式(下降沿有效)。
    IE0TCON.1),外部中断0中断请求标志位。
    IT1TCON.2),外部中断1触发方式控制位。
    IE1TCON.3),外部中断1中断请求标志位。
    TF0TCON.5),定时/计数器T0溢出中断请求标志位。
    TF1TCON.7),定时/计数器T1溢出中断请求标志位
    

    同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:
    在这里插入图片描述
    51单片机的中断优先级有三条原则:

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

    为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。

    五、51单片机中断处理过程

    中断响应条件

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

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

    以外部中断0为例:

    主程序中需要有以下代码:

    EA=1;//打开总中断开关
    EX0=1;//开外部中断0
    IT0=0/1;//设置外部中断的触发方式
    

    中断服务函数:

    void   int0   ()  interrupt   0    using  1
    {
    	do anything that you want
    }
    

    注意:
    interrupt 0, ==interrupt ==后必须为中断号,详见中断源。
    using 1可以省略。

    展开全文
  • 51单片机 外部中断

    2021-04-09 21:13:42
    为了降低CPU的占有率,同时实现单片机对复杂情景的处理,引入了中断。 CPU与外设并行工作,当外设数据准备好或者有某种突发事件发生时,向CPU提出请求,CPU暂停正在进行的工作,为该外设服务(或者处理紧急事件),...

    一、中断的概念:

    为了降低CPU的占有率,同时实现单片机对复杂情景的处理,引入了中断。

    CPU与外设并行工作,当外设数据准备好或者有某种突发事件发生时,向CPU提出请求,CPU暂停正在进行的工作,为该外设服务(或者处理紧急事件),处理完毕后回到原断点继续执行原程序。该过程叫做中断。

    二、什么是中断源

    引起中断的原因和发出中断请求的来源
    中断源可以是外设,紧急事件,定时器或者人为设置用于单步断点调试程序。

    1.中断系统要解决的问题:

    1.CPU在执行程序中,如何检测到随机发生的中断请求
    2.是否允许中断
    3.如何正确的进入中断
    4.怎么排列优先级
    5.中断完成后,怎么返回原断点处

    2. 51单片机的中断源:

    中断源 名称 引脚 入口地址
    INT0 外部中断0 P3.2 0003h
    INT1 外部中断1 P3.3 0013h
    T0 0号定时器中断 P3.4 000bh
    T1 1号定时器中断 P3.5 001bh
    TI/RI 串行口中断 P3.1 TXD 0023h

    基础型51单片机有5个中断源,增强型52系列增加了一个定时计数器2,共有6个中断源。

    在这里插入图片描述
    根据上图可知51单片机中断部分流程:
    1.检测对应中断源标志位
    2.检测对应中断开关是否打开
    3.检测总中断是否打开
    4.查询是否有优先级更高或同优先级中断正在执行
    5.有更高优先级或同级,等待执行完毕进行中断,无高优先级和同级,直接进行中断

    中断控制相关寄存器

    中断控制寄存器 IE—中断的允许和接收

    EA ET2 ES ET1 EX1 ET0 EX0
    中断控制位 T2 串行口 T1 INT1 T0 INT0

    中断控制主要由两方面:
    A: 是否允许中断
    B: 中断的优先级设置

    三、如何使用外部中断:

    1.开启总中断: EA
    2.开启外部中断: EX0/1
    3.设置中断触发方式: IT0/1(低电平或高电平触发)
    4.编写中断服务程序:
    void 函数名 (void) interrupt m using n

    {

    }

    m范围为0~4,分别代表5个中断源,外部中断INT0就是0,T0就是1,INT1就是2,T1就是3,串行中断就是4

    n的范围为0~3,分别表示4组工作寄存器,不写就用0. 不写也可以

    #include "reg52.h"
    #include <intrins.h>
    
    sbit LED = P1^0;
    
    void Delay500ms()		//@11.0592MHz
    {
    	unsigned char i, j, k;
    
    	_nop_();
    	_nop_();
    	i = 22;
    	j = 3;
    	k = 227;
    	do
    	{
    		do
    		{
    			while (--k);
    		} while (--j);
    	} while (--i);
    }
    
    
    void init()
    {
    	EA = 1;			// 开启总中断
    	EX0 = 1;		// 开启外部中断
    	IT0 = 1;		// 低电平触发
    }  
    
    void main()
    {
    	init();
    
    	while(1){
    
    		}
    
    }
    
    
    void INTERR(void) interrupt 0      // 外部中断服务函数
    {
    	 	LED = 0;
    		Delay500ms();
    		LED = 1;
    		Delay500ms();
    }			
    
    展开全文
  • 51单片机外部中断

    2021-01-16 19:27:24
    中断系统 中断请求 -> 中断响应 -> 中断处理 -> 中断返回 什么是中断系统 计算机执行某程序时,发生了紧急事件或有特殊请求,CPU暂停某程序的执行,转而去处理上述事件或请求,处理完毕后再重新执行某程序...

    中断系统

    中断请求 -> 中断响应 -> 中断处理 -> 中断返回

    什么是中断系统

    计算机执行某程序时,发生了紧急事件或有特殊请求,CPU暂停某程序的执行,转而去处理上述事件或请求,处理完毕后再重新执行某程序的过程叫做中断。

    数据的输入/输出传送方式

    1.无条件传送方式:

    一方对另一方来说总是准备好的

    2.查询传送方式(LOOK UP):

    传送前一方先查询另一方的状态,若已经准备好就传送,否则就继续查询/等待。

    3.中断传送方式(IRQ):

    一方通过申请中断的方式与另一方进行数据传送。

    4.直接存储器存储方式(DMA):

    双方直接通过总线传送数据,不经CPU中转。适用于数据量大高速通讯的设备,不占用CPU时间。

    51子系列允许5个中断源

    51单片机中断系统内部结构图

    外部中断源(2个):

    INT0 — 由P3.2端口线引入,低电平或下降沿引起
    INT1 — 由P3.3端口线引入,低电平或下降沿引起
    这两个外部中断源标志和他们的触发方式控制位由特殊功能寄存器TCON的低四位控制.

    内部中断源(3个):

    T0 — 定时器/计数器0中断,由T0回零溢出引起.
    T1 — 定时器/计数器1中断,由T1回零溢出引起.
    TI/RI —串行I/O中断,串行端口完成一帧字符发送/接收后引起
    这三个内部中断源的控制位分别锁存在特殊功能寄存器TCON和SCON中.

    如何去使用单片机中断系统

    1. 允许中断

    在这里插入图片描述

    2.配置中断方式

    在这里插入图片描述

    编写中断函数

    中断优先级处理原则

    对同时发生多个终端申请时:

    1. 不同优先级的中断同时申请(很难遇到)----先高后低

    2. 相同优先级的中断同时申请(很难遇到)----按序进行

    3. 正处理低优先级中断又接到高级别中断----高打断低

    4. 正处理高优先级中断又接到低级别中断----高不理低

    单片机同优先级中内部查询顺序

    内部查询顺序:在同时受到几个同一优先级的中断请求时,哪一个中断请求能优先得到响应,取决于内部的查询顺序.这相当于在同一优先级内,还同时存在另一辅助优先级结构,其查询顺序如下:
    在这里插入图片描述

    中断响应条件

    • 此中断源的中断允许位为1
    • 此中断CPU中断打开(EA=1)
    • 中断源有中断请求
    例 :外部中断1初始化
    • EA = 1;//开总中断
    • EX1 = 1;//开外部中断1
    • IT1 = 1;//跳变沿触发

    中断处理函数

    void int1() interrupt 2 //中断处理函数,加关键字interrupt和入口号
    {
    	中断处理语句
    }
    
    展开全文
  • 本文介绍了51单片机外部中断触发方式。
  • 51单片机外部中断例程 51单片机外部中断例程 51单片机外部中断例程 51单片机外部中断51单片机外部中断例程程
  • 本文主要讲了51单片机外部中断触发方式的经验总结,希望对你的学习有所帮助。
  • AT89C51单片机外部中断

    2020-11-27 22:12:30
    C51单片机外部中断调用P3_2 ,P3_3口。 中断方式有两种,分别为电平方式和脉冲方式。 中断请求有0和1。中断总允许为EA=1, IE0:外部中断请求0标志位; IT0:外部中断0触发方式设置位,IT0=1下降沿触发,IT0=0低电平...

    C51单片机外部中断调用P3_2 ,P3_3口。
    在这里插入图片描述
    中断方式有两种,分别为电平方式和脉冲方式。
    中断请求有0和1。中断总允许为EA=1,
    IE0:外部中断请求0标志位;
    IT0:外部中断0触发方式设置位,IT0=1下降沿触发,IT0=0低电平触发;
    IE1:外部中断请求1标志位;
    IT1:外部中断1触发方式设置位,IT1=1下降沿触发,IT1=0低电平触发;
    外部中断0中断服务程序的编写:

    void 函数名()interrupt 0
    {
    
    }
    

    外部中断1中断服务程序的编写:

    void 函数名()interrupt 2
    {
    
    }
    

    参考实验程序(主程序为P1口输出跑马灯程序),编写中断子程序使得发生外部中断0,且为低电平触发时,LED灯全亮。中断结束后LED继续接上次状态进行跑马灯闪烁。

    #include<reg51.h>
    #include<intrins.h>
    sbit P3_2=P3^2;
    void delay(unsigned char i);
    void main()
    {
    	unsigned char ii;
    	P1=0xFE;
    	P3_2=1;
    	EA=1;
    	EX0=1;
    	IT0=0;
    	while(1)
    	{
    		P1=0xFE;
    		for(ii=0;ii<8;ii++)
    		{
    			P1=_crol_(P1,1);
    			delay(200);
    		}
    	}
    }
    void  delay(unsigned char i)    //延时函数,无符号字符型变量i为形式参数
    {
    	unsigned char j,k;          //定义无符号字符型变量j和k
    	for(k=0;k<i;k++)            //双重for循环语句实现软件延
    	for(j=0;j<255;j++);
    }
    void int_0() interrupt 0
    {
    	P1=0x00;
    }
    
    

    参考实验程序(主程序为P1口输出跑马灯程序),发生外部中断1,且为低电平触发时,LED灯闪烁5次,中断结束后LED继续接上次状态进行跑马灯闪烁。

    #include<reg51.h>
    #include<intrins.h>
    sbit P3_3=P3^3;
    void delay(unsigned char i);
    void main()
    {
    	unsigned char ii;
    	P1=0xFE;
    	P3_2=1;
    	EA=1;
    	EX1=1;
    	IT1=0;
    	while(1)
    	{
    		P1=0xFE;
    		for(ii=0;ii<8;ii++)
    		{
    			P1=_crol_(P1,1);
    			delay(200);
    		}
    	}
    }
    void  delay(unsigned char i)    //延时函数,无符号字符型变量i为形式参数
    {
    	unsigned char j,k;          //定义无符号字符型变量j和k
    	for(k=0;k<i;k++)            //双重for循环语句实现软件延
    	for(j=0;j<255;j++);
    }
    void int_1() interrupt 2
    {
    	unsigned char a;
    	for(a=0;a<5;a++)
    	{
    	 	P1=0x00;
    		delay(200);
    		P1=0xff;
    		delay(200);
    	}
    }
    
    

    参考实验程序(主程序为P1口输出跑马灯程序),编写中断子程序使得发生外部中断0,且为低电平触发时,LED灯全亮,中断结束后LED继续接上次状态进行跑马灯闪烁;发生外部中断1,且为低电平触发时,LED灯闪烁5次,中断结束后LED继续接上次状态进行跑马灯闪烁。

    #include<reg51.h>
    #include<intrins.h>
    sbit P3_2=P3^2;
    sbit P3_3=P3^3;
    void delay(unsigned char i);
    void main()
    {
    	unsigned char ii;
    	P1=0xFE;
    	P3_2=1;
    	EA=1;
    	EX0=1;
    	IT0=0;
    	EX1=1;
    	IT1=0;
    	while(1)
    	{
    		P1=0xFE;
    		for(ii=0;ii<8;ii++)
    		{
    			P1=_crol_(P1,1);
    			delay(200);
    		}
    	}
    }
    void  delay(unsigned char i)    //延时函数,无符号字符型变量i为形式参数
    {
    	unsigned char j,k;          //定义无符号字符型变量j和k
    	for(k=0;k<i;k++)            //双重for循环语句实现软件延
    	for(j=0;j<255;j++);
    }
    void int_0() interrupt 0  //0触发
    {
    	P1=0x00;
    }
    void int_1() interrupt 2		//1触发
    {
    	unsigned char a;
    	for(a=0;a<5;a++)
    	{
    	 	P1=0x00;
    		delay(200);
    		P1=0xff;
    		delay(200);
    	}
    }
    

    在这里插入图片描述

    展开全文
  • 51单片机的5大中断源:串行口中断、定时中断1、外部中断1、定时中断0、外部中断0;下面一起来学习一下
  • 51单片机外部中断0实例详解

    千次阅读 2020-02-14 11:47:49
    今天就以51单片机外部中断0为例,来简单讲解一下单片机中断的用法。 1 51单片机的中断源 51单片机共有5个中断源,分别为: 外部中断0 定时器0中断 外部中断1 定时器1中断 串口中断 每一个中断都对应一个中断向量,...
  • 51单片机外部中断的C51编程

    万次阅读 2011-04-17 11:08:00
    51单片机外部中断的C51编程 相关知识: 1、51单片机的5大中断源:串行口中断、定时中断1、外部中断1、定时中断0、外部中断0; 2、中断源的编号: 串行口中断为4、定时中断1为3、外部中断1为2、定时中断...
  • 已知单片机的 P0 口接了一位七段数码管,当无外部中断外部中断 0)时,数码 管按 a~g 段依次点亮,不断循环显示;当有外部中断(按钮被按下,P3.2 有下降沿电 压)时,数码管显示状态改为“8”亮灭闪烁显示,亮灭...
  • 51单片机外部中断自动重复了一次 ``` #include #include #define uchar unsigned char #define uint unsigned int void delay(uint); void breath(); uchar tr_1; void main() { EX0=1; IT0...
  • 夜猫子:51单片机中断基本概念​zhuanlan.zhihu.com外部中断软件设计原理中断发生的三个条件①中断源有中断请求;②此中断源的中断允许位为 1;③CPU 开中断(即 EA=1)。比如我们配置外部中断 0,对应的配置程序...
  • 51单片机外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器...
  • 51单片机外部中断实现LED灯的亮灭

    万次阅读 2020-08-06 15:59:57
    #include"reg52.h"typedef unsigned char u8;typedef unsigned int u16;sbit led=P2^0;sbit k4=P3^3;//外部中断1void delay(u16 i){ while(i--);}void zhongduan(){ EA=1;...//外部中断1...
  • 前面为大家介绍的点亮LED灯、数码管、按键只用到了51单片机的IO资源,我们要是仅仅用单片机点灯、操作数码管,那可真是大才小用了。这些都只是51单片机资源的冰山一角,51单片机还有好多的功能,我后面将为大家一一...
  • 51单片机外部中断例子程序

    热门讨论 2009-02-16 18:10:27
    很好的单片机外部中断例程,看了就知道了,中断里计数,并显示到数码管上
  • 外部中断软件设计原理 中断发生的三个条件 ①中断源有中断请求; ②此中断源的中断允许位为 1; ③CPU 开中断(即 EA=1)。 比如我们配置外部中断 0,对应的配置程序如下: EA=1;//打开总中断开关 EX0=1;//开外部...
  • 设计一个外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即从P2口的LED循环点亮。可以从protues中看到结果
  • 外部中断引脚的低电平要一直保持,直到CPU响应外部中断 ○ CPU响应中断后,会硬件将IE清0(IE=0),但是不会取消掉外部中断引脚的低电平,因此需要硬件加软件清除低电平(p133) 2. 下降沿触发方式 ○ CPU...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 917
精华内容 366
关键字:

51单片机外部中断