搜索
bottom↓
回复: 1

程序进不去中断 求指教

[复制链接]

出0入0汤圆

发表于 2011-6-13 15:29:57 | 显示全部楼层 |阅读模式
写的一个控制灯亮灭的程序,不起效果,求老手指点,用的是1213

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

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

void PWM_init(void)
{
/********    CPU  setting     ******/
        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) = fCLK  0.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 */

}

出0入0汤圆

发表于 2011-6-15 14:31:07 | 显示全部楼层
程序里先手动将 TMIF00=1,看能不能进中断
能进,定时器或中断设置有问题
不能进,中断函数写的有问题
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 18:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表