MSP430单片机定时器溢出中断 100

用的是MSP430F2012,源代码如下#defineLEDBIT6//P1.6ucharflow_flag=0;voidinit_io(){P1DIR|=LED;//设... 用的是MSP430 F2012,源代码如下
#define LED BIT6 //P1.6
uchar flow_flag=0;
void init_io()
{
P1DIR |= LED;//设置BIT6为输出
}
void TimerA_Init(void)
{
TACTL = TASSEL1+MC0+ID1+ID0+TACLR+TAIE;
CCTL0 = CCIE;
CCR0 = 0xffff;
}
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A(void)
{
flow_flag++;
if(flow_flag==3)
{
P1OUT^=LED;//取反,闪烁
flow_flag=0;
}
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 =CALBC1_1MHZ; //设定DCO为1MHZ
DCOCTL =CALBC1_1MHZ;
TimerA_Init(); //定时器初使化
init_io();
_EINT(); //开启中断
while(1);
}

问题是:在溢出中断程序中,如果只有一条“ P1OUT^=LED;”语句,则可实现LED灯正常闪烁。一旦变为上面程序中加有flow_flag变量的语句,则灯没变化,进不了中断。
不知为何
展开
 我来答
mc_wangbo
2012-03-03 · TA获得超过1368个赞
知道小有建树答主
回答量:825
采纳率:0%
帮助的人:264万
展开全部

用IAR的话,可能要加:

#include<msp430f2012.h>

#define uchar unsigned char

才能编译通过。

我试了一下,程序没有其它问题,中断能进入。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
思念天涯21
2012-09-23 · 超过10用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:13万
展开全部
你的程序有问题,,因为 flow_flag++加一次就退出中断了根本就不运行if里面的语句,不信的话你就把(flow_flag==3)改为(flow_flag==1)跟定行,所以啊,如果你坚持要用(flow_flag==3)话最好用一个for循环来写。。。。。。。。。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qiwolves
2012-03-02 · 超过22用户采纳过TA的回答
知道答主
回答量:129
采纳率:0%
帮助的人:54.7万
展开全部
看了很久,没看出原因在哪里啊
要是找到了原因告诉我们啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式