zhengxl07 发表于 2011-6-13 15:29:57

程序进不去中断 求指教

写的一个控制灯亮灭的程序,不起效果,求老手指点,用的是1213

/***************************************************************************
*                  main program
***************************************************************************/

#include        "K0R_def.H"//头文件里定义中断MD_INTTM02

void PWM_init(void)
{
/********    CPUsetting   ******/
        PER0 = 0b10100100;                /* RTCEN=ADCENSAU0EN=1: supplies input clock to RTC, ADC, SAU */
       
        PER1 = 0b00001000;                /* OACMPEN=1: comparator/programmable gain amplifier*/       
       
        PER2 = 0b00000011;             /*TAUOPEN=TAU0EN=1:inverter control function and TAUS*/
   /********   clock setting    ******/
         OSMC=0x01;
   
        CMC = 0b01000001;               
   /*****************************************
       X1 clock oscillation stabilization wait time when STOP mode is released */
       
         OSTS = 0x07;                   /* OSTS2=OSTS1=OSTS0=1: 2^18/fx */

        CSC = 0b01000000;                /* MSTOP=0: X1 operating
                               XTSTOP=0: XT1 stopped
                               HIOSTOP=0: internal high-speed oscillator operating */

        while(OSTC != 0xff);                /* oscillation stabilization ? */

        CKC = 0b00001000;                /* CLS=0: fCLK = main system clock= 10MHz*/
       
        MCM0 = 1;
       
        while(MCS == 0){}

        DSCCTL = 0b00000000;   /*Do not use 40 MHz Internal High-speed Oscillation*/
        /**************************************************
       interrupt mask flag setting */
        MK0L = 0xff;                        /* interrupt servicing disabled */
        MK0H = 0xff;                        /* interrupt servicing disabled */
        MK1L = 0xff;                        /* interrupt servicing disabled */
        MK1H = 0xff;                        /* interrupt servicing disabled */
        MK2L = 0xff;                        /* interrupt servicing disabled */
        MK2H = 0xff;                        /* interrupt servicing disabled */
   
          /**************************************************
       interrupt request flag setting        */
        IF0L = 0x00;                        /* clear interrupt request flags */
        IF0H = 0x00;                        /* clear interrupt request flags */
        IF1L = 0x00;                        /* clear interrupt request flags */
        IF1H = 0x00;                        /* clear interrupt request flags */
        IF2L = 0x00;                        /* clear interrupt request flags */
        IF2H = 0x00;                        /* clear interrupt request flags */
       
        TMPR002 = 0;                              //优先级
        TMPR102 = 0;
   
       
   /********TAUS setting*******/

         TPS0 = 0x0000;                /* timer clock (CK00) = fCLK0.1 us */

        TMR02 = 0x0801;               /*master clock*/

        TMR03 = 0x0409;               /*slave clock*/
       
        TDR02 = 1000-1;                  /*period time=100us */
       
        TDR03 = 500-1;
               
        TOM0 = 0b0000000000001000;             /*Slave channel output mode*/

        TOL0 = 0b0000000000000000;                  
         
         TO0= 0b0000000000000000;               

        TOE0 = 0b0000000000001000;               
               
        PM1 = 0b11110000;               
         
         PM3.2 = 0;                      /*P32:output mode*/
         POM3.2 = 0;
   
}

void PWM_start(void)
{
    TMIF02 = 0;
    TMMK02 = 0;
    TOE0 = 0b0000000000001000;                        /* Enables the TO03 output operation by counting operation (slave) */

   TS0 = 0b0000000000001001;                                                                                                       }

void PWM_stop(void)
{
    TT0 = 0b0000000000001000;                                                                               
    TOE0 = 0b0000000000000000;                                               
    /**************************************************
       interrupt mask flag setting */
        MK0L = 0xff;                        /* interrupt servicing disabled */
        MK0H = 0xff;                        /* interrupt servicing disabled */
        MK1L = 0xff;                        /* interrupt servicing disabled */
        MK1H = 0xff;                        /* interrupt servicing disabled */
        MK2L = 0xff;                        /* interrupt servicing disabled */
        MK2H = 0xff;                        /* interrupt servicing disabled */
   
    /**************************************************
       interrupt request flag setting        */
        IF0L = 0x00;                        /* clear interrupt request flags */
        IF0H = 0x00;                        /* clear interrupt request flags */
        IF1L = 0x00;                        /* clear interrupt request flags */
        IF1H = 0x00;                        /* clear interrupt request flags */
        IF2L = 0x00;                        /* clear interrupt request flags */
        IF2H = 0x00;                        /* clear interrupt request flags */
}

int LED_count=0;
__interrupt void MD_INTTM02( void )
{                                                /* Start user code. Do not edit comment generated here */
    LED_count++;
    if(LED_count==20000)
    {P3.2 = ~P3.2;LED_count =0;}
    TMIF00= 0;       
    return;                                             /* End user code. Do not edit comment generated here */
}


void main(void)
{
    DI();
        PWM_init();                                                /* Initial Setting */                               
        PWM_start();                   /* Operation Start */
        EI();       
    while(1)
    {
    ;                               /*wait interrupt*/
    }


        /* main loop */
        while(1){
                WDTE = 0xac;                                /* watchdog timer counter clears and restarts */
        }

        PWM_stop();                                                /* Operation Stop */

}

sophie0403 发表于 2011-6-15 14:31:07

程序里先手动将 TMIF00=1,看能不能进中断
能进,定时器或中断设置有问题
不能进,中断函数写的有问题
页: [1]
查看完整版本: 程序进不去中断 求指教