51单片机程序定时器怎么这么不准确啊,求高手指点!
这是编译器造成的,你最好用Debug模式看看生成的汇编代码是什么摸样,比较一下你那三种方 式给TH0和TL0赋的是什么样的值。这是我试验的结果:4: TH0=-780\/256;C:0x0003 758CFD MOV TH0(0x8C),#0xFD 5: TL0=-780%256;C:0x0006 758AF4 MOV TL0(0x8A),#0xF4...
51单片机做电子时钟,为什么会比实际时间慢呢?
这个问题是这样的,这可能是因为你的单片机晶振的原因,如果是12MHz的话,中断值设置为3CB0,意味着50ms中断一次,if(t50mscnt==20)就可以实现1s的变化,前提是外部晶振频率为12MHz,你检查看看你的晶振频率为多少吧!
为什么51单片机定时器计数值取出来之后会比初值还小
你说的情况可能定时中断函数中没有重装初值或者干脆没有响应定时中断,所以造成计数值小于初值。这种情况有个前提,就是外部中断的产生没有人为干预,原因见下面。2、鉴于你每次读出的都是48,外部中断产生应该是自动的(很有规律),如果不是这样,比如说是手动产生外部中断或者说需要人为控制产生外部中断,...
51单片机定时器初值用变量设置定时不准确,为什么,求高手。TH0=(65536...
看一下C代码编译后的汇编代码就知道了,用变量方式很耗时,而直接用数字,编译器已经将算式的值算好了,代码里就是一个MOV指令而已,只需1us!!!TH0=(65536-2000)\/256; TL0=(65536-2000)%256;汇编后,只要2us就完事了。 而用变量方式,单片机很忙,计算几十乃至上百微妙才完事!15: TH0...
关于51单片机定时器的问题。我用郭天祥的51学习班做了一个电子表,发现...
0592的晶振要比12M的快,但是加上中断跳转指令执行的时间,还有中断执行的时间加在一起就慢了很多,要试着减掉这些时间,我得经验值是:中断不要很多,多了不是更增加执行时间了吗?我做时钟都是用最大的计时时间来减少中断插入的影响,这里用50ms,再减掉5毫秒就基本上差不多了。
单片机定时器做的时钟,定时不准。
单片机定时器做时钟,确切的说在环境温度变化不大的前提下,可以调整的很准,毕竟它是基于MHz级的晶振的,提两点建议,1】建议使用12MHz晶振;2】请注意对于不同的编程,定时器赋值时,如果需要50ms定时则绝不一定是赋值50000,也不一定是循环20次就是1S;你琢磨下这里的道理,你就明白了,具体方法是...
为什么单片机定时不准???
理论上没错。但是,定时10us,时间太短了。中断、返回,重新装入初始值,期间还要把一个变量加一,压栈...C语言,10us不够用的。汇编速度快,10us也未必够。根本没有时间去检测 if(Time10usFlag>=12) ,单片机净顾着忙活中断了。
51单片机的定时器的时间怎么算??
51单片机1个机器周期=12个时钟周期,频率为12MHZ,则一个机器周期为1US,具体到定时器程序就是,假如你想定1MS,那么单片机每次加一个一,就要过1US,那么1MS就要加1000次,所以用65535-1000=64535;再把64535换成16进制为FC17,把FC付给TH0,17给TLO,即可定时1MS,因为65535他就溢出进入中断。
51单片机定时器2的最短定时时间怎么有限制?
51单片机定时器,晶振是12MHZ、12分频,理论上最短定时时间1微秒,但是,CPU 运行指令 需要时间,只要中断服务程序 的运行时间 不超过定时器 定时时间,并且 有些余量,则就不成问题,如果没有余量,则中断结束 又进入 中断,如果 超过定时器 定时时间,则来不及 处理 定时也就不准确了。用 C 语言...
单片机语音闹钟误差分析
1. 单片机时钟源的精度误差。单片机的时钟源是其运行的核心,其精度直接影响计时准确性。如果时钟源的精度不高,就会导致计时误差。此外,单片机的时钟源易受温度和电源的影响,如果条件不稳定,也会影响计时准确性。单片机时钟源的精度误差分析:单片机内部使用的振荡器可能受到制造工艺和材料的影响,使得其...