小白 求助一个 很简单的 外部中断问题

2019-07-16 05:38发布

用的是 stc89c52rc      外部中断使用 下降沿触发



#include<reg51.h>
sbit LED = P2^3;
sbit LE =P2^0;
void delay(unsigned int t);
void s() interrupt 0 using 2
{
   LED = ~LED;
   delay(100);
   }
void main()
{
     EX0 = 1;    // 外部中断0开中断;   
     EA = 1;      // 使能全局中断。
     IT0=1;
   while(1)            
   {
      LE= 0;     // 点亮LED
      delay(100);    // 延时大约0.1s
      LE= 1;    // 熄灭LED
      delay(100);    // 延时大约0.1s
   }
}
void delay(unsigned int t)      //延时子程序
{
   while(t--);
}



我是想主函数使 P2。0 的LED灯闪      然后 中断程序中 就 P2。。3 的LED闪  
但是 运行后  一旦进入中断程序  就不能返回主函数了  
就是 一开始 是P2.0闪    按了中断按钮后   就P2,3闪   但是再按还是P2,3闪   P2,0就不闪了~~
求助各位大神呀  那里出问题了    中断不能返回呢···


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
chen5629
1楼-- · 2019-07-17 11:11
你外部中断用的是脉冲还是开关啊?脉冲的话有下降沿就要中断的,可能中断很多次所以以为没跳出吧..
开关的话应该吧IT0改为IT0=0 才对啊! 不然就是你中断程序写成死循环了吧..我觉得应该就这几种情况了吧
410085842
2楼-- · 2019-07-17 13:02
如果是实物的话就和3楼说的的一样了 没抗干扰延时程序,因为是脉冲沿,外界干扰大了一直触发中断程序,如果你是用软件模拟的话那还真不知道随时什么原因。。。
xgw218
3楼-- · 2019-07-17 18:05
就上边这个程序而言 我个人感觉是没什么问题,是不是你外部的下降沿的问题(比如说 时间 防抖动)
394511820
4楼-- · 2019-07-17 19:34
 精彩回答 2  元偷偷看……

一周热门 更多>