我感觉是你用了“using 0”而画蛇添足了。我印象中不同优先级的中断必须分配不同的工作寄存器组,你把两个外部中断都用了using 0,而你的计数器中断又不用using声明一般默认为寄存器组0,这样你三个中断都是寄存器组0,估计会出问题。一般“using 0”不写,交给编译器分配好一些。你把两个“using 0”删了看看。应该是这问题吧。
就粗略的看了下 你TMOD=0x10 就开了1个中断吧