MSP430F5438A定时器A使用出问题(中断函数无法传递?)
新手: 单独使用定时器A,OK;单独使用显示函数,也没有问题,我再用TA0定时,然后显示就出问题了!总感觉定时器中断的函数传递不出来!见程序!由于刚接触这款单片机,不知哪里出问题了?希望各位帮忙看看!
#include "msp430f5438a.h"
#include"initial.h"
#include"display.h"
#define uchar unsigned char
#define uintunsigned int
uchar sec=0;
uchar min=0;
uchar hour=0;
void delay(unsigned long v)
{
while(v--);
}
void initial_sys()
{
uint i;
P5SEL=0X06; //选择XT2
P7SEL=0X03; //选择XT1
UCSCTL6= XT2DRIVE_2 + XT1DRIVE_0 ; //
UCSCTL3|=SELREF_2; //保留,FLLref=REFOCLK=XT2;不分频
UCSCTL4|=SELA_0; // ACLK=REFOCLK,
delay(100);
do
{
UCSCTL7&=~(XT2OFFG+XT1HFOFFG+XT1LFOFFG+DCOFFG); // 清除 XT2,XT1 错误标志
SFRIFG1&=~OFIFG;
for(i=0xff00;i>0;i--);
}while(SFRIFG1&OFIFG); // 检测振荡器错误标志
UCSCTL1=DISMOD; // DCO disable
UCSCTL4=SELA_0 + SELS_5 + SELM_5; //Osc :SMCLK=MCLK=8MHz and ACLK=32768KHz;
UCSCTL5=0X0000; //不分频
}
void TimerA0_initial()
{
TA0CCR0=32768;
TA0CTL= TASSEL_1+ID_0+MC0+TACLR; // ACLK,32768Hz UP mode, clear TAR
TA0CCTL0=CCIE;
}
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIMERA0_ISR(void)
{
sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
TA0CCTL0&=~TAIFG;
}
void main()
{
WDTCTL=WDTPW+WDTHOLD; // colsedwatchdog
initial_sys();
P6DIR=0XFF; //P6 is output
P9DIR|=BIT7;
P9OUT|=BIT7;
P10DIR=0Xff; //
P10OUT=0XFF;
P11DIR=0X07; //p11.0~p11.2 is output
P11OUT=0XFF;
TimerA0_initial();
_EINT();
while(1)
{
if(sec==1)
{
led1_on;
}
if(sec==2)
{
led2_on;
}
if(sec==3)
{
led3_on;
}
if(sec==4)
{
led4_on;
}
if(sec==5)
{
sec=0;
led5_on;
}
}
} 没有人用这个吗?不会吧! 我也是出现同样的问题啊
页:
[1]