立即注册 登录
返回首页

uid:197415的个人空间

日志

STC15W系列MCU的串口1的简单设置

已有 5532 次阅读2017-8-24 14:03

以用户在程序中使用串口1和相关定时器T1为例:
1. 设置串口1 的工作模式,SCON 寄存器中的SM0SM1 两位决定了串口1 的4 种工作模式;

    SM0, SM1: 0,0 方式0 ---同步移位串行方式:移位寄存器

                       0,1 方式1 ---8位UART,波特率可变

                       1,0 方式2 ---9位UART

                       1,1 方式3 ---9位UART,波特率可变

2. 设置串口1 的波特率,使用定时器T1寄存器 T1H及T1L;

    当串行口1用定时器1作为其波特率发生器且定时器1工作于模式2(8位自动重装模式)时,

    Baud=(2^SMOD / 32)*Fosc/(12*(256-TH1))

    定时器1的工作模式: M1, M0 0,0---16位自动重装定时器,当溢出时将RLTH1和RLTL1存放的值自动重装入TH1和TL1中

                                                  0,1---16位不可重装载模式,TL1、TH1全用

                                                  1,0---8位自动重装载定时器,当溢出时将TH1存放的值自动重装入TL1

                                                  1,1---定时器/计数器1此时无效(停止计数)

3. 设置寄存器AUXR中的位S1ST2/AUXR.0T1x12/AUXR.6,确定定时器1作为串口1的波特率发生器以及速率是1T还是12T;

    S1ST2: 串口1(UART1)选择定时器2作波特率发生器的控制位
                0, 选择定时器1作为串口1(UART1)的波特率发生器;
                1, 选择定时器2作为串口1(UART1)的波特率发生器,此时定时器1得到释放,可以作为 独立定时器使用

    T1x12: 定时器1速度控制位
                0, 定时器1是传统8051速度,12分频;
                1, 定时器1的速度是传统8051的12倍,不分频

4. 启动定时器1,让TR1位为1,T1H/T1L定时器1寄存器就立即开始计数;

    TR1: 定时器T1的运行控制位。该位由软件置位和清零。当GATE(TMOD.7)=0,TR1=1时就允许T1开始 计数,

            TR1=0时禁止T1计数。 当GATE(TMOD.7)=1,TR1=1且INT1输入高电平时,才允许T1计数。
5. 设置串口1的中断优先级, 及打开中断相应的控制位是:PS,ES,EA;
6. 如要串口1接收,将REN置1即可, 如要串口1发送,将数据送入SBUF即可,接收完成标志RI,发送完成标志TI,要由软件清0;

例程如下:

/**************************通讯端口初始化****************************/
void CommInit()         //初始化串口
{
     AUXR &= ~0x01;      //串口1使用定时器T1
     AUXR &= ~(1<<6);   //定时器T1设置为1T的12分频模式

    TMOD=0x20;            //定时器T1使用工作方式2
    TH1=0xfd;               // 串口工作模式1下, 11.0592M晶振波特率计算: Baud=(2^SMOD / 32)*Fosc/(12*(256-X)), 其中Fosc=11059200
    TL1=0xfd;               //计算得到Baud=9600
    TR1=1;                   //开始计时   
    PCON=0x00;           //SMOD=0;
    SCON=0x50;           //串口工作模式1
    TI=1;                     //发送完成标志
    EA=1;                   //CPU开放中断
}





路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部