欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3066|回復: 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 單片機教程網

快速回復 返回頂部 返回列表