_奶咖君_
发表于 2024-1-5 17:13:34
LAOXU 发表于 2024-1-5 15:31
你要区分定时器, 是设置成手动装载 ? 还是自动装载 模式 ?
手动装载更改立刻生效 .自动装载 要到 定 ...
第一个视频中有 我的定时器的初始化函数,,使用的定时器0的16位不重装载模式,,
您说的手动装载是什么模式?
_奶咖君_
发表于 2024-1-5 17:14:15
LAOXU 发表于 2024-1-5 15:31
你要区分定时器, 是设置成手动装载 ? 还是自动装载 模式 ?
手动装载更改立刻生效 .自动装载 要到 定 ...
您可以再看看我录下来的视频。。。
_奶咖君_
发表于 2024-1-5 17:19:47
LAOXU 发表于 2024-1-5 15:31
你要区分定时器, 是设置成手动装载 ? 还是自动装载 模式 ?
手动装载更改立刻生效 .自动装载 要到 定 ...
如果您说的手动装载 就是 不自动重装载模式的话,,,我这里测试的结果是如果在TR0在开启的状况下 是不会改变TL0与TH0,和您的 更该立刻生效这个结论冲突,,故 可能我的条件错误,手动装载模式 不是 不自动重装载模式。
还能进一步解释解释么
LAOXU
发表于 2024-1-6 06:57:36
_奶咖君_ 发表于 2024-1-5 17:19
如果您说的手动装载 就是 不自动重装载模式的话,,,我这里测试的结果是如果在TR0在开启的状况下 是不 ...
自动重载, 是 定时时间到 , 立刻置位定时时间到中断标志, 同时也重装定时器, 哪怕中断级别低响应延迟, 或者中断暂时关闭, 也是如此操作.
手动装载(非自动重装), 定时时间到 (计时从 FFFF 到 0), 立刻置位定时时间到中断标志, 继续计数(即你所理解的 从 0 开始计数), 可随时手动更新(装载) TH0,TL0,至于 手动装载不了 (即TR0置位, 无法更新) TH0, TL0 , 则只能证明, STC 的定时器, 与传统的 8051 不兼容.
LAOXU
发表于 2024-1-6 07:02:35
如果 定时器0 ,设置成的16位不重装载模式(手动装载),
在TR0置位, 无法更新 TH0, TL0 , 那应该是STC 的定时器 的 BUG, 与传统 8051 不兼容.
_奶咖君_
发表于 2024-1-6 08:42:01
LAOXU 发表于 2024-1-6 07:02
如果 定时器0 ,设置成的16位不重装载模式(手动装载),
在TR0置位, 无法更新 TH0, TL0 , 那应该是STC...
嗨,,这把也不能算是bug吧,只能说是stc对传统c51的发展把{:4_187:}
_奶咖君_
发表于 2024-1-6 09:06:05
本帖最后由 _奶咖君_ 于 2024-1-6 17:25 编辑
好了 可以总结一下了:
1.楼主的问题,对于STC的单片机,只要是 对应定时器的运行控制位(例如TR0。。。)在开启的状态下,定时器就会一直计数。从3#和回答和我17#与18#的调试视频中也可以看得出计数是一直运行的。
2.自动重装载模式与不自动重装载模式这两种模式对于计数值的影响就是在发生上溢(PS:这五个定时器都是向上计数,不会发生下溢。。)时,
自动模式下THn TLn,会重新装载成内部的重载寄存器的值;
不自动模式下THn TLn 会从0开始计数;
第2点的这些均可以在手册中找到对应描述。
3.不关闭对应定时器的运行控制位时,不能对计数值进行装载或者叫更新。
那么我认为我在13#中贴出软件中的定时器计算器中对于不自动重装载模式下,在中断中直接对计数寄存器赋值的语句,可能在某一些老旧型号上类似传统8051单片机上可用。对于新的STC单片机上不可用是无效的。。这个可能需要姚总来说明一下了,如果确实是上述猜想,最好是能在代码中注释一下,或者干脆把现代的STC单片机和8051的代码区分出来。
Matrix
发表于 2024-11-11 10:30:34
{:4_165:}{:4_165:}
bkeuqoaq
发表于 2024-11-12 11:01:44
会计时,只要不关TRx,与中断是否没有关系,如果停止,定时没法保证精准,失去意义了