标题: 单片机定时器为什么需要两次重装初值? [打印本页]

作者: 51_users    时间: 2020-10-17 10:47
标题: 单片机定时器为什么需要两次重装初值?
关于51单片机定时器的问题,初始化一次,中断函数一次。请教。

16029027678904734684870789470607.jpg (654.54 KB, 下载次数: 78)

16029027678904734684870789470607.jpg

16029027921572151485092670365269.jpg (746.51 KB, 下载次数: 66)

16029027921572151485092670365269.jpg

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

这个定时器, 就是同样道理, 每次漏完 就要去给值.   而第一次, 是不是也要给值的啊





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1