找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2681|回复: 7
收起左侧

STC12C5A60S2单片机双串口调试,想实现串口1发数据串口2接收后再发给串口1

[复制链接]
ID:790783 发表于 2022-5-1 20:44 | 显示全部楼层 |阅读模式
代码如下,使用12C5A60S2 双串口调试,想实现串口1发数据串口2接收后再发给串口1,一直想不通该如何实现1发2,2转发给1。可以提供一下思路吗?
现在的代码只实现了一个串口发Hello WorldA,另一个发A,已经神志不清了,求大神指点思路。跪谢
void sendByte(unsigned char dat)
{
        SBUF = dat;
        while(!TI);
        TI = 0;
}
void sendByte2(unsigned char dat)
{
        S2BUF = dat;
        while(!(S2CON & S2TI));
        S2CON &= ~S2TI;
}
void sendString(unsigned char *dat)
{
        while(*dat != '\0')
        {
                sendByte2(*dat++);
        }
}
void sendString2(unsigned char *dat
{
        while(*dat != '\0')
        {
                sendByte2(*dat++);
        }
}
void main()
{
        UartInit();
        sendString("Hello World\r\n");
        sendByte('A');
        sendString2("Hello World\r\n");
        sendByte2('A');
        while(1)
        {
        }
}

回复

使用道具 举报

ID:624769 发表于 2022-5-1 23:55 | 显示全部楼层
如果, 你要 Uart1_TX => Uart2_RX => Uart2_TX => Uart1_RX 这个样子走 四分之三圈的话,首先Uart1, Uart2 都必须开中断, 其次,至少 Uart1 的接受,要有接收缓冲池。当然,最好都有缓冲池。
回复

使用道具 举报

ID:790783 发表于 2022-5-2 00:12 | 显示全部楼层
void main()
{
        UartInit();
        while(1)
        {
        unsigned char date;
        date = SBUF;
        RI = 0;                        //
        S2BUF = date;
        while(!(S2CON & S2TI));
        S2CON &= ~S2TI;        
        }
}
回复

使用道具 举报

ID:790783 发表于 2022-5-2 12:25 | 显示全部楼层
188610329 发表于 2022-5-1 23:55
如果, 你要 Uart1_TX => Uart2_RX => Uart2_TX => Uart1_RX 这个样子走 四分之三圈的话,首先Uart1, Uart2  ...

大佬,帮我判断一下这段代码靠谱吗?我开俩串口工具试验了一下,串口1发串口2收我再想一下就可以2发1收了。void main()
{
        UartInit();
        while(1)
        {
        unsigned char i;
        while(RI == 0);
        buffer = SBUF;
        RI = 0;       
        send = buffer;
        S2BUF = send;
        while(!(S2CON & S2TI));                //·¢ËííêÎa1
        S2CON &= ~S2TI;
       
        while(!(S2CON & S2RI))
        S2CON &= ~S2RI;     //Clear receive interrupt flag
  buffer = S2BUF;         //P0 show UART data
        }
}
回复

使用道具 举报

ID:401564 发表于 2022-5-2 17:08 | 显示全部楼层
为什么要串口1发送到串口2,然后又一个来回?这样做有什么意义呢?
回复

使用道具 举报

ID:790783 发表于 2022-5-2 19:18 | 显示全部楼层
Y_G_G 发表于 2022-5-2 17:08
为什么要串口1发送到串口2,然后又一个来回?这样做有什么意义呢?

调试串口啊
回复

使用道具 举报

ID:390416 发表于 2022-5-7 11:17 | 显示全部楼层
Y_G_G 发表于 2022-5-2 17:08
为什么要串口1发送到串口2,然后又一个来回?这样做有什么意义呢?

当然有意义的,比如,需要在串口助手上,打印出250000波特率的数据,但是,所有的串口助手都没有这个波特率。只能把波特率转换称串口助手支持的波特率,比如9600 、或者115200
回复

使用道具 举报

ID:624769 发表于 2022-5-7 21:08 | 显示全部楼层
以及他, 发表于 2022-5-2 12:25
大佬,帮我判断一下这段代码靠谱吗?我开俩串口工具试验了一下,串口1发串口2收我再想一下就可以2发1收了 ...

看你的标题, 感觉是你要  串口1 发送给 串口2, 再串口2发送给 串口1, (说实话, 如同5楼所说, 完全不理解你的目的, 并且, 实际上几乎无法实现)

但是, 看你的代码, 感觉,你是要 串口1负责收(某处发来的数据), 串口2负责把串口1收到的数据, 发送给第三方.(如果是这个目的, 那么就完全可以理解, 并且也非常容易实现的.)
所以,想确认一下,你到底,具体是什么目的?

最后说一下, 负责接收的, 必须要有中断, 不能用你这种方式,不然, 一定会数据丢失.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

快速回复 返回顶部 返回列表