我是靠谱客的博主 等待大米,最近开发中收集的这篇文章主要介绍关于51单片机外部中断的触发方式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

51单片机有两个外部中断申请输入端:INT0 和 INT1。
51单片机的外部中断,分为低电平触发和下降沿触发。在单片机内部,分别由控制位 IT0 和 IT1 来控制。
复位时,IT0/1 都为 0,即默认为低电平触发。

一般来说,外设第一次向单片机申请外部中断时,单片机使用那种触发方式,并无什么差别。
但是,返回主程序后,如果外部申请信号仍然是低电平,就有区别了。

在采用低电平触发时,单片机执行了一条主程序的指令后,就会又重新进入中断程序。

而采用下降沿触发时,即使 INT0/1 引脚仍然是低电平,单片机也不会重新进入中断程序。
如果外设想要申请第二次中断,必须是先恢复高电平,重新再送来一次下降沿才行。

那么,为了避免仅仅来了一次申请,就产生多次中断的现象,还是应该采用下降沿触发中断的方式。

如果非要使用低电平触发呢,那必须在退出前,反复的检测中断输入端的电平。
只有当外设撤消了中断申请之后,再退出中断程序,这才能避免多次的重新中断。

到底应该采用那种触发方式,这个确实是应该根据外设的特点来选取。
但是在多数场合,采用下降沿触发方式,还是比较适用的。
即在复位后,应该先执行:

  SETB  IT0
  SETB  IT1

有人在百度知道,提出了一个问题,希望能显示出低电平触发和下降沿触发的区别。

题目的基本内容如下。

;单片机汇编程序题:要求一定是汇编

;AT89C51中P3.2接开关1,P3.3接开关2。
;当开关1, 2全都断开时运行主程序,P1口的8个LED从P1.0~P1.7逐个点亮并反复循环。
;当开关1闭合时进入中断服务程序P2口的8个LED闪烁6次。
;开关2起到对开关1触发方式进行选择的作用:
;第一次闭合开关2时开关1为下降沿触发且P0.0连接的LED点亮;
;第二次闭合开关2时开关1为低电平触发且P0.0连接的LED熄灭。
;求一个用汇编语言编写的完整程序。

根据上述题目要求,做而论道画出了PROTEUS仿真实验电路如下:

关于51单片机外部中断的触发方式 - 非著名博主 - 电子信息角落
插图链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/5124b017b8d9d81122a4e95d.html

;下列程序,可以满足要求。
        ORG   0000H
        LJMP  MAIN
        ORG   0003H
        LJMP  X0_INT
        ORG   0013H
        LJMP  X1_INT
;------------------------------------
MAIN:
        SETB  IT1
        MOV   SP, #60H
        MOV   IE, #85H
        MOV   A,  #254
M_LOOP:
        MOV   P1, A
        RL    A
        CALL  DL_500MS
        SJMP  M_LOOP
;------------------------------------
X0_INT:
        PUSH  PSW
        SETB  RS1
        MOV   R4, #12
SH_6:
        XRL   P2, #255
        CALL  DL_500MS
        DJNZ  R4, SH_6
        POP   PSW
        RETI
;------------------------------------
X1_INT:
        CPL   IT0
        CPL   P0.0
        RETI
;-------------------------------延时子程序
DL_500MS:
        MOV   R5, #9      ;1T
DL1:    MOV   R6, #128    ;1T
DL2:    MOV   R7, #215    ;1T
        NOP               ;1T
DL3:    DJNZ  R7, DL3     ;2T   2 * 215 = 430 T
        DJNZ  R6, DL2     ;2T   [1+1+430+2] * 128 = 55552 T
        DJNZ  R5, DL1     ;2T   [1+55552+2] * 9 = 499995 T
        RET               ;2T   1 + 499995 + 2 = 499998 T
;------------------------------------
END

;===============================================
原题网址:http://zhidao.baidu.com/question/270426318.html
提问者对于答案的评价:谢了,采用你的答案
;===============================================

最后

以上就是等待大米为你收集整理的关于51单片机外部中断的触发方式的全部内容,希望文章能够帮你解决关于51单片机外部中断的触发方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部