定时器时间不准,实际设置32ms,实际却为92ms

[复制链接]
4307|25
 楼主| kaavie 发表于 2013-12-9 15:41 | 显示全部楼层 |阅读模式
下面一段89C4051的单片机,上电复位,接24M陶振,陶振两脚匹配30p电容。
        ORG 00H
        AJMP START0       
        ORG 30H
               
START0:
        MOV R0,#10
        CPL P3.5
REP1:       
        ACALL TMC
        DJNZ R0,REP1
        JMP START0
TMC:
        MOV TMOD,#01H        ;设置定时器T0方式1
        MOV TH0,#00H        ;定时32ms
        MOV TL0,#00H
        SETB TR0
LOP5:
        JBC TF0,TMCE
        JMP LOP5
TMCE:
        CLR TR0
        RET
        END
实际定时32ms,但P3.5控制LED灯时,亮1s,灭1s,理论设置的为0.32s,但实际为1s左右,理论设置时间是实际时间的1/3,求解!
NE5532 发表于 2013-12-9 16:00 | 显示全部楼层
1.陶瓷振荡器的输出频率有没有测过是否准确?
2.预分频器怎么设置的?
3.这样“死等”定时器跟直接用语句写延时有虾米差别?

评分

参与人数 1威望 +1 收起 理由
kaavie + 1

查看全部评分

 楼主| kaavie 发表于 2013-12-9 16:15 | 显示全部楼层
1,陶振是24M频偏也不会到8M吧。
2,89C4051没有预分频器,PIC系列的一般有。
3,上面程序只是实际某一功能的部分,这种“死等”可以不浪费机器周期,也比较准。直接用语句是可以实现,现在用定时器出现这种问题望请帮忙。
 楼主| kaavie 发表于 2013-12-9 20:13 来自手机 | 显示全部楼层
实际定时32ms,但P3.5控制LED灯时,亮1s,灭1s,理论设置的为0.32s,但实际为1s左右,理论设置时间是实际时间的1/3或1/4,求解!
NE5532 发表于 2013-12-9 20:59 | 显示全部楼层
kaavie 发表于 2013-12-9 16:15
1,陶振是24M频偏也不会到8M吧。
2,89C4051没有预分频器,PIC系列的一般有。
3,上面程序只是实际某一功能 ...

不管24M会不会偏到8M,你都应该从源头开始,有根有据的检查你的设计,才能保证你的设计是正确的。

我20年的经验告诉我,越奇怪的问题,原因越低级,纠结在现象本身,无助于成长。

评分

参与人数 1威望 +2 收起 理由
kaavie + 2

查看全部评分

 楼主| kaavie 发表于 2013-12-10 11:51 | 显示全部楼层
上楼正解。
 楼主| kaavie 发表于 2013-12-10 18:03 | 显示全部楼层
接匹配电容陶振频率怎么变低这么多?
 楼主| kaavie 发表于 2013-12-13 09:43 | 显示全部楼层
24M陶振接到89C4051分别加30P电容,变成7M,去掉30P电容又恢复24M,各位高手,这有解吗?
 楼主| kaavie 发表于 2013-12-16 22:31 | 显示全部楼层
陶振加负载电容后频率慢到只有1/3左右,求高手解答。
 楼主| kaavie 发表于 2013-12-16 22:32 | 显示全部楼层
陶振加负载电容后频率慢到只有1/3左右,求高手解答。
xdata 发表于 2013-12-19 14:42 | 显示全部楼层
kaavie 发表于 2013-12-13 09:43
24M陶振接到89C4051分别加30P电容,变成7M,去掉30P电容又恢复24M,各位高手,这有解吗? ...

你是如何知道频率变成7M的???上测量图片和测量方法看看,另外电容用20p的瓷片电容或者贴片电容都行的
 楼主| kaavie 发表于 2013-12-21 15:28 | 显示全部楼层
测试是用示波器测试的。还没试20p的电容。
NE5532 发表于 2013-12-22 11:02 | 显示全部楼层
示波器探头有寄生电容,接到晶体上以后,振荡频率会发生变化,看你用的单片机的数据手册,有没有内部时钟输出功能,打开这个功能,从这个端口测频率,才是准的。
 楼主| kaavie 发表于 2013-12-27 09:16 | 显示全部楼层
本帖最后由 kaavie 于 2013-12-27 09:46 编辑

从示波器测试频率变小了,用其做定时器延时,预定的时间是实际时间的1/3,实际时间要长3倍,频率是一定会变低到1/3,没有分频器,频率变慢就是原因不知道。
 楼主| kaavie 发表于 2014-1-4 22:58 | 显示全部楼层
怪事到马年了,应该能解决吧,求高手。
NE5532 发表于 2014-1-4 23:33 | 显示全部楼层
就是啊,马年都到了,你验证的工作做到哪一步了?
 楼主| kaavie 发表于 2014-1-5 21:17 | 显示全部楼层
高手在哪???
NE5532 发表于 2014-1-6 09:17 | 显示全部楼层
kaavie 发表于 2014-1-5 21:17
高手在哪???

没有高手,只有一步一步验证的人。你读一读《程序调试黑宝书》就明白道理了。
huangxz 发表于 2014-1-6 23:11 | 显示全部楼层
楼主可以写个专题贴了;P
beechnut1221 发表于 2014-1-8 14:02 | 显示全部楼层
正解的昂
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:科技永无止境!

19

主题

124

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部