本帖最后由 我是土匪 于 2010-12-8 17:30 编辑
PIC12F510,定时器定时50ms,无中断模式
定时50ms,4M内部晶振,不分频,计算如下:
(255-5)*1*4/4=250US;循环200次 就实现50ms定时
配置如下:
__CONFIG(0XFFC2); //4M
OPTION=0x088; //打开定时器;不设置预分频器;
定时50ms代码:
TMR0 = 5; //定时器赋初值
while(!flag) //等待50ms时间到
{
if(TMR0 == 255) //溢出一次
{
TMR0=5; //定时器重新赋初值
intnum++;
if(intnum==1648) //50ms = 250US * 200次,但实际200次才5ms左右,要循环1648次才能达到50ms
{
flag=1;
}
}
此外我调整TMR0=5; 的装载初值,定时时间没有变化。
问题,我的定时算法有问题吗,为什么我计算循环200次,而实际却接近2000次?为什么调正装载的初值会有问题?? |