我用的芯片是MC9S12XDP512,开了定时器0和1,定时器0的定时时长20ms,定时器1定时器200ms,也就是说,定时器1产生中断的时候定时器0也刚好产生中断,调试发现,无法进入定时器1的中断程序,进一步调试发现,只要朝寄存器PITTF写任意一个数,PITTF所有标志位就被清除了,以下是我调试时加的测试代码:
void interrupt 66 PIT0_Int(void)
{
static byte count = 0;
static byte temp1,temp2;
temp1 = PITTF; // 记录中断标志
PITTF_PTF0 = 1; // 清中断标志
temp2 = PITTF; // 记录中断标志
count++;
if(count == 10)
{
for(;;); // 200ms时进入死循环
}
}
调试结果是: temp1 = 3,temp2 = 0; 即在清除定时器0的中断标志时,定时器1的也被清除了。
大家有没有遇到相同的问题?是怎么解决的? |