野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7736|回复: 4

外部中断的疑问?

[复制链接]
发表于 2016-1-4 14:12:52 | 显示全部楼层 |阅读模式
本帖最后由 舞告烟岛 于 2016-1-4 14:17 编辑

以下程序分别设置了按键s1(P0.1)、s2(P2.0)的外部中断,中断函数为灯d1、d2、d3的状态变化。
当先点击s1,即可进入中断。再点击s2,这时s2便无法进入中断。
如果复位后先点击s2,即可进入中断,再点击s1,s1也能进入中断。
这是为什么?求大神解答.

#include<ioCC2530.h>
#include"led.h"
#include"exti.h"
#include"osc.h"
#include"delay.h"

int main(void)
{  
   ON_32MHz();
   Led_Config();
   
   S1_Exti_Config();
   S2_Exti_Config();
   
   d1=1;
   d2=0;
   d3=1;
  
   while(1)
  {
   
  }
}
#pragma vector=P0INT_VECTOR
__interrupt void S1()
{
   if(s1==0)
   {
    delay(20);
    if(s1==0)
    {
     
     d1=~d1;
     d2=~d2;
     d3=~d3;
    }
    while(s1==0);
    delay(20);
    while(s1==0);   
   }
   
   P0IF&=~0x02;
   P0IFG&=~0x02;
}

#pragma vector=P2INT_VECTOR
__interrupt void S2()
{
  if(s2==0)
   {
    delay(20);
    if(s2==0)
    {
      
      d1=~d1;
      d2=~d2;
      d3=~d3;
    }
    while(s2==0);
    delay(20);
    while(s2==0);
   } P2IF&=~0x01;
     P2IFG&=~0x01;
     
     
   
}
回复

使用道具 举报

 楼主| 发表于 2016-1-4 14:19:33 | 显示全部楼层
#include"exti.h"
#include<ioCC2530.h>

void S1_Exti_Config()
{
  EA=1;
  IEN1|=0x20;
  P0IEN|=0x02;
  PICTL|=0x01;
}

void S2_Exti_Config()
{
  EA=1;
  IEN2|=0x02;
  P2IEN|=0x01;
  PICTL|=0x08;
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-4 14:20:16 | 显示全部楼层
#ifndef  __EXTI_H
#define  __EXTI_H
#include<ioCC2530.h>

#define s1 P0_1
#define s2 P2_0

void S1_Exti_Config();
void S2_Exti_Config();
#endif
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-4 14:26:46 | 显示全部楼层
看来是优先级的问题了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-6 09:05:49 | 显示全部楼层
本帖最后由 舞告烟岛 于 2016-1-6 09:30 编辑

okokokokok
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-6-13 03:35 , Processed in 0.034623 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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