打印

查询法扩展中断

[复制链接]
2181|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jxmzzr|  楼主 | 2012-4-20 09:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
单片机扩展外部中断源采用硬件请求和软件查询的方法是:把各个中断源通过硬件或非门引入到单片机外部中断源输入端INT0或INT1,同时再把外部中断源送到单片机的I/O端口,这样当外部中断时,通过“或非”门引起单片机中断,在中断服务程序中再通过软件查询,进而转相应的中断服务程序。
查询法扩展外部中断源需要硬件和软件的配合设计,硬件需要有或非门74LS25的参与,软件需要有端口的查询程序设计。
单片机基于74LS25扩展8个外部中断的电路图如下。较为简单。扩展时占用单片机的外部中断0输入线,即扩展的8个外部中断将触发INT0中断服务程序。

程序结构简单
程序
*******************************************************************************
程序功能为外部8个高电平有效的中断触发源共用外部中断0作为中断触发端口,通过P2口查询中断号,进入相应的中断服务程序,根据中断查询结果对有效的中断请求进行处理,优先顺序为P2.0~P2.7联接的相应中断源。
*******************************************************************************
#include <reg51.h>
#include <absacc.h>
#include <stdio.h>
#include <math.h>
//主程序,初始化及中断方式设定
void main (void)
{
P2=0x00;             //P2口拉低,防止51单片机上电复位端口随即扰动触发中断
EA=1;                            //开中断总开关
EX0=1;                           //开外部中断0
while(1)                           //等待外部中断0
{;}
}

void zhongduan (void) interrupt 0 using 3 //中断函数
{
            EX0=0;//关中断
            if(P2_0=1) { *****}               //中断0查询
            if(P2_1=1) { *****}               //中断1查询
            if(P2_2=1) { *****}               //中断2查询
        if(P2_3=1) { *****}               //中断3查询
        if(P2_4=1) { *****}               //中断4查询
        if(P2_5=1) { *****}               //中断5查询
        if(P2_6=1) { *****}               //中断6查询
        if(P2_7=1) { *****}               //中断7查询
EX0=1;开中断
}

相关帖子

沙发
huangfeng33| | 2012-4-20 09:26 | 只看该作者
通过I/O端口改造为中断查询端口实现,设计过程简单,比较实用。在一般外部中断的应用场合可以满足要求。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

460

主题

2188

帖子

12

粉丝