单片机中断—外部中断

51系列单片机的中断共有5个,其中外部中断共占两个。外部中断主要通过单片机的引脚P3.3、P3.4接收外部脉冲或高低电平触发CPU中断。与外部中断有关的多功能寄存器为IE、IP、TCON。

单片机的P0.0口接一只LED,按键接在P3.2端口,按键不按时,由于P3.2接有上拉电阻R3,所以P3.2此时为高电平+5V,如果按键按下,P3.2电源地短路,P3.2为低电平,利用外部中断INT0实现按键输入电路的电路具体如图。

为了消除键盘抖动现象,键盘两端并联滤波电容器C4。P3.2是单片机的外部中断的输入端,当按键按下时,让单片机执行外部中断服务程序,在中断服务中完成对LED的控制。

这里没有设置INT0是下降沿触发中断或是低电平触发中断,原因是按键按下,不管产生不产生键抖现象,总能使INT0引脚产生1个下降沿和低电平。如果设置只有下降沿才触发INT0中断,需要利用设置计时器控制寄存器TCON的IT0 = 1位,按键按下是否产生中断,可以利用程序检测TCON的IE0位。利用外部中断触发作为按键输入很好的解决了键盘抖动问题。

#include<reg51.h>sbit LED0 = P0^0;sbit key5 = P3^2;bit i;void int0_isr(void) interrupt 0   //INT0中断服务函数,INT0的中断号为0{    i = !i;  LED0 = i;            //INT0中断1次,LED工作状态变化1次  while(key5 == 0)EX0 = 0;   //按键按下时刻,禁止中断  EX0 = 1;                  //按键抬起,允许中断}void main(void){      P0 = 0;                  //P0口全为低电平  EX0 = 1;                //开启INT0中断  PX0 = 1;               //INT0中断优先,可以省去  EA = 1;               //开启总中断开关  IT0 = 0;              //设置外部中断0为低电平有效触发  while(1);            //等待按键按下,中断发生}

如果需要多个键盘,把INT0口与I/O口之间用键盘连接,I/O输出低电平扫面信号即可。在数码管动态显示电路中,为了节省硬件资源,可以在INT0口和P2口之间接入键盘,实现8只按键输入。

仿真电路如图:

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值