打印

关于典型51单片机的定时器2的问题、

[复制链接]
2509|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlsbz|  楼主 | 2010-1-22 15:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
典型51的定时器2的工作方式有 16位自动重装入  16位捕获  波特率发生器。

(注:若将寄存器设置为自动重装入方式,然后将RCAP2L和RCAP2H赋值给寄存器,就实现了自动装入。)

我现在要用定时器2实现手动装入,请问能实现么?

我现在的做法是:将寄存器设置为自动重装入方式,然后将TIML和TIMH赋值给寄存器,就实现了手动装入。请问我这种方法对否?

相关帖子

沙发
smileagain| | 2010-1-22 21:35 | 只看该作者
手头没有52的书,凭**回答一下吧
你这样做应该是不行的,当你设置T2为16位自动重装后,不管你是否手动对R2CAPL/H赋值,到T2溢出时都会发生重装。此时不管R2CAPL/H中的值是多少(总会有个值吧),都会被装进T2

使用特权

评论回复
板凳
xlsbz|  楼主 | 2010-1-22 21:50 | 只看该作者
手头没有52的书,凭**回答一下吧
你这样做应该是不行的,当你设置T2为16位自动重装后,不管你是否手动对R2CAPL/H赋值,到T2溢出时都会发生重装。此时不管R2CAPL/H中的值是多少(总会有个值吧),都会被装进T2 ...
smileagain 发表于 2010-1-22 21:35


恩,R2CAPL/H是有个值,这个值是0.

所以是会被重装的。

但是我手动装的值大于0。所以即使被自动重装了0也无所谓。

使用特权

评论回复
地板
xwj| | 2010-1-22 22:19 | 只看该作者
可以的,不过属于非典应用,也会有些弊端,应该慎重。

对于51,由于必须执行完当前指令才会进入中断,而51的不同指令 指令周期有时不一样的,所以进入中断所需的时间是不确定的。
所以如果再手动重载而不加上当前值的话,则会造成中断间隔不一致(有1~4个周期的误差),自动重载的优势就完全丢了。

使用特权

评论回复
5
xwj| | 2010-1-22 22:34 | 只看该作者
至于LZ说的:
将寄存器设置为自动重装入方式,然后将TIML和TIMH赋值给寄存器,就实现了手动装入。

——你这个做法(说法)是不对的,自动重载的行为是每次TH2、TL2计数溢出时(从0xffff翻转到0x00时)硬件自动把R2CAPL/H中的数值拷贝到TL2/TH2中,而不是相反。所以自动重载时只要修改一次R2CAPL/H的值,以后每次TL2/TH2溢出都会去从R2CAPL/H中复制数值。而“手动重载”的话当然是自己修改TL2/TH2才叫“手动重载”。

当然,R2CAPL/H中的值也是可以人为的修改它的,以获得不同的定时周期。

使用特权

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

本版积分规则

190

主题

1614

帖子

4

粉丝