STC89C52开发学习(八)

STC89C52独有的T2定时器

和一般的51单片机相比较,52单片机多出一个T2定时器/计数器。定时器2是一个16位定时器/计数器,通过设置特殊功能寄存器T2CON中的C/T2位,可以将其设置位定时器或者是计数器模式;通过设置T2CON中的工作模式选择位可以将定时器2设为3种工作模式,分别是:捕获、自动重装载和波特率发生器(这里只对波特率发生器进行展开)

在这里插入图片描述

波特率发生器模式

寄存器T2CON中TCLK和RCLK位允许从定时器1或定时器2获得串行口发送和接收的波特率。当TCLK=0时,定时器1作为串行口发送波特率发生器;当TCLK=1时,定时器2作为串行口发送波特率发生器。RCLK对串行口接收波特率有同样的作用。

下面先看一下定时器2在波特率发生器模式下工作的逻辑结构:
在这里插入图片描述

看不懂上面的图?哈哈哈哈,不重要,只需要看得见在TH2,TL2下有两个寄存器RCAP2H,RCAP2L,他们的值由软件预置。直接对TH2,TL2进行重装载,看过前面定时器章节的应该会懂,只可意会不可言传。

波特率计算方式

模式3,也就是波特率发生器模式:
公式:
波特率=振荡器频率/32x[65536-(RCAP2H,RCAP2L)]

下面先看看初始化波特率115200的使用

void bote_115200()
{
	SCON = 0x50;//数据位8位,停止位1位,起始位1位怎么配!都要根据芯片手册来写 ,使能接收
	
	T2CON |= 0x1<<4 | 0x1<<5;  //TCLK = 1(TranmitCLock)   RCLK = 1
	TH2 = 0xFF;
	TL2 = 0xFD; 
	RCAP2H = 0xFF; //RCAP2*的值为TH*重载
  	RCAP2L = 0xFD;

	TR2 = 1; //启动定时器


	EA = 1;
	ES = 1;
}

常用的T2定时器作用就是用来设置波特率115200的串口通信

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值