标题:
定时器中断问题
[打印本页]
作者:
finewind
时间:
2010-5-21 12:51
标题:
定时器中断问题
我用的芯片是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的也被清除了。
大家有没有遇到相同的问题?是怎么解决的?
作者:
finewind
时间:
2010-5-24 13:33
搞定了,芯片手册说,清除定时器中断时不能用位指令和逻辑指令之类的装载-修改-存储指令,而应该直接向寄存器写值,即不能用PITTF_PTF0 = 1
ITTF |= 0x01;这样的指令,而应该直接用PITTF = 0x01;
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0