zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    个人破解汇总
    JavaScript学习中的挑战
    18个黑白配色网页设计
    正则表达式常用用法汇总 __西科大C语言
    JS正则表达式大全(整理详细且实用)
    印象最深的三个老师
    pbzip2
    集群接口机存储监控
    vue...扩展符报错
    框架mpvue创建一个小程序
  • 原文地址:https://www.cnblogs.com/cntsw/p/4296128.html
Copyright © 2011-2022 走看看