51单片机定时器不准是为什么。晶振12M,程序是定时器中断定时,

同样的程序,设置是8秒进行下一个动作的,有时候是7秒,有时候是3秒,有时候是一瞬间啊!!程序都没下载过,运行起来单片机自己在变时间啊!!

求高手帮助!

确定你的代码没问题,定时器设置时正确的再考虑其他问题,,如果是晶振不准不会误差这么大的
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-15
晶振和程序的问题!
第2个回答  2012-11-15
受到干扰
第3个回答  2012-11-15
程序呢,看看。

51单片机定时器2的最短定时时间怎么有限制?
如果 超过定时器 定时时间,则来不及 处理 定时也就不准确了。用 C 语言编程,有可能 定时时间 过短 会有问题,有不好 计算中断用去多少时间。如果用 汇编语言 编程,晶振是12MHZ、12分频,只是产生一个方波信号,30KHz 频率没有问题。当然你要检测 准确性 加入计数程序后 会占用时间,一般编程时...

51单片机用定时器输出1HZ方波 为什么我的程序仿真以后io口狂闪 并...
你的if语句后多加了一个分号,所以单片机一个while循环就一直在执行led=~led,所以io就狂闪

51单片机定时器初值用变量设置定时不准确,为什么,求高手。TH0=(65536...
晶振12M TH0=(65536-1000)%256; TL0=(65536-1000)%256; 这种定时方式是准确的但是如果我用变量 x=1000; TH0=(65536-x)%256; TL0=(65536-x)%256; 定时时间就不对了,这是不是正常现象,还是我程序有问题,全部如下 #include <reg52.h> #define ucha... 展开 刚铎的哨子 | 浏览3020 次 |举报 我有更...

51单片机为什么要用12M的晶振?
首先需要明确:51单片机不是一定要用12M的晶振,11.05925M也行,18M也行,即一般来说35M以内的无源晶振(两脚的)都可以的。为什么常见的51单片机要用12M的晶振,是因为我们常说的51单片机是12分频的,如果选用12M晶振,如果是单指令周期的语句,刚好是1us,其他语句好似1us的整数倍,这样计算指令时间很...

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...

用什么方法可以提高C51电子钟的精度
加一个时钟芯片如:DS1302之类的

51单片机做电子时钟,为什么会比实际时间慢呢?
这个问题是这样的,这可能是因为你的单片机晶振的原因,如果是12MHz的话,中断值设置为3CB0,意味着50ms中断一次,if(t50mscnt==20)就可以实现1s的变化,前提是外部晶振频率为12MHz,你检查看看你的晶振频率为多少吧!

关于51单片机定时器问题
第三,按12MHz 晶振计算,定时器为 50ms 中断,程序 的内容 是 1s 数码管 更新一个数0-F,1s 流动 一个 LED灯,一个周期 是 8s 而不是 1s。想要 周期为 1s 的话,定时器的时间应该 是 125ms,一次性 都 定时不到,就只能是 定时 25ms,分5次,为一 颗灯 的时间,40次 为一个数码...

51单片机计时器溢出中断是什么意思?
1、系统晶振频率是12M,则机器周期=12/12=1us;2、定时1ms=1*1000=1000us;3、工作在方式0下:最大计数值是2^13=8192;4、定时初值=8192-(1*1000)=7192;5、换算成十六进制数为:定时初值=1C18H。定时器中断是由单片机中的定时器溢出引起的中断,51单片机中有两个定时器t0和t1。

51单片机问题,晶振频率为12mhz,请问我的以下代码能够成功定时1秒吗?谢谢...
程序有错误,将一个16位数据送给一个8位的定时器TH0,编译都通不过。而且初始化是启动了定时器中断,但程序却采用查询方式,也会造成错误的结果。

相似回答