3292|0

11

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

CC2430基础实验 外部中断 [复制链接]

前辈您好:我在进行CC2430基础实验 外部中断时 怎么调试也没有达到我要的结果。我是实验思路是 D31~D34交替闪烁,当P0_6接地时也就是下降沿时 执行中断 让D35闪烁!我的程序如下(麻烦您给指正一下) 其中 D31~D34分别与P1.0~P1.2 D35与P2.0相连 ,P0.6只是往外引出来一个接口。:

#include <ioCC2430.h>
#define D32 P1_0
#define D33 P1_1
#define D34 P1_2
#define D35 P2_0
void Delay(unsigned char n)
{
   unsigned char i;
   unsigned int  j;
   for(i=0;i<n;i++)
     for(j=1;j;j++);
}
void init_xtal(void)
{
  SLEEP &=~0x04;   
  while(!(SLEEP&0x40));//0x40=0100 0000
  CLKCON&=~0x47;// 0x47=0100 0111
  SLEEP|=0x04;
}
/*void init_led(void)
{
  P0SEL=0x00;
  P1SEL=0x00;//设置P1为普通I/O口
  P2SEL=0x00;//设置P2为普通I/O口

  P0DIR=0x00;//设置p0为输入
  P1DIR=0x07;//设置p1.0~p1.2为输出
  P2DIR=0x01;//设置p2.0为输出

  D32=1;
  D33=1;
  D34=1;
  D35=1;

}*/
void init_interrupt(void)
{
  P0INP&=~0x40;// 设置p0.1的输入状态 1:三态;0:丄拉|下拉
  EA=1;
  P0IE=1;
  PICTL|=~0x11;//设置P0_4~P0_7 为中断使能并且设置P0 为下降沿触发
  P0IFG&=~0x02;//P0口中断标志位 0000 0010
}
void main(void)
{
  void init_interrupt();
  P0SEL=0x00;
  P1SEL=0x00;//设置P1为普通I/O口
  P2SEL=0x00;//设置P2为普通I/O口

  P0DIR=0x00;
  P1DIR=0x07;
  P2DIR=0x01;

  D32=1;
  D33=1;
  D34=1;
  D35=1;
  while(1)
  {
    D32=0;
    Delay(10);
    D32=1;
    Delay(10);


    D33=0;
    Delay(10);
    D33=1;
    Delay(10);


    D34=0;
    Delay(10);
    D34=1;
    Delay(10);

   /* D35=0;
    Delay(10);
    D35=1;
    Delay(10);*/

  }


}

# pragma vector = P0INT_VECTOR
__interrupt void  P0_interrupt (void)
{
  EA=0;
  Delay(100);

  if((P0IFG&0x02)>0)
  {
     P0IFG&=~0x02;
     //D35=!D35;
     D35=0;
     Delay(10);
     D35=1;
     Delay(10);
  }
     //P0IF=0;
      EA=1;
}

辛苦了!!!

我的邮箱是chezkp@163.com 

新建位图图像.jpg (101.1 KB, 下载次数: 8)

新建位图图像.jpg
此帖出自RF/无线论坛
点赞 关注
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表