如何同时使用2个外部中断
来源:网络收集 点击: 时间:2024-04-16首先要知道中断源的入口地址,由于我们需要同时使用两个外部中断,即要用到外部中断0:0003H和外部中断1:0013H

打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并添加STARTUP.A51文件,然后在当前目录下新建一个C文件,并将其添加入工作路径,如图所示

首先要导入51单片机的头文件,否则后续使用的端口都会出现未定义的情况,然后在主函数中,使得EA=1,即总中断允许,打开中断的总开关

然后分别打开外部中断0和外部中断1的分开关,即EX0=1和EX1=1,同时设置中断的触发方式为跳沿触发,可以避免增加额外的电路

如果不添加别的代码的话,此时这两个中断的优先级是外部中断0外部中断1,如果一个中断正在执行来了另外一个中断是不会打断前一个中断的执行过程的,这里需要为中断设置优先级

编写完主函数后,我们要为两个中断分别编写对应的中断服务函数,才能在中断发生后产生相应的响应,注意外部中断0和外部中断1的中断号分别是0和2

然后到Project菜单中的output项目中勾选Create Hex File,OK后点击编译按钮,如果没有错误,即可生成可以烧录或者仿真的.hex文件

最后把生成出的.hex烧入进51单片机进行运行或者装载入Proteus仿真系统进行仿真,点击运行按钮后可以看到在点击第一个按键后led灯的状态由灭变亮,当点击第二个按钮后,无论led灯原先的状态怎么样都会变成常亮的状态

不仅仅可以同时使用两个外部中断,其他中断也可同时使用,但应注意中断的优先级设置
如果中断调用失败,请检查中断服务函数的格式是否正确
软件单片机中断51单片机外部中断版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_525427.html