C51定时器与中断序号不对应?
时间:10-02
整理:3721RD
点击:
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,程序也能正常执行?
谢谢。
你程序应该没有测试完整。interrupt 后面的数字是中断向量号,也就是说表明该中断是由什么引起的。 你测试完整应该会发现定时器的中断时间会错误。 看看单片机原理那本书,里面介绍了为什么对应中断要使用哪个号(数字),是有原因。 随意改变肯定对程序有影响。 当然,不排除编译器可能在这里有自动纠正,在编译的时候可能会自动修改。 毕竟中断向量号是固定了的。
感谢回复,再去重新测试一下。