51单片机之——外部中断0(INT0)

2018-07-12 21:44:12编辑:什么鱼 关键字:51单片机  外部中断0  INT0

寄存器是干什么的?怎么配置它?配置完寄存器后,有什么作用呢? 

寄存器是中央处理器内的组成部分。它是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。寄存器可以用来暂存指令、暂存数据、暂存地址。换而言之,我们配置寄存器,便是给寄存器中赋予一定的值,而这些值又要与我们的目的想对应,这样它便会有相应的作用。 

例如,芯片的资料规定,当给芯片的 A 寄存器赋“0x11”时,它会出现 B 现象;赋“0x77”时,它会出现 C 现象。那么当我们目的是完成 B 现象时,我们就只需要配置 A 寄存器为“0x11”即可。 

虽说看起来很简单,并且去完成目的时的流程并非这么容易。但是,实实在在而言,这些就是控制寄存器的根本! 

这里以外部中断0INT0)为例,使得外部中断0每发生一次,最后一位数码管的数值加1。 

前一篇博文已经提到,要实现外部中断0,就必须要配置好两个寄存器IP、IE。而对于中断优先级寄存器IP,当我们使用默认优先级时(上篇博文的优先级表格所述),就不必要去配置IP。 

接下来附上IE寄存器的每一位的作用: 

这里写图片描述 

首先,中断允许位寄存器 IE 是可位寻址的,意思是说,我们可以单独的对D0~D7每一位进行操作,而不需要对 IE 整个赋值(为什么可以这样,因为keil的头文件“reg52.h”已经对 IE 的地址进行了定义)。 

在这里说明一点,对于51单片机的 I/O 口而言,上电时,默认输出为高电平。对于其寄存器而言,上电是,默认为0。可见,当要完成外部中断0的配置时,我们只需要配置中的EX0、EA,当然还有外部中断0的触发方式(产生方式),这里就要看到中断及控制寄存器TCON,其成员及意义如下: 

这里写图片描述

这里写图片描述

可见外部中断0和外部中断1的设置方式雷同,跟据上表所述,我们通过设置IT0来设置外部中断0的触发方式(分别为:低电平触发、下降沿触发),其中 IE 位由硬件自身控制,不需要软件操作。


实例的核心代码如下:


/*数码管配置完成*/

void main()

{

    IT0 = 1;                           //设置为下降沿触发

    EX0 = 1;                           //外部中断0中断允许位                    

    EA = 1;

    while(1);                           //等待外部中断0发生 

    {

        display();

    }                           

}


void INT0() interrupt 0                //中断服务函数的书写格式

{

    if( IE == 1)                       //产生了外部中断,IE 自动置为1

    {

        dspbuf[0]++;    

    }

}


在上面可以看到配置外部中断0相关的寄存器时,我们先打开EX0=1,允许外部中断产生,再EA = 1,打开总中断,这样就配置好了能产生外部中断0的先决条件,通过IT0 来配置中断的触发方式。在中断服务函数中,函数名“INT0”可自由编写,并且中单服务函数不需要声明,后面所加的“interrupt X”X为该中断对应的C语言序号。 

值得注意的是,对于51单片机而言,上电之后,所有寄存器的值默认为“0”,所有 I/O 口的值默认为“1”。 

通过外部中断的理解,很方便的能引出下一节的定时器/计数器中断。


关键字:51单片机  外部中断0  INT0

来源: eefocus 引用地址:http://www.eeworld.com.cn/mcu/2018/ic-news071240267.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:51单片机内部资源
下一篇:51单片机最小系统的制作和程序烧录

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

51单片机实现LED流水灯(数组方式和位运算方式)

/* 名称:51单片机实现LED流水灯(数组方式和位运算方式)说明:今天又重新开始系统的学习51了,LED就算个开端吧。 要注意两点: 1、sfr和sbit是C语言扩展出来的关键字。其中sfr用于对特殊功能寄存器进行声明,sbit用于对某些特殊功能寄存器的某位进行声明。这里和宏定义很相似,但是不能用宏定义进行替换,对于前者是因为51单片机的寄存器存在于内部空间0x80-0xFF,这空间属于直接寻址,51特殊功能寄存只能直接寻址,不能间接寻址。如果用宏定义的话,在翻译成汇编时就会认为是通过总线访问对应的外部地址了。对于后者,sbit是定义一个标志位,也叫位变量。而类似于#define key1 P3
发表于 2018-07-21 13:08:22

51单片机之按键实验

/* 名称:51单片机之按键实验 说明:键盘是计算机最基础、最重要的输入设备之一。对于键盘来说,其工作任务大体可以分为以下三项: (1)、按键识别。即判断有无按键按下。 (2)、求键值。判断哪个键被按下。 (3)、执行相应的操作。 在这里,实验所用到的键盘为独立键盘和矩阵键盘。对于独立键盘,它的每个按键需要占用一个IO口。一般来说,按键一端接地,另一端接IO口。当按键按下时,线路被导通,IO口被拉低,即状态为‘0’。所以在使用是我们一般把对应IO口置成高电平,然后不断检测此IO口是否被拉低,从而判断按键是否按下。 对于矩阵键盘来说,它用较少的IO口完成较多个按键
发表于 2018-07-21 13:07:26

51单片机之数码管显示实验

/* 名称:51单片机之数码管显示实验 说明:对于数码管来说,其本质上可以理解为按照一定规则组合的多个二极管。其使用只需按照特定规则显示对应的二极管即可。要稍微注意一点的就是多个数码管的显示分为静态显示和动态显示。静态显示就是每个二极管显示的内容是一样的,通过片选信号来决定是哪个二极管该显示。动态数码管,即利用人眼的视觉停留效果,快速扫描,快速显示每个数码管的内容,使得每个数码管看起来好像是一起显示的一样。 本实验编写了几个数码管显示的简单程序。在此不做赘述了。*/#include <reg52.h>#define uchar unsigned char//共阳极段码(a在高位,dp在低位
发表于 2018-07-21 13:06:23

关于单片机死机的一些问题

最近的一个项目中测试系统的高低温实验,结果意外的发现经过高低温实验后(80℃到-20摄氏度)单片机有些已经死机了,所以不得不着手研究一下这个问题,在网上查阅资料后,基本上可以归结于以下几个问题:1. 意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象 2. 中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。  3. 地址溢出,常见错误为指针操作
发表于 2018-07-16 20:31:16

单片机外部中断的两种模式

51单片机的外部中断有两种模式:电平触发模式和跳变沿触发模式第一,选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。第二,选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。 区别:电平触发模式时,中断标志寄存器不锁存电平中断请求信号。单片机把每个周期的S5P2采样外部中断口的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换言之,就是要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行
发表于 2018-07-16 20:29:36

基于80C51单片机——中断小结

最近看了一下80C51单片机的中断部分的实验,做一些笔记,方便以后学习查找。 首先说一下什么是中断吧,中断是指CPU在执行当前程序的过程中,由于某种随机出现的外设(外部设备)请求或CPU内部的异常事件,使CPU暂停正在执行的程序而转去执行相应的服务处理程序;当服务处理程序运行完毕之后,CPU再返回到暂停处继续执行原来的程序。那什么是中断嵌套呢?简单点说就是低优先级的中断可以被高优先级的中断源所中断,等高优先级中断服务程序结束后,再返回去执行被中断的的低优先级的中断服务程序。举个简单的栗子吧(之前写过但不知道怎么删了,,又让我重新编辑):比如我们就是一个CPU,我们当前在洗衣服(当前程序),突然电话铃声响了(中断来了
发表于 2018-07-16 20:26:35

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved