• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

C51定时器与中断序号不对应

928352395915 2016-12-06 浏览量:554
STC90C516RD+
开发板
main()程序中开定时器T0中断写的是:
        TMOD=0x01;
        TH0=0x3c;
        TL0=0xb0;
        EA=1;
        ET0=1;
        TR0=1;

中断函数写void T0_Timer() interrupt 1,程序正常执行,
中断函数写void T0_Timer() interrupt 3,程序也正常执行。
T0对应的中断号不是1吗?为什么写void T0_Timer() interrupt 3,程序也能正常执行?
谢谢。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
其他答案 数量:2

  • 不知道楼主说的程序能正常执行是指什么?指的是main函数执行还是定时器中断函数里面的代码被执行了?

    如果说:

    void T0_Timer() interrupt 3

    {

       x++;

    }

    中的x++;​代码被执行了,应该不太可能吧?我这个用板子测试了一下是不行的:


    这样是能执行:

    /* Timer0 interrupt routine */
    void tm0_isr() interrupt 1 using 1
    {
        P10 = ! P10;
    }
    ​这样是不能执行的:

    /* Timer0 interrupt routine */
    void tm0_isr() interrupt 3 using 1
    {
        P10 = ! P10;
    }


    只要不是void T0_Timer() interrupt 3 这个函数中​的其他函数是不会受影响的。

    • 发布于2016-12-06
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

C51定时器与中断序号不对应