打印

恳请诸位前辈帮忙!!关于PIC18F2525定时器的问题?

[复制链接]
1402|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一克雪|  楼主 | 2014-1-4 22:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在用PIC18F2525做一个解码器,其中用到了Timer0的定时功能,选用Mplab C18编译器  选用20M的晶振
在一开始使用编译器内置函数
OpenTimer0( TIMER_INT_OFF&
                 T0_16BIT&
                 T0_SOURCE_INT&
                 T0_PS_1_1);
以及   ReadTimer0()还有WriteTimer0(0)函数 读写定时器

问题: 用上述方式设置定时器 用示波器观察RA0端口,代码如下
       if(ReadTimer==254)
           {
              PORTAbits.RA0=~(PORTAbits.RA0);
              WriteTimer0(0);
            }
示波器观察到电平跳变周期 不符合定时器的定时设定

之后不采用内置函数  直接对相关寄存器读写  同样无法得到准确的定时

这个问题困扰我很久,恳请大家帮忙思考一下!!
沙发
lnulibin| | 2014-1-5 19:31 | 只看该作者
本帖最后由 lnulibin 于 2014-1-5 19:32 编辑

ReadTimer==254
是一个点时间,持续时间大约就是一微秒左右,一微秒前ReadTimer=253,一微秒后ReadTimer=255而查询部分
if(ReadTimer==254)
           {
              PORTAbits.RA0=~(PORTAbits.RA0);
              WriteTimer0(0);
            }
必须非常频繁的查询,才有可能查询到定时器为该值。这种查询条件是有问题的。
最好时对定时器中断标志进行查询。
IF(中断标志==1)
{
。。。。。
}

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
一克雪 + 1 很给力!
板凳
一克雪|  楼主 | 2014-1-8 16:48 | 只看该作者
lnulibin 发表于 2014-1-5 19:31
ReadTimer==254
是一个点时间,持续时间大约就是一微秒左右,一微秒前ReadTimer=253,一微秒后ReadTimer=25 ...

嗯嗯,我试着去尝试一下

使用特权

评论回复
地板
一克雪|  楼主 | 2014-1-8 16:49 | 只看该作者
lnulibin 发表于 2014-1-5 19:31
ReadTimer==254
是一个点时间,持续时间大约就是一微秒左右,一微秒前ReadTimer=253,一微秒后ReadTimer=25 ...

嗯嗯,我试着去尝试一下

使用特权

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

本版积分规则

4

主题

17

帖子

0

粉丝