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

P1口连接8个发光二极管,用来反映中断程序处理过程.中断未发生时,LED做闪烁状态,当有中断产生,LED呈流水灯操作... P1口连接8个发光二极管,用来反映中断程序处理过程.中断未发生时,LED做闪烁状态,当有中断产生,LED呈流水灯操作 展开
 我来答
百度网友faadf46
高粉答主

2019-07-17 · 说的都是干货,快来关注
知道答主
回答量:4556
采纳率:0%
帮助的人:75.2万
展开全部

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仿真系统进行仿真。

紫姗雪儿
2013-05-07
知道答主
回答量:40
采纳率:0%
帮助的人:14.6万
展开全部

你要的连接在P1口上,写的时候没注意,用了p2口,不过都是一样。如果有什么不明白的地方,可以再问。

 

 

/*P2口连接8个发光二极管,用来反映中断程序处理过程.
 中断未发生时,LED做闪烁状态,当有中断产生,LED呈流水灯操作
*/
#include<reg52.h>  //52单片机头文件
#include<intrins.h>    //单片机内部子函数
#define uint unsigned int  //定义uint为无符号整型
#define uchar unsigned char
//延时函数
void delay()
{
 uint a=30000;
 while(a--)_nop_();
}
//主函数
void main()
{
  P2=0xff; //P2口初始化
  do
  { 
     P2=~P2;  //让LED闪烁
     delay();  //调用延时函数
  }while(INT0==1); 
     EA=1;   //开总中断
     EX0=1;   //允许外部中断0
 }
//中断服务程序 
void srv_INT0() interrupt 0   
{
 uchar a=0xfe;    //定义中间变量
 while(INT0==0)    //开关闭合,产生中断
 { 
     P2=a;
  a=_crol_(a,1);    //循环左移
  delay();

 }
 P2=0xff;     //关闭所有的led,避免干扰
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liuzhou_huang
推荐于2017-09-03 · TA获得超过980个赞
知道小有建树答主
回答量:795
采纳率:93%
帮助的人:261万
展开全部
#include<reg51.h>
void main()
{
EX0=1;
EA=1;
IT0=1;
while(1)
{
P1=0x00;
//延时
P=0xff;
//延时
}
}
void T() interrupt 0
{
P=0xfe;延时;P=0xfd;延时;P=0xfb;延时;P=0xf7;延时;P=0xef;延时;P=0xdf;延时;P=0xbf;延时;P=0x7f;延时;
}

延时程序自己写一个。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式