STC12C5A60S2双串口发送

发布者:SereneGardener最新更新时间:2022-07-04 来源: csdn关键字:STC12C5A60S2  双串口  发送 手机看文章 扫描二维码
随时随地手机看文章

#include <STC12C5A60S2.H>

#include "intrins.h"


#define FOSC 11059200L

#define BAUD 9600


#define S2RI 0x01; //串口2接收bit

#define S2TI 0x02; //串口2发送bit


void Delay500ms() //@11.0592MHz

{

    unsigned char i, j, k;


    i = 22;

    j = 3;

    k = 227;

    do

    {

        do

        {

            while (--k);

        } while (--j);

    } while (--i);

}


void InitUart()

{

    SCON=0x50;

    TMOD=0x20;

    TH1=TL1=-(FOSC/12/32/BAUD);

    TR1=1;

    TI=1;

}


void InitUart2()

{

    S2CON=0x50;

    AUXR|=0x14;

    BRT=-(FOSC/32/BAUD);

    S2CON|=S2TI;

}


void SendData2(unsigned char dat)

{

    bit busy=S2CON&S2TI;

    while(!busy)

    {

        busy=S2CON&S2TI;

    }

    S2CON&=~S2TI;

    S2BUF=dat;

}


void SendData(unsigned char dat)

{

    while(!TI);

    TI=0;

    SBUF=dat;

}


void main()

{

    unsigned char ch = 0;

    InitUart();

    InitUart2();

    while(1)

    {

        SendData(ch);

        SendData2(ch);

        ch++;

        if(ch==8) ch=0;


        Delay500ms();

        Delay500ms();

    }

}


如果需要定时器1也工作在12T模式,则需要做如下修改:


void InitUart()

{

    SCON=0x50;

AUXR|=0x40;

    TMOD=0x20;

    TH1=TL1=-(FOSC/32/BAUD);

    TR1=1;

    TI=1;

}


此时修改BAUD的宏定义为115200,即可实现115200的波特率


如果两个串口波特率相同,还可以直接修改成如下,并节省出一个定时器。


void InitUart()

{

    SCON=0x50;

AUXR|=0x41;

    TI=1;

}

在这里插入图片描述
在这里插入图片描述

关键字:STC12C5A60S2  双串口  发送 引用地址:STC12C5A60S2双串口发送

上一篇:STC12C5A60S2读取ADC的值串口发送
下一篇:STC12C5A60S2使用NRF24L01和stm32通信

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved