0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MCS-51单片机外部中断详解

CHANBAEK 来源:透析之眼 作者:AdamChen 2023-11-01 17:48 次阅读

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 修改为2void irq0(void) interrupt  2    ---- >函数名irq0,可根据需要修改或不改
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6002

    文章

    43981

    浏览量

    620891
  • 寄存器
    +关注

    关注

    30

    文章

    5036

    浏览量

    117763
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10450

    浏览量

    206579
  • 51单片机
    +关注

    关注

    269

    文章

    5649

    浏览量

    120719
  • 外部中断
    +关注

    关注

    1

    文章

    131

    浏览量

    15600
收藏 人收藏

    评论

    相关推荐

    MCS-51单片机终端及外中断软件编程

    MCS-51单片机有多个中断源,以8051为例,有5个中断源,两个外中断、两个定时中断和一个串行
    发表于 12-12 10:28 1948次阅读
    <b class='flag-5'>MCS-51</b><b class='flag-5'>单片机</b>终端及外<b class='flag-5'>中断</b>软件编程

    MCS-51系列单片机指令表详解

    MCS-51系列单片机指令表详解
    发表于 03-18 22:29

    MCS-51单片机基本原理

    MCS-51单片机基本原理[学习要求] 掌握MCS-51单片机的基本概念和基本原理。[重点与难点]重点:单片机的基本原理与内部结构。难点:
    发表于 03-19 16:39

    MCS-51单片机包括哪些

    MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一
    发表于 07-21 09:29

    MCS-51单片机的相关资料推荐

    第二章 MCS-51单片机硬件结构与工作原理2.1 MCS-51单片机的硬件结构2.2 引脚介绍2.3 复位电路2.4 寄存器2.5 时序2.6 M
    发表于 11-18 06:02

    MCS-51系列单片机型号

    0·本文引自《嵌入式和单片机系统》MCS是Intel公司单片机的系列符号。Intel推出有MCS-48、MCS-51
    发表于 12-01 07:28

    一文详解MCS-51单片机

    MCS-51单片机的硬件结构是由哪些部分组成的?MCS-51单片机的引脚功能有哪些呢?
    发表于 01-26 07:15

    请问mcs-51单片机mcs是什么意思?

    mcs-51单片机mcs是什么意思?
    发表于 10-19 06:17

    mcs-51单片机应用教程

    mcs-51单片机应用教程以MCS-51系列单片机为主线,从实用的角度出发,通过介绍大量单片机技能训练实例和应用实例,指导读者学习和使用
    发表于 10-28 16:21 77次下载
    <b class='flag-5'>mcs-51</b><b class='flag-5'>单片机</b>应用教程

    MCS-51 单片机基本原理

    [学习要求] 掌握MCS-51单片机的基本概念和基本原理。[重点与难点]重点:单片机的基本原理与内部结构。难点:MCS-51单片机存储器结构
    发表于 03-18 22:05 67次下载

    MCS-51 外部中断方案的改进

    MCS-51 外部中断方案的改进
    发表于 05-15 13:43 4次下载

    MCS-51单片机中断软件编程

    MCS-51单片机中断软件编程 MCS-51单片机有多个中断源,以8051为例,有5个
    发表于 03-06 10:08 1244次阅读
    <b class='flag-5'>MCS-51</b><b class='flag-5'>单片机</b>外<b class='flag-5'>中断</b>软件编程

    MCS-51单片机应用系统

    MCS-51单片机应用系统详解,感兴趣的可以下载看看。
    发表于 11-06 18:19 2次下载

    一文详解MCS-51单片机中断系统

    一文详解MCS-51单片机中断系统,具体的跟随小编来了解一下。
    的头像 发表于 07-28 11:26 1.1w次阅读
    一文<b class='flag-5'>详解</b><b class='flag-5'>MCS-51</b><b class='flag-5'>单片机</b>的<b class='flag-5'>中断</b>系统

    MCS-51单片机应用设计

    MCS-51单片机应用设计说明。
    发表于 05-24 14:27 42次下载