定时器a求助

xuejinwenxia   2008-2-29 15:13 楼主
各位兄弟 我写了一个简单的程序不能执行 在tt==20的地方,请教高手?谢谢
#include <msp430x14x.h>

#define uint unsigned int
#define uchar unsigned char
uchar num,tt;
uchar ta××e[]={
0xc0,0xfc,0x24,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void main(void)
{
// WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer

WDTCTL = WDTPW + WDTHOLD; // Stop WDT
TACTL = TASSEL1 + TACLR; // SMCLK, QINGCHU TAR

CCTL0 = CCIE; // CCR0 interrupt ena××ed
CCR0 = 40000;
TACTL |= MC0;



//???????? ????
P1DIR = 0;
P2DIR = 0;
//??????????i?o?
P1SEL = 0;
P2SEL = 0;
//
P1DIR |=BIT0;
P1DIR |=BIT1;
P1DIR |=BIT2;
P1DIR |=BIT3;
P1DIR |=BIT4;
P1DIR |=BIT5;
P1DIR |=BIT6;
P1DIR |=BIT7;
//
P2DIR |=BIT0;
P2DIR |=BIT1;
P2DIR |=BIT2;
P2DIR |=BIT3;
P2DIR |=BIT4;
P2DIR |=BIT5;
P2DIR |=BIT6;
//

P1OUT=0x00;





while(1)
{
就在此处不往下执行 ??? if (tt == 2)
{
tt=0;
num++;
P1OUT=ta××e[num];
//dula=0;
delay(1000);
}
}
}

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
//interrupt [TIMERA0_VECTOR] viod TImerA_ISR(viod)
{
CCR0 = 40000;

tt++; // Add Offset to CCR0
}
目的在于 使数码管 按定时时间依次点亮

回复评论 (4)

你的定时器没有启动

你看我的TimerA的初始化设置
void init_TimerA(void)
{
TACTL = MC_0+TACLR;//定时器暂停,定时器和输入分频器复位

CCTL0 = CCIE; // 禁止捕获模式+选择比较模式+比较模式中断允许+OUT对应于输入状态
CCR0 = 64000;//
TACTL=TASSEL_2 +ID_0+ MC_1;// 时钟源SMCLK,8M不分频,增记数模式,禁止定时器溢出中断,***启动定时器***
}

我的中断服务程序
#pragma vector=TIMERA0_VECTOR//比较器/捕获器0中断服务程序
__interrupt void Timer_A (void)
{
TACounter++;
}
点赞  2008-2-29 16:38

注意在初始化你的TimerA之前,应该根据你的实际电路设置时钟

注意在初始化你的TimerA之前,应该根据你的实际电路设置时钟
点赞  2008-2-29 16:41

注意开总中断允许

_EINT();//这一句放在初始化完成后,while()语句前
点赞  2008-3-1 13:57
十分感谢几位 仁兄
现在明白了
点赞  2008-3-1 19:42
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复