xmgz10 发表于 2011-11-27 12:33:48

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;
       }
    }
}

xmgz10 发表于 2011-11-29 22:22:56

没有人用这个吗?不会吧!

fisher_am 发表于 2015-11-4 16:00:51

我也是出现同样的问题啊
页: [1]
查看完整版本: MSP430F5438A定时器A使用出问题(中断函数无法传递?)