CC2430基础实验 外部中断
前辈您好:我在进行CC2430基础实验 外部中断时 怎么调试也没有达到我要的结果。我是实验思路是 D31D34交替闪烁,当P0_6接地时也就是下降沿时 执行中断 让D35闪烁!我的程序如下(麻烦您给指正一下) 其中 D31D34分别与P1.0P1.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.0p1.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_4P0_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