STC15 串口(工作方式1)使用小结

这里暂且不说其他工作方式,以后有时间补上。仅总结下STC15串口工作方式1的一些注意点。

串口1

setp1 波特率发生器:

  T2定时器(默认)、T1定时器: 设置位:S1ST2(AUXR.0),1--T2,0--T1,此位复位值为1。

    12T模式(默认):通过T2x12(AUXR.2),T1x12(AUXR.6)位确定,0--12T模式,1--1T模式;这两位复位值位0。

            (这里可能有点模糊, 解释一下:所谓1T模式就是T1X12位置1,相当于T1速度提高12倍,原来计数加1需要12T,现在只需要1T)

    16位自动重装(默认):即T1定时器工作方式0,STC15这里是自动重装的。T2的不用设置TCON,固定为16位自动重装。

      8位自动重装(可选):如果用8位重装,只能通过S1ST2位选择T1定时器。然后把T1定时器设置为工作方式2。为了与传统8051程序兼容

setp2 设置波特率:

  这一步用T2定时器来说明,T1定时器的设置方法与其完全相同。

  情况1:16位重装模式下

    波特率 = T2溢出率 / 4

      其中,T2溢出率 = 1 / 溢出周期 = 1 / ( 时钟周期 * 计数次数 ) = Fosc / 计数次数 ;

    则

      计数次数 = Fosc / 波特率 / 4

      [T2H,T2L] = ( 65536 - 计数次数 ) = 65536 - Fosc / 波特率 / 4

    (Fosc是晶振频率,如果T2定时器工作在12T模式下Fosc需除以12)

  注意:STC15的16位重装计数波特率和SMOD无关,与传统51不同 ,如果用T1的8位重装计数的话与传统51计算方法是一样的。

  情况2 :8位自动重装计数

    与传统的相同: 波特率 = ( 2^smod / 32 ) * Fosc / ( 256 - TH1 )

setp3 设置串口模式启动串口

  串口模式工作方式1 设置SCON为0x40

  开启定时器2:T2R(AUXR.4)置1

  关闭定时器2中断允许:ET2(IE2.2)置0

  定时器1的不多讲了

 

 

示例:串口1,晶振为FOSC,波特率为BAUD,定时器用定时器1

 

AUXR |= 0x40;
AUXR &= ~0x01;
TMOD &= ~0xF0;

SCON = 0x40;
TL1 = (65536 - (FOSC/4/BAUD));
TH1 = (65536 - (FOSC/4/BAUD))>>8;
TR1 = 1;
ET1 = 0;
ES = 1;
REN=1;

posted @ 2015-02-19 15:51  cntsw  阅读(7584)  评论(0编辑  收藏  举报