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

2019-07-15 12:26发布

本帖最后由 wzzjnb2006 于 2016-12-6 10:29 编辑

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,程序也能正常执行?
谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
linchenfeng
2019-07-15 16:37
你程序应该没有测试完整。interrupt 后面的数字是中断向量号,也就是说表明该中断是由什么引起的。  你测试完整应该会发现定时器的中断时间会错误。 看看单片机原理那本书,里面介绍了为什么对应中断要使用哪个号(数字),是有原因。 随意改变肯定对程序有影响。    当然,不排除编译器可能在这里有自动纠正,在编译的时候可能会自动修改。 毕竟中断向量号是固定了的。    最佳答案

一周热门 更多>