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

標題: 求教如何實現串口的轉接 [打印本頁]

作者: 辰99    時間: 2021-2-19 10:34
標題: 求教如何實現串口的轉接
我使用的是STC15W4K56S4芯片,連接ESP8266。ESP8266連接的串口是P1^0和P1^1,與CH340連接的串口P3^0和P3^1不同。該怎么實現轉接。

8266.png (18.91 KB, 下載次數: 46)

8266.png

CH340.png (34.63 KB, 下載次數: 54)

CH340.png

MCU.png (62.58 KB, 下載次數: 47)

MCU.png

作者: 辰99    時間: 2021-2-19 10:48
是為了解決發送AT指令,沒有反應的問題。希望大佬們給點方法思路!
作者: devcang    時間: 2021-2-19 12:08

這是雙串口的MCU,打開雙串口(完整版的下載工具中有例子),速率相同,就可以通訊了
作者: 51hei**1140    時間: 2021-2-19 14:10
你好@
這兩個串口是完全獨立的,不能進行相互切換
作者: 辰99    時間: 2021-2-19 14:22
devcang 發表于 2021-2-19 12:08
這是雙串口的MCU,打開雙串口(完整版的下載工具中有例子),速率相同,就可以通訊了

這個芯片總共有四組串行口。
因為下載用的是P30和P31口,將3031收到的at指令再發過去(rx轉tx2,rx2轉tx)。我不知道該怎么編碼。
作者: 辰99    時間: 2021-2-19 15:22
devcang 發表于 2021-2-19 12:08
這是雙串口的MCU,打開雙串口(完整版的下載工具中有例子),速率相同,就可以通訊了

這總共有四組串口。
下載讀寫用的是P30和P31,想將P30的RX轉P11的tx2,P10的rx2轉P31的tx。但不知道該怎么操作編碼。
作者: 418854190    時間: 2021-2-19 16:19
不懂C語言  匯編轉過P3.6 P3.7
想轉哪個就調用哪個  用的是STC15W204S  試過用P3.0接收 P3.7發送   程序是在下載軟件的范例程序里找的  源程序沒用明白  把改串口的部分提取出來就行了


;串口P3.0_RX  P3.1_TX
RXTX30:   
    MOV   A,P_SW1;
    ANL   A,#03FH;               //S1_S0=0 S1_S1=0
    MOV   P_SW1,A;               //(P3.0/RxD, P3.1/TxD)
        RET;
;-----------------------
;串口P3.6_RX   P3.7_TX
RXTX36:
    MOV   A,P_SW1
    ANL   A,#03FH               //S1_S0=1 S1_S1=0
    ORL   A,#S1_S0              //(P3.6/RxD_2, P3.7/TxD_2)
    MOV   P_SW1,A
        RET;

作者: ygystc    時間: 2021-2-19 16:26
這兩個串口是完全獨立的,不能進行相互切換
作者: qq1974    時間: 2021-2-19 18:18
如果這個芯片有雙串口,那就從芯片手冊上去找,我記得stc的新芯片官方都給例程

作者: 辰99    時間: 2021-2-19 23:05
418854190 發表于 2021-2-19 16:19
不懂C語言  匯編轉過P3.6 P3.7
想轉哪個就調用哪個  用的是STC15W204S  試過用P3.0接收 P3.7發送   程序是 ...

好的 我看看
另外請問你說的下載軟件的范例程序是哪里找的
作者: 黃youhui    時間: 2021-2-20 08:46
隨便網上搜個STM32的ESP8266例程就好了,自己改一下

作者: cn_zhx    時間: 2021-2-21 15:24
你的問題描述的不太明白。
看看是不是這樣:P30接收的數據從P11發送出去,相反,P10接收的數據從P31發送出去。如果是這樣的話,寫上兩個不同串口的收發程序,透明發送出去就行。
作者: 辰99    時間: 2021-2-22 11:49
cn_zhx 發表于 2021-2-21 15:24
你的問題描述的不太明白。
看看是不是這樣:P30接收的數據從P11發送出去,相反,P10接收的數據從P31發送出 ...

