
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
}
希望对你有用,呵呵
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)