找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4430|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机拓展多路外部中断的方法 附电路+代码

[复制链接]
跳转到指定楼层
楼主
众所周知,51单片机只有两路外部中断,当我们需要多路外部中断时要怎么办呢?
一下提供了一种方案,电路如下图:

S1 S2 S3用来模拟外部下降沿中断事件。开始先将单片机INT0口设为下降沿中断,KEY1 KEY2 KEY3对应的端口设置为输入模式。当S1(或 S2 S3)按键按下时,其对应的端口KEY1(或KEY2 KEY3)会被拉低,于此同时INT0端口也会被从5V拉到0.7V(硅管),相当于产生了一个外部下降沿的电平。此时单片机会产生下降沿中断,这时候只需在中断程序中读取KEY1 KEY2 KEY3所对应端口的电平就可以知道是哪一路产生的中断了。下面是程序:
/**************************************************************************/
#include "reg52.h"
unsigned char flagint1,flagint2,flagint3;
#define KEY1 P20
#define KEY2 P21
#define KEY3 P22
void main()
{
    IT0 = 1;//INT0下降沿中断
    EX0 = 1;
    EA = 1;
    while(1)
    {
        
    }
}

void INT0_Interrupt(void) interrupt 0//外部中断0
{
    if(KEY1==0) flagint1=1;
    if(KEY2==0) flagint2=1;
    if(KEY3==0) flagint3=1;
}
/**************************************************************************/
同理:根据此原理可以拓展3路甚至更多路的中断。


评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:325735 发表于 2019-11-17 15:03 | 只看该作者
正在苦苦寻找多路io中断的方法,心中也想过此方法 正好从这里得到验证
立刻打板子 试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表