定时器和串口

定时器:

 

定时器学习关键一步,就是能够看明白下面 定时器模式0的框架图。

如果你正真理解了这个框架图,那么定时器、计数器,甚至串口的波特率设定,都不在话下。

那么就一定要耐着心思,把这个框框图看明白!

 

 

上面标识出来了两部分。

定时器各种模式,

模块1这部分,控制是相同的;

模块2这部分,就是要根据是13/16/8位计数的不同,采用不同的公式计算即可。

 

模块一,对应的控制寄存器主要有两个。

TMOD :

D7 D6 D5 D4 D3 D2 D1 D0
GATE C/~T M1 M0 GATE C/~T M1 M0
T1方式字段 T0方式字段

 

TCON:

D7 D6 D5 D4 D3 D2 D1 D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
T1溢出标识 T1运行控制 T0溢出标识 T0运行控制 T1中断申请标志位   同IE1 同IT1
IT1说明:IT1=0时,对应中断在每个机器周期(S5P2)采样~INT1为低电平时,则至IE1为1.响应中断后,该位由硬件清零。IT1=1时,为~INT1由高电平到低电平变化时,才触发中断IE1

 

简单识别一下上个框框图中一部分,如下:

由上图逻辑关系可知,GATE位如果为0(注意:GATE位后有一个“非门”),则经过 “或门” 输出后,输出点一定为 1;而且该输出点位,不再受INT(外部中断脚位)控制。也就说明,GATE为0时,一定是作为 定时器 而 非计数器用的。

TR位,只有为1,后端定时、计数功能才会起作用。如果TR为0,则通过框框图可知,定时/计数功能,已关闭了。

 

其他位,实际都比较好理解。如:C/~T / IE / IT / TF,不过要要注意下 IT位选择,IT位控制了 中断触发模式,IT=0 时,为低电平触发;IT=1时,为电平高→低变化时触发中断。

 

模块2:

该部分只提供一个模式0的公式,实际上这部分就是一个算数的问题。

CusTimeLen = (2(13/16/8次方) - X)*12/晶振频率

值得说明的是 模式0 13位计数时,寄存器的设定要注意移位。

例如:

X = 0x1E0C

那么TH0 = 0xF0(0x1e<<3)

TL0 = 0x0C

因为 模式0 , THX 低五位 溢出后,便进位。因此,计算出结果后,要讲高8位,左移三位后,得到THx的值。

 

 

串口:

控制寄存器如下:SCON

D7 D6 D5 D4 D3 D2 D1 D0
SM0 SM1 SM2 REN TB8 RB8 TI RI
模式设定:0,1,2,3 在模式2,3中,当SM2=1时,则RB8,即接收到的第9位为0时(即接收的为数据时),不触发RI,串口读中断。这一点,为多机通讯提供了可能,如果有多个“子机”,只有“主机”端,接收到了RB8为1时,才会主动去开启RI,等待数据传过来。 接收控制 方式2,3中使用。TB8可作为奇偶校验位;或“地址(1)”和“数据(0)”的识别位。TB8和RB8是相互的 发送中断标记 接收中断标记

波特率 = 2(SMOD)/32*定时器1的溢出率。

定时器1的溢出率,可通过第一部分定时器说明设定即可。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值