从数据手册上看,Timer1的T1STAT寄存器的OVFIF位,在free-running和module模式下,计数溢出时都会导致OVFIF置位,在以下程序中:
T1CNTL=0;
T1CC0L = 4;
T1CC0H = 0;
T1CTL=0x9;
while(!(T1STAT & 0x20)); 这时可以跳出循环,即:OVFIF 有置位,
而改为: T1CTL=0xa; 时,就无法跳出循环, 即:OVFIF 无置位, 可以看见T1CNTL的值从0变为4,再变为0,但OVFIF始终不置位,这时为何?
Yan:
Hi qing,
T1CCTL0 的第 6 位, timer 1 的 channel 0 的中断mask,
IEN0 第 7 位, 系统中断使能,
IEN1 第 1 位, timer 1 中断使能,
上述几个地方请确认一下.
另外, 请再试一下T1CTL 配置其他几种分频模式是否有问题?
qing chen1:
回复 Yan:
Hi, Yan,
我并不要中断,所以中断是屏蔽的,没有开放,但是Timer1计数溢出后,我认为就应该置位状态寄存器T1STAT的OVFIF位,无论中断开放与否,
qing chen1:
回复 Yan:
测试了全部的分频和模式,free-running和up-down模式都可以置位OVFIF,就是modulo模式何种分频都无法置位,这是为何?