各位兄弟 我写了一个简单的程序不能执行 在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
}
目的在于 使数码管 按定时时间依次点亮
你的定时器没有启动
你看我的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++;
}
注意在初始化你的TimerA之前,应该根据你的实际电路设置时钟
注意在初始化你的TimerA之前,应该根据你的实际电路设置时钟
注意开总中断允许
_EINT();//这一句放在初始化完成后,while()语句前