打印

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

[复制链接]
3706|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,求解!

使用特权

评论回复
5
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
6
kaavie|  楼主 | 2013-12-10 11:51 | 只看该作者
上楼正解。

使用特权

评论回复
7
kaavie|  楼主 | 2013-12-10 18:03 | 只看该作者
接匹配电容陶振频率怎么变低这么多?

使用特权

评论回复
8
kaavie|  楼主 | 2013-12-13 09:43 | 只看该作者
24M陶振接到89C4051分别加30P电容,变成7M,去掉30P电容又恢复24M,各位高手,这有解吗?

使用特权

评论回复
9
kaavie|  楼主 | 2013-12-16 22:31 | 只看该作者
陶振加负载电容后频率慢到只有1/3左右,求高手解答。

使用特权

评论回复
10
kaavie|  楼主 | 2013-12-16 22:32 | 只看该作者
陶振加负载电容后频率慢到只有1/3左右,求高手解答。

使用特权

评论回复
11
xdata| | 2013-12-19 14:42 | 只看该作者
kaavie 发表于 2013-12-13 09:43
24M陶振接到89C4051分别加30P电容,变成7M,去掉30P电容又恢复24M,各位高手,这有解吗? ...

你是如何知道频率变成7M的???上测量图片和测量方法看看,另外电容用20p的瓷片电容或者贴片电容都行的

使用特权

评论回复
12
kaavie|  楼主 | 2013-12-21 15:28 | 只看该作者
测试是用示波器测试的。还没试20p的电容。

使用特权

评论回复
13
NE5532| | 2013-12-22 11:02 | 只看该作者
示波器探头有寄生电容,接到晶体上以后,振荡频率会发生变化,看你用的单片机的数据手册,有没有内部时钟输出功能,打开这个功能,从这个端口测频率,才是准的。

使用特权

评论回复
14
kaavie|  楼主 | 2013-12-27 09:16 | 只看该作者
本帖最后由 kaavie 于 2013-12-27 09:46 编辑

从示波器测试频率变小了,用其做定时器延时,预定的时间是实际时间的1/3,实际时间要长3倍,频率是一定会变低到1/3,没有分频器,频率变慢就是原因不知道。

使用特权

评论回复
15
kaavie|  楼主 | 2014-1-4 22:58 | 只看该作者
怪事到马年了,应该能解决吧,求高手。

使用特权

评论回复
16
NE5532| | 2014-1-4 23:33 | 只看该作者
就是啊,马年都到了,你验证的工作做到哪一步了?

使用特权

评论回复
17
kaavie|  楼主 | 2014-1-5 21:17 | 只看该作者
高手在哪???

使用特权

评论回复
18
NE5532| | 2014-1-6 09:17 | 只看该作者
kaavie 发表于 2014-1-5 21:17
高手在哪???

没有高手,只有一步一步验证的人。你读一读《程序调试黑宝书》就明白道理了。

使用特权

评论回复
19
huangxz| | 2014-1-6 23:11 | 只看该作者
楼主可以写个专题贴了;P

使用特权

评论回复
20
beechnut1221| | 2014-1-8 14:02 | 只看该作者
正解的昂

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

19

主题

124

帖子

1

粉丝