打印
[国产单片机]

关于STC12C单片机定时器1用作波特率发生器时的启动相关疑问

[复制链接]
2682|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shuiketu|  楼主 | 2013-11-17 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于STC12C5A60S2单片机,我打算使用Timer1作为波特率发生器,Timer0用作2个8bit定时器,手册上说,在此种方案下,Timer0的TH0对应的8bit定时器使用Timer1的控制位TR1。但是要启动作为波特率发生器的Timer1还是需要使用TR1位,这岂不与Timer0的TH0对应的8bit定时器的控制产生冲突?  (PS:说实话,STC的手册的排版实在是。。。我在Timer和UART章节来回切换,也没有找到一个相关的明确说明)

相关帖子

沙发
369794732| | 2013-11-17 11:27 | 只看该作者
你需要2个定时器,timer0和timer1就是2个定时器了,uart的波特率可以用STC12C5A60S2独立波特率发生器产生。

使用特权

评论回复
板凳
369794732| | 2013-11-17 11:50 | 只看该作者
你要用timer0作为2个8bit定时器,那timer1就不能用了,这不是冲突,这个单片机就是这样做的,没法。只要你想用到2个定时器(不论是用timer0作为2个8bit定时器,还是用timer0和timer1),还要用uart的话,那就必须要使用到独立波特率发生器。

使用特权

评论回复
地板
shuiketu|  楼主 | 2013-11-17 12:02 | 只看该作者
369794732 发表于 2013-11-17 11:50
你要用timer0作为2个8bit定时器,那timer1就不能用了,这不是冲突,这个单片机就是这样做的,没法。只要你 ...

可是芯片手册P238页中说,当Timer1用作波特率发生器时,Timer0可以作为2个8bit定时器用啊?

使用特权

评论回复
5
369794732| | 2013-11-17 13:06 | 只看该作者
shuiketu 发表于 2013-11-17 12:02
可是芯片手册P238页中说,当Timer1用作波特率发生器时,Timer0可以作为2个8bit定时器用啊? ...

仔细看了下,是这样说的。一般没这样用,楼主可以尝试一下。timer1作为波特率发生器时,没有使用到TR1,这应该就是PDF上说的timer0的TH0限定为定时器功能时占用TR1及TF1的原因吧。

使用特权

评论回复
6
shuiketu|  楼主 | 2013-11-17 13:47 | 只看该作者
369794732 发表于 2013-11-17 13:06
仔细看了下,是这样说的。一般没这样用,楼主可以尝试一下。timer1作为波特率发生器时,没有使用到TR1, ...

  其实我是看了STC手册中UART的参考代码,其中用Timer1做波特率发生器,并使用“TR1 = 1;”来启动的Timer1,才产生了此疑问。
  因为我需要使用两个UART,并且要求它们之间的波特率能够独立设置,才使用的Timer1作为UART1的波特率发生器,而且还需要两个定时器进行不同时长的定时,来对通讯的可靠性进行监控。

使用特权

评论回复
7
369794732| | 2013-11-17 14:07 | 只看该作者
369794732 发表于 2013-11-17 13:06
仔细看了下,是这样说的。一般没这样用,楼主可以尝试一下。timer1作为波特率发生器时,没有使用到TR1, ...

:L有使用TR1

使用特权

评论回复
8
369794732| | 2013-11-17 14:10 | 只看该作者
shuiketu 发表于 2013-11-17 13:47
其实我是看了STC手册中UART的参考代码,其中用Timer1做波特率发生器,并使用“TR1 = 1;”来启动的Time ...

那用一个定时器就可以了

使用特权

评论回复
9
shuiketu|  楼主 | 2013-11-17 15:12 | 只看该作者
369794732 发表于 2013-11-17 14:10
那用一个定时器就可以了

非常感谢解答,那我就将Timer0改作节拍定时器好了。:handshake

使用特权

评论回复
10
ayb_ice| | 2013-11-18 10:32 | 只看该作者
这种情况下T1自动启动,关不掉了

使用特权

评论回复
11
shuiketu|  楼主 | 2013-11-18 11:24 | 只看该作者
ayb_ice 发表于 2013-11-18 10:32
这种情况下T1自动启动,关不掉了

可是STC芯片手册中并没有提到Timer1用作波特率发生器时是自动启动啊? 手册中只有在寄存器AUXR中存在一个独立波特率发生器的启停控制位BRTR。而且在其UART参考代码中是通过“TR1=1;”软件启动的Timer1。

使用特权

评论回复
12
651927693| | 2013-11-21 01:00 | 只看该作者
我记得也是T0如果工作在工作方式2,是要占用T1的一些资源,比如这里的TR1。这时T1只能用作波特率发生器,且不能关闭。
况且,有必要关闭波特率发生器吗?

使用特权

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

本版积分规则

5

主题

38

帖子

0

粉丝