求一个单片机外部中断程序,要求用按键模拟单片机外部中断输入源,当按键按下时产生中断,进行中断处理

求一个单片机外部中断程序,要求用按键模拟单片机外部中断输入源,当按键按下时产生中断,进行中断处理,第1张

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

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

3、然后分别打开外部中断0和外部中断1的分开关,即EX0=1和EX1=1。

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

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

6、最后把生成出的.hex烧入进51单片机进行运行或者装载入Proteus仿真系统进行仿真。

很简单的啊,不太清楚你的电路图,我把主要程序写一下:

#include<reg52.h>

unsigned char flag=0//设置flag作为标志位,初值为0,一旦产生中断,将其置1

void main()

{

EA=1//开总中断

EX0=1//开外部中断0 ,假设是由P3.2产生的中断

IT0=1//设置产生中断的方式,这是表示下降沿触发

P0=0X0F//假设矩阵键盘接P0口,给所有列线低电平,所有行线高电平

while(1)

{

if(flag==1) //这个是表示,如果中断不产生,下面的程序不会运行,只有中断了,才会键盘扫描

{

按键扫描程序,这个我就不写了,写法有很多啦

}

数码管显示程序,这个我也不写了,不晓得你是什么电路图

}

}

void scan() interrupt 0

{

flag=1//表示,一旦中断产生了,将flag置1

}

希望对你有用,呵呵


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7935001.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存