哈哈哈, 第一次, 你可以不用, 就影响开机上电第一次的时间, 后面 ,就好比 一桶水, 慢慢漏, 漏的时间就是你定时时间, 等漏完的时候, 你是不是有要加满 ? 这个定时器, 就是同样道理, 每次漏完 就要去给值. 而第一次, 是不是也要给值的啊 |
因为TH, TL在你定时器启动后,就已经自动计数到0进入中断了,此时TH, TL的值已经是0了,所以要重装。除非你用定时器的模式2,自动重装,每次定时器都按照你的初始赋值进行自动重装。 |
单片机系统上电的时候 初始化一次 然后等定时到了,进了中断,再次进行重装载,重新定时,这个模式不i是自动重装载模式噢朋友 |
一个是初始化,一个是重装载 |
因为初始化之后在定时器进入中断时,如果没有再次设置初值,定时器会自动默认初值为0,除了定时器的方式2,因为有自动重装载,不用另外赋初值。 |
因为这样才能精确定时,否则定时器溢出后产生中断,然后进入中断函数,由于函数中没有对定时器设置初值,此时定时器默认高低位初值都为0,重新进行计时 ,当然也有例外,比如方式2,只需要在主函数中装一次初值,然后中断函数中就不用再装初值了,其他几个方式都需要在中断函数中重新载入初值。 |
是因为51的定时器四种方式中,只有方式2是自动重装载初值(THX里面的初值会赋予给TLX),其他的都在中断后需要重新装载初值 |
初始化:定义初值,没有定义就TH=TL=65536 中断函数:每次执行中断就重定义初值一次,要是设置自动重装就不用设置,没有定义就TH=TL=65536 |