dumon 发表于 2024-6-13 09:41:17

楼主,你这个是定时10ms(0.01S)进一次中断程序,每累计100次*10ms达到1S定时。

根据手册上定时周期的计算公式,定时周期=((65536-)*12)/SYSclk,TM0PS=0,进行公式变换后,得到=65536-((定时周期*SYSclk)/12)。
将定时周期0.01S代入公式,得到=56320,换成十六进制为0xDC00。

按照楼主计算公式:
#define Timer0_Reload   (65536UL -(MAIN_Fosc / 1105))

Timer0_Reload =65536-(11059200/1105) = 65536-10008 = 55528,换成十六进制为0xD8E8


定时不准确的原因还是在于楼主计算自动重载值 计算方式错误导致时间有误差。
改成:#define Timer0_Reload   65536-((0.01*SYSclk)/12) 就可以了。

如果对于手册上定时器的内容不是特别掌握,建议直接去ISP工具的定时器计算器输入时间可以直接得到代码。

欢迎哈哈哈3 发表于 2024-6-14 09:43:18

好的,谢谢了{:4_269:}

欢迎哈哈哈3 发表于 2024-6-14 09:44:50

soma 发表于 2024-6-12 22:21
11059200,12T模式一个周期相当于1.085us。10ms=10000us,=9216周期。换算是dc00.你的算出来是e800. ...

好的,我改改,谢谢了

欢迎哈哈哈3 发表于 2024-6-14 09:45:10

qike009 发表于 2024-6-13 06:07
这个才是零误差

好的,谢谢了哦
页: 1 [2]
查看完整版本: 帮忙,我设置主时钟为11.0592M,12T模式,定时时间是不是1秒?