没有冲突啊。
两个中断到来的时间是不一样的。
1、虽然你让两个计时器计数时间相同。但由于你开计数器的时间不可能同一个时刻,只能是开一个,接着开一个,所以这两个计数器开始工作的时间是有差别的。
2、每个计数器中断里面执行的内容(代码)长度不一样,花的时间也不一样。因此,两个计数器申请中断的时刻,也不可能是同时的。换句话说,即使有可能是同一时刻申请中断,根据同一优先级中断的优先原则,先处理T0中断。当然,同一时刻两个计数器申请中断,这种概率……即使出现,对整个程序也不会造成很大的影响。因为,这次由于冲突,丢失了一次中断,那么下次出现冲突,都不知道要等到什么时候了!从宏观来说,对数码管显示的影响,甚至可以忽略了。
3、这两个中断,对主函数里面的display函数,也不会造成致命影响。因为两个中断中的代码都很短,占用的时间也很少(相对于数码管扫描来说)。因此不会造成人眼看数码管会闪烁等问题。
就算中断时间同时到,还有个默认优先级的,优先级高的中断会先进中断,然后才会进入下一个。所以你的担心完全是没必要的。
显示程序 是在主程序里。中断和主程序完全不冲突,没你说的那些问题。
num++; // 这里有些问题 是否应该是 num1++;
if(num1==4)
{
num1=0;
led1=~led1;
}