当前位置: 代码迷 >> 单片机 >> msp430解决方案
  详细解决方案

msp430解决方案

热度:81   发布时间:2016-04-28 15:25:52.0
msp430
#include <msp430g2553.h>
void init_port(void);
void init_timer(void);
void main(void)
{
WDTCTL=WDTPW+WDTHOLD;
init_port();
init_timer();
_EINT();
while(1);
}


void init_port(void)
{
P1DIR=0xff;                  //将P1口所有管脚设为输出方式
P1SEL=0;                     //将P1口所有管脚设为一般I/O口
P2DIR=0x00;              //将P2.0口所有管脚设为输入方式
        P2SEL=0;                     //将P2口所有管脚设为一般I/O口
        P2IFG=0;                       //将中断寄存器清零
        P2IE=BIT0;                   //管脚P2.0使能中断
        P2IES &=~BIT0;                //上升沿产生中断

}

void init_timer(void)
{
TACTL=TASSEL_1+TACLR;            //选择ACLK(辅助时钟源),清除TAR
CCTL0=CCIE;                      //TACCR0中断允许
CCR0=32767;                      //时间间隔为1s
TACTL |=MC_1;  //增计数器模式

}

#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
P1OUT ^= (BIT0+ BIT6);
}

想请教为什么灯不能闪,可是把
        P2DIR=0x00;                  //将P2.0口所有管脚设为输入方式
        P2SEL=0;                     //将P2口所有管脚设为一般I/O口
        P2IFG=0;                       //将中断寄存器清零
        P2IE=BIT0;                   //管脚P2.0使能中断
        P2IES &=~BIT0;                      //上升沿产生中断
这段注释掉就可以正常闪,也就是不对P2口进行初始化就灯就闪。
msp430g2553

------解决方案--------------------
  P2DIR=0x11;                  //将P2.0口所有管脚设为输入方式
是不是 应该将P2设为输出;
------解决方案--------------------
因为,你要注释掉的这段代码是外中断配置,你已经启用了

但是,你没有写中断服务

不知道你板子上有什么东西,可能触发了中断.由于没有中断服务

单片机跑飞了,不再正常执行程序,不停的在复位


------解决方案--------------------
那从您给出的代码,没看出问题来...

另外,不闪的时候,程序是停在哪???
------解决方案--------------------
  相关解决方案