麻烦把msp430单片机程序修改一下。。。

2025-04-13 18:29:29
推荐回答(1个)
回答(1):

unsigned int i=0; //声明数据类型.此句放到最上面,声明为全局变量,否则在中断中无法使用.
430的中断函数在IAR中这样写,不知道你用的什么编译器.
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void) //定时器A的中断函数
修改后源代码:
#include //声明库文件
unsigned int i=0; //声明数据类型
void main(void)
{
int shi,ge,m;
unsigned char seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//共阳数码管字型码数组

WDTCTL = WDTPW + WDTHOLD; //关看门狗
P1DIR=0XFF;
P2DIR=0XFF;
P2SEL=0X00;
P1SEL=0X00;
TACTL=TASSEL0+TACLR;//aclk辅助时钟
CCTL0 = CCIE; //使能定时器A捕捉与中断功能,CCIE=0x0010
CCR0 =32768; // 设置计数器CCR0初值
TACTL |= MC0; //设置定时器工作模式为加计数到CCR0初值
while(1)//没有循环体的无限次while循环
{
shi=i/10;
ge=i%10;
P1OUT=0x80;
P2OUT=seg[ge];
for(m=0;m<1000;m++);
P1OUT=0x40;
P2OUT=seg[shi];
for(m=0;m<1000;m++);
}
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void) //定时器A的中断函数
{
if(i<100)
i++;
else
i=0;
}