OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4391|回复: 1

有个开发需求求大神帮忙解决

[复制链接]

22

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
221
金钱
221
注册时间
2019-3-1
在线时间
43 小时
发表于 2019-5-2 12:46:45 | 显示全部楼层 |阅读模式
是这样子的,有这样子一个开发需求,我实验了不成功,求大神帮忙解决。。。




开发需求为:一开机就执行中断里面的函数,动作先用电灯代替,执行完中断里面的函数之后,然后再返回main执行剩下的动作,也用点亮LED控制。。


代码如下:


#include "reg51.h"                        
typedef unsigned int u16;
typedef unsigned char u8;

u16 a;
sbit k3=P3^2;  //定义按键K3

sbit led=P3^6;         //定义P36口是led
sbit led1=P3^7;         //定义P37口是led1



void delay(u16 i)

{
        
while(i--);        

}




void Int0Init()


{
               
IT0=1;//跳变沿出发方式(下降沿)
        
EX0=1;//打开INT0的中断允许。        
        
EA=1;//打开总中断        



}




void main()

{

    Int0Init();  //        设置外部中断0

        a=1;
        while(1)
        {
     led=0;
                  
        }
}


void Int0()        interrupt 0                //外部中断0的中断函数

{
   u16 i;        
  if(a==1)
  { a=0;
   for(i=0;i<2;i++)
   {
            led=0;
     delay(10);
         led=1;
         delay(10);

   }

  }
}



现在的问题是没有中断服务函数没有检测的a==1,只执行了主函数while(1) 里面的
led=0;













微信图片_20190502124325.png (48.66 KB, 下载次数: 0)

仿真



shiyan 1.rar

41.66 KB, 下载次数: 3

程序和仿真

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2019-4-24
在线时间
78 小时
发表于 2019-5-3 19:21:51 | 显示全部楼层
进入main函数前执行中断中的程序,然后再执行while中的,那在执行while的时候有处罚再次进入中断吗?你可以直接写一个子函数就是中断中的程序,进入while前进这个子函数就可以了,有触发中断,你中断中保留这个函数就可以了。当然非要进入中断也是有办法的1039078377qq
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-1 07:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表