#include <msp430x14x.h>
int i=0;
void init()//初始化时钟
{
unsigned int i;
_DINT();//__disable_interrupt()
BCSCTL1 &=~XT2OFF;//Basic Clock System Control 1,Enable XT2CLK
//即打开XT2
do
{
IFG1 &= ~OFIFG; // IFG1:Interrupt Flag 1 // 清除振荡器失效标志
for(i=0xFF;i>0;i--);// 延时,等待XT2起振
}
while((IFG1 & OFIFG) != 0);// 判断XT2是否起振,OFIFG=0则起振
BCSCTL2 =SELM1+SELS; //MCLK(SELM1),SMCLK时钟为XT2,都为8MHZ
//BCSCTL2:Basic Clock System Control 2
}
void count_init()
{
P1SEL =0x00;
P1DIR&=~(BIT0+BIT1);
P1DIR|=BIT6;
P1OUT=0X00;
P1IES = 0x00; // P1.0选择上升沿中断
P1IE = 0x01; // 打开中断使能
}
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
init();
count_init();
_EINT(); //开总中断
return 0;
}
#pragma vector=PORT1_VECTOR //外部中断计脉冲
__interrupt void port1(void)
{
if(P1IFG&BIT0==BIT0)
{
P1IFG=0X00;
if((P1IN&BIT1)==BIT1)
i++;
else
i--;
if(i>=100)//接收的脉冲大于100则P1.6输出高电平,灯亮
P1OUT|=BIT6;
else
P1OUT&=~BIT6;
}
}
我打算用外部中断计电机脉冲个数,但是好像没有用,这是我写的一个外部中断测试,灯一直不亮,现在也不知道是什么原因,求帮助,已经困扰好久了 |