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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10245|回復: 13
打印 上一主題 下一主題
收起左側

STC15系列單片機串口切換問題

  [復制鏈接]
跳轉到指定樓層
樓主
如何通過程序判斷選用了那個外部串口切換呢,是判斷接受或發送引腳被拉低嗎?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:251595 發表于 2017-11-20 19:41 | 只看該作者
這個問題有點難度
回復

使用道具 舉報

板凳
ID:82765 發表于 2017-11-20 19:59 | 只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

地板
ID:213173 發表于 2017-11-20 21:35 | 只看該作者
當然可以通過程序判斷選用了那個外部串口切換。





回復

使用道具 舉報

5#
ID:60379 發表于 2017-11-21 09:58 | 只看該作者
建議閱讀《51單片機輕松入門 基于STC15W4K系列》,讀懂后這些簡單的問題都被一掃光了
回復

使用道具 舉報

6#
無效樓層,該帖已經被刪除
7#
ID:231173 發表于 2017-11-22 09:59 | 只看該作者
cjjcjj1 發表于 2017-11-20 19:59
沒有明白你是要做什么

就是串口1做了分時切換,程序能夠自己識別用那個串口嗎
回復

使用道具 舉報

8#
無效樓層,該帖已經被刪除
9#
ID:47286 發表于 2017-11-22 11:06 | 只看該作者
沒懂你意思

如果是選用串口發送 程序里針對不同串口調用不同函數就可以

如果是多串口的片子 哪個串口的中斷觸發就是哪個串口有數據進來 可以為每個串口做標記和緩沖區 程序根據標記置位判斷哪個串口有數據進來 然后處理緩沖區的數據并清除標記

如果淡串口多管腳切換的片子 那就沒什么辦法了 只能一組管腳監視一會再切到另一組管腳監視一會 通常100ms左右
回復

使用道具 舉報

10#
ID:212797 發表于 2017-11-22 13:14 | 只看該作者
這個樣該是寄存器設置的啊,程序是根據寄存器判斷當前用的是哪一個口
回復

使用道具 舉報

11#
ID:231173 發表于 2017-11-22 17:16 | 只看該作者
xbook_ben 發表于 2017-11-22 13:14
這個樣該是寄存器設置的啊,程序是根據寄存器判斷當前用的是哪一個口

寄存器可以設置串口切換,但是不是進行判斷吧
回復

使用道具 舉報

12#
ID:472235 發表于 2019-12-25 10:26 | 只看該作者
我是把AUXR1 = 0x40切換到P3.6、P3.7,但用串口助手連接P3.6、P3.7管腳時沒反應,反而是原來的默認串口有反應??


#include "reg52.h"
#include "string.h"       

         
sfr AUXR1 = 0xa2; //串口切換控制寄存器
typedef unsigned int u16;          
typedef unsigned char u8;
#define AUXR1 = 0x40;
  
u8 i = 0;
u8 buff[30];
u8 *p;

void UartInit(void){                //9600bps@11.0592MHz
        SCON = 0x50;                    //8位數據,可變波特率
        TMOD=0X20;                        //設置計數器工作方式2
//        AUXR |= 0x01;                    //串口1選擇定時器2為波特率發生器
//        AUXR |= 0x04;                    //定時器2時鐘為Fosc,即1T
        TL1 = 0xfd;                        //設定定時初值
        TH1 = 0xfd;                        //設定定時初值
//        AUXR |= 0x10;                    //啟動定時器2
        ES = 1;
        EA = 1;
        TR1 = 1;
}
void main()
{       
        UartInit(); //        串口初始化

        while(1)
        {
               
        }               
}


void Usart() interrupt 4
{
        u8 receiveData;
       

        if(i >= 5){        
                i = 0;
                memset(buff, 0, sizeof buff);               
        }

        receiveData=SBUF;//出去接收到的數據
        buff[i] = receiveData;
        RI = 0;//清除接收中斷標志位

        if(i>2){
                SBUF=buff[i];//將接收到的數據放入到發送寄存器
                while(!TI);                         //等待發送數據完成
                TI=0;                                //清除發送完成標志位
        }
                                               
        i++;

}
回復

使用道具 舉報

13#
ID:168926 發表于 2020-7-3 11:14 | 只看該作者
121212121212123 發表于 2019-12-25 10:26
我是把AUXR1 = 0x40切換到P3.6、P3.7,但用串口助手連接P3.6、P3.7管腳時沒反應,反而是原來的默認串口有反 ...

我的也是  切換不過去  你找到原因了嗎
回復

使用道具 舉報

14#
ID:911776 發表于 2021-5-27 10:53 | 只看該作者
121212121212123 發表于 2019-12-25 10:26
我是把AUXR1 = 0x40切換到P3.6、P3.7,但用串口助手連接P3.6、P3.7管腳時沒反應,反而是原來的默認串口有反 ...

我也遇到這個問題,請問怎么解決的?
回復

使用道具 舉報

15#
ID:525104 發表于 2021-5-28 09:43 | 只看該作者
遇到同樣問題,發送引腳模式改為推挽模式,可以解決。
回復

使用道具 舉報

16#
ID:525104 發表于 2021-5-28 09:44 | 只看該作者
yhy08090 發表于 2021-5-27 10:53
我也遇到這個問題,請問怎么解決的?

發送引腳模式改為推挽模式,可以解決
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

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