jssd 发表于 2009-5-30 17:09:25

关于NEC中断的小问题,高手进来帮帮忙看看.谢谢

#defineuintunsigned int
#pragma interrupt INTTM50 timer50   /*TIMER50*/

#pragma sfr
#pragma EI
#pragma DI
#pragma halt
#pragma nop

#define        __EI()                EI()
#define        __DI()                DI()
void initial(void);

void main(void)
{
        initial();
        for(;;)
        {
                WDTE = 0xAC;
        }
}

/***********************************************************/
void initial(void)
{       
        uint        i;
       
        for(i = 0; i < 1000; i++);
        P4 = 0xF0;
        PU4 = 0x00;
        PM4 = 0x00;        // 0--output1--input
               
        TMC00 = 0x06;   // T00Free-running mode
        CRC00 = 0x01;
        TOC00 = 0x00;
        PRM00 = 0x01;                // count clock 2MHz                0.5us/1
        CR010 = 20000;   
        CR000 = 20000;
       
        TMC50 = 0x00;                // clr TM50
        TCL50 = 0x05;                // 8us/1
        CR50 = 125;// - 1;                // 1ms
        TMC50 = 0x80;                // start TM50
       
        PCC = 0x00;
        MOC = 0x00;
        OSTS = 0x03;
       
       
        // 0--permit   1---not permit
        MK0L = 0xF9;        // PMK1PMK0
        MK0H = 0x1F;        // TMMK010TMMK000TMMK50
       
        EI();
}

/*************** interrupt service routines **************/
__interrupt void timer50(void)                        // 1ms
{
        IF0H &= 0xDF;
        P4.1=~P4.1;
}
编译下载都通过了,不知道为什么运行的时候会崩溃,好像就是进入中断一次就再也没进入了.也回不到main的主程序里去.死掉了.高手看看..谢谢

jackiezeng 发表于 2009-5-30 23:25:37

你再搞个LED,来测试一下死机的地方!估计不应该是死掉了,

XIE2099 发表于 2009-5-31 02:35:26

void main(void)
{
      WDTE = 0xAC;
      while(1);
    {
      initial();
    }
      

}

不知道这样可以吗?

jssd 发表于 2009-6-1 10:30:04

搞定啦.原来是       
      MK0L = 0xF9;      // PMK1PMK0
      MK0H = 0x1F;      // TMMK010TMMK000TMMK50
这里开了几个中断,我现在用的只有一个,改成
MK0L = 0xFF;       
MK0H = 0xDF;        // TMMK50
只开一个50就好了.

jssd 发表于 2009-6-1 10:32:21

谢谢楼上两位热心人
页: [1]
查看完整版本: 关于NEC中断的小问题,高手进来帮帮忙看看.谢谢