精华内容
下载资源
问答
  • 51单片机外部中断实例
    2022-04-07 17:21:52

    题目:

         采用外部中断0(INT0),优先级为高。在没有外部中断时使发光二极管正反循环流水点。在中断服务程序中使发光二极管交替循环点亮10次

    使用keli编程、使用proteus仿真

     代码如下:

    #include<reg51.h>
    #include<stdio.h>
    #define uchar unsigned char
    #define uint unsigned int
    uchar light[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xf0,0x0f};//灯亮的数组
    sbit key=P3^2;
    void delay(uint num)//定义延时函数
    {
    	uint a;
    	for(a=1;a<num;a++);
    }
    void main()
    {
    	uint i;
    	uint q=0;//正负循环标志
    	EA=1;//允许中断
    	IT0=1;//边沿触发
    	EX0=1;//打开int0中断
        P1=0x00;//给P1口赋初值
    	while(1)
    	{
    		delay(10000);
    		if(q==0)//正循环点亮
    		{	if(i<7)
    				i=i+1;
    			else
    			{
    				i=6;q=1; //正负循环转换
    			}
    		}
    		else//负循环点亮
    		{	if(i>0)
    				i=i-1;
    			else
    			{
    				i=1;q=0;  //正负循环转换
    			}
    		}
    		P1=light[i];
    	}
    }
    void int0() interrupt 0//中断函数
    {
    	uint b;
    	if(key==0)//  防误触
    		delay(1000);
    		if(key==0)
    			for(b=0;b<10;b++)//交替循环点亮十次
    			{
    				P1=light[8];//后四个灯亮
    				delay(10000);
    				P1=light[9]; //前四个灯亮
    				delay(10000);
    			} 
    }
    

    有任何问题可以在评论区提问

    更多相关内容
  • 51单片机外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器...
  • 51单片机的5大中断源:串行口中断、定时中断1、外部中断1、定时中断0、外部中断0;下面一起来学习一下
  • 51单片机外部中断实验程序的设计与分析.pdf
  • 已知单片机的 P0 口接了一位七段数码管,当无外部中断外部中断 0)时,数码 管按 a~g 段依次点亮,不断循环显示;当有外部中断(按钮被按下,P3.2 有下降沿电 压)时,数码管显示状态改为“8”亮灭闪烁显示,亮灭...
  • 本文首先介绍了中断技术的概念,接着论述了MCS-51中断系统结构、相关寄存器及中断处理过程,依据MCS-51中断功能要求编制了Proteus仿真电路并设计了驱动程序,最后对本文的实验仿真效果进行了总结。
  • 本文主要讲了51单片机外部中断触发方式的经验总结,希望对你的学习有所帮助。
  • 设计一个外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即从P2口的LED循环点亮。可以从protues中看到结果
  • 51单片机外部中断

    2017-11-10 12:33:41
    51单片机中断实验,HL-1学习板专用。删除按键部分所有单片机通用。
  • 单片机主程序控制P0口数码管循环显示0~LENGTH-1 外中断0、外中断1发生时分别在P2口、P1口依次显示0~LENGTH-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外部中断0P3.20003h
    INT1外部中断1P3.30013h
    T00号定时器中断P3.4000bh
    T11号定时器中断P3.5001bh
    TI/RI串行口中断P3.1 TXD0023h

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

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

    中断控制相关寄存器

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

    EAET2ESET1EX1ET0EX0
    中断控制位T2串行口T1INT1T0INT0

    中断控制主要由两方面:
    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();
    }			
    
    展开全文
  • 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单片机外部中断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

    展开全文
  • 单片机在自主运行的时候一般是在执行一个死循环程序,在没有外界干扰(输入信号)的时候它基本处于一个封闭状态。比如一个电子时钟,它会按时、分、秒的规律来自主运行并通过输出设备(如液晶显示屏)把时间显示出来...
  • 本文仅围绕51单片机中断的使用进行说明,并不详细说明中断的具体概念。 外部中断的使用 外部中断的使用非常简单,只要知道某个引脚被设置了某个状态就会触发某个函数。 网上看的话会出现很多晦涩的名词,但是流程...
  • 51单片机外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器...
  • 51单片机外部中断使用示例程序
  • 关于51单片机外部中断触发方式”的经验总结。
  • 51单片机外部中断拓展(两个以上的外部中断)

    千次阅读 多人点赞 2021-05-14 14:17:03
    而很多现实场景需要有多个外部中断同时进行,这时候单片机自带的外部中断端口可能就不够用了,那么,怎么解决这个问题呢,本文将会用最典型的51单片机为例,介绍两种较简单的拓展外部中断的方法。
  • 内含51单片机中断使用方法和优先级设置方法的测试仿真以及程序,适合初学protues,单片机,嵌入式的人。
  • 51单片机外部中断实验;
  • 51单片机外部中断例子程序

    热门讨论 2009-02-16 18:10:27
    很好的单片机外部中断例程,看了就知道了,中断里计数,并显示到数码管上
  • 分析了80C51单片机的2个对外中断入口INT0和INT1的结构、功能,讨论了通过控制机构的合理设置、编程,实现单片机对外中断功能的控制问题。
  • //流水数码,当外部中断产生,流水数码闪烁
  • 单片机的按键编程中,有时会遇到一个问题,用多个按键来控制多个死循环,而程序一旦进入循环就跳不出来,此时会想到用中断,而普通单片机一般只有2个外部中断,stc系列的查了一下最多也只有5个外部中断,那要是...
  • 使用51单片机外部中断0控制LED亮灭 #include <reg52.h.> typedef unsigned char u8; typedef unsigned int u16; sbit key1=P3^2; sbit LED=P2^0; void delay(u16 i) { while(i--); } void int0init() { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,101
精华内容 4,440
关键字:

51单片机外部中断