#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设为输出;
------解决方案--------------------
因为,你要注释掉的这段代码是外中断配置,你已经启用了
但是,你没有写中断服务
不知道你板子上有什么东西,可能触发了中断.由于没有中断服务
单片机跑飞了,不再正常执行程序,不停的在复位
------解决方案--------------------
那从您给出的代码,没看出问题来...
另外,不闪的时候,程序是停在哪???
------解决方案--------------------