定时器和串口

来源:互联网 发布:cd音轨抓取软件 编辑:程序博客网 时间:2024/06/08 06:09

定时器:

 

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

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

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

 

 

上面标识出来了两部分。

定时器各种模式,

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

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

 

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

TMOD :

D7D6D5D4D3D2D1D0GATEC/~TM1M0GATEC/~TM1M0T1方式字段T0方式字段

 

TCON:

D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0T1溢出标识T1运行控制T0溢出标识T0运行控制T1中断申请标志位 同IE1同IT1IT1说明: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

D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI模式设定: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的溢出率,可通过第一部分定时器说明设定即可。