打印

奇怪的问题

[复制链接]
1618|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wenzong|  楼主 | 2008-10-17 08:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想用TMR1内部时钟来做电子钟
具体做法如下:

主时钟:4M

#define        T1_Const    (.65536-.31250+.7)

程序每隔31.25ms产生一次中断

后给TMR1赋初值:

        bcf     PIR1,TMR1IF
        bcf        T1CON,TMR1ON
        movlw    low(T1_Const)
        addwf    TMR1L
        movlw    high(T1_Const)
        skpnc    
        addlw    .1
        addwf    TMR1H
        bsf      T1CON,TMR1ON 

        comf     PORTC   ;从C口输出脉冲

        。。。。。。

        请100M数字示波器测RC0,显示频率16.0000Hz

奇怪的是,只将31250改为6250,使程序每隔6.25ms产生一次中断

#define        T1_Const    (.65536-.6250+.7)

请100M数字示波器测RC0,显示频率79.9896Hz

怎么不为80.0000Hz?

沙发
wenzong|  楼主 | 2008-10-17 10:56 | 只看该作者

另外主程序不做任何事情,无别的中断

使用特权

评论回复
板凳
谈的元| | 2008-10-17 20:49 | 只看该作者

对头呀!怎么了,有一定误差呀

怎么可能那么理想?80?

使用特权

评论回复
地板
wenzong|  楼主 | 2008-10-17 20:58 | 只看该作者

请问误差来源在哪里?

请问误差来源在哪里?
测量误差吗?

谈的元 发表于 2008-10-17 20:49 PIC 单片机 ←返回版面    

3楼: 对头呀!怎么了,有一定误差呀 

怎么可能那么理想?80?
 
 

使用特权

评论回复
5
xieyuanbin| | 2008-10-18 08:15 | 只看该作者

这个必定有误差,关键你允许误差多少.

示波器本身也有测量误差,你可测一下示波器本身的1KHZ方波看看频率,你晶振,及振荡电路都会引起误差.即使原子钟,也有10年1秒的误差.搞不懂为啥这样书生.

使用特权

评论回复
6
wenzong|  楼主 | 2008-10-18 09:10 | 只看该作者

有误差,就有误差来源,误差不会凭空产生

问题是:

程序每隔31.25ms产生一次中断,输出16.0000Hz

理论上倍频4倍(因为只是修改了程序)

应该输出80.0000Hz(因为没有引入误差)


xieyuanbin 发表于 2008-10-18 08:15 PIC 单片机 ←返回版面    

5楼: 这个必定有误差,关键你允许误差多少. 

示波器本身也有测量误差,你可测一下示波器本身的1KHZ方波看看频率,你晶振,及振荡电路都会引起误差.即使原子钟,也有10年1秒的误差.搞不懂为啥这样书生.
 
 

 
 

使用特权

评论回复
7
zjh006| | 2008-10-18 10:03 | 只看该作者

主时钟:4M?

难道一点误差没有吗?

使用特权

评论回复
8
wenzong|  楼主 | 2008-10-18 13:35 | 只看该作者

跟主时钟频率没多大关系

跟主时钟频率没多大关系

可能是示波器测量误差造成的


程序每隔31.25ms产生一次中断,输出16.0000Hz

理论上倍频5倍(因为只是修改了程序)

应该输出80.0000Hz(因为没有引入误差)



zjh006 发表于 2008-10-18 10:03 PIC 单片机 ←返回版面    

7楼: 主时钟:4M? 

难道一点误差没有吗?

 
 

使用特权

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

本版积分规则

42

主题

158

帖子

1

粉丝