嗯對  是這個意思。 但串口3的收發程序編寫不知道哪里錯了,不能收發,能不能幫忙看看。
#include "stc15f2k60s2.h"            // 單片機STC15F2K60S2頭文件,可以不再加入reg51.h
#include "uart.h"

sbit KEY1 = P2^0;
sbit KEY2 = P2^1;

#define S3RI 0x01 //S3CON.0
#define S3TI 0x02 //S3CON.1
#define ES3 0x08    //IE2.3

#define uchar unsigned char
#define uint unsigned int
unsigned char date;

void delay(uint z)
{                                                                                                                                                                                          
    uint i,j;
    for(i=z;i>0;i--)
        for(j=110;j>0;j--);
}
void UartInit(void);
void Uart3Init(void);
void main(void)
{
        //定時器
        TMOD = 0x00;//定時器0,模式0
        TH0=0x3c;//50ms定時器初值設定
        TL0=0xb0;
        TR0=1;
        ET0=1;
        EA=1;
        UartInit();
        Uart3Init();
        led1 = 1;
        led3 = 1;
        while(1)
        {
                if(KEY2==0)
                {
                        delay(1000);
                        if(KEY2==0)          //確認觸發
                        {
                                SBUF = '1';
                                delay(100);
                        }
                        if(KEY1==0)
                        {
                        delay(1000);
                                if(KEY1==0)          //確認觸發
                                {
                                        S3BUF='2';
                                        delay(100);
                                }
                        }
                }
        }
}
void uart1ISR() interrupt 4
{
        if(RI){
                        date=SBUF;    //單片機接受
                        SBUF=date;    //單片機發送
                        RI=0;
                  }
                        if(TI){
                                TI=0;
                        }
}

void UART3_Isr(void) interrupt 17
{
        if (S3CON & S3RI)    {
                  date = S3BUF;
                        S3BUF = date;
                       
      S3CON &= ~S3RI;         // 清中斷標志
        }
    if (S3CON & S3TI)    {
      S3CON &= ~S3TI;         // 清中斷標志
                       
    }
}
void Uart3Init(void)
{
//        S3CON  = 0x10;                // 8位數據,可變波特率
//        T2L=(65536-11059200/4/9600);     
//  T2H=(65536-11059200/4/9600)>>8;
//        AUXR = 0x14;                //定時器2時鐘為Fosc,即1T
//        IE2=0x08;       // 使能串口中斷
//        EA = 1;         // 開總中斷
        S3CON  = 0x10;                // 8位數據,可變波特率
        AUXR  |= 0x04;                // 定時器2時鐘為Fosc,即1T
        T2L    = (65536-11059200/4/9600);       
        T2H    = (65536-11059200/4/9600)>>8;                // 設定定時初值
        AUXR  |= 0x10;                // 啟動定時器2
        IE2    = ES3;       // 使能串口中斷
        EA     = 1;         // 開總中斷
}
void UartInit(void)                //9600bps
{

/*        SCON = 0x50;                //8位數據,可變波特率
//        AUXR = 0x15;                //定時器2時鐘為Fosc,即1T
  T2L=(65536-11059200/4/9600);     
  T2H=(65536-11059200/4/9600)>>8;       
        ET1 = 0;                        //禁止定時器1中斷
        ES=1;*/
        SCON  = 0x50;                // 8位數據,可變波特率
        AUXR |= 0x40;                // 定時器1時鐘為Fosc,即1T
        AUXR &= 0xFE;                // 串口1選擇定時器1為波特率發生器
        TMOD &= 0x0F;                // 設定定時器1為16位自動重裝方式
        TL1   = (65536-11059200/4/9600);                // 設定定時初值
        TH1   = (65536-11059200/4/9600)>>8;                // 設定定時初值
        ET1   = 0;                    // 禁止定時器1中斷
        TR1   = 1;                    // 啟動定時器1
        ES    = 1;          // 開串口中斷
        EA    = 1;          // 開總中斷
}
作者: 人人學會單片機    時間: 2021-2-22 20:47
這點東西也很難嗎?開個數組存起來不就行了

作者: 湖南    時間: 2021-3-10 00:22
通過USB轉TTL




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1