中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 模擬串口自動測量波特率的單片機程序

        模擬串口自動測量波特率的單片機程序

        作者: 時間:2012-08-02 來源:網(wǎng)絡(luò) 收藏

        我這個程序能夠測量串口的,并且將自身的設(shè)置到通訊。
        這個在STC89C52/STC15F104(其實主要針對STC15F104,因為它沒有串口)上面通過。不過因為是,在11.0592 12T的情況下,最多到19200。
        然后在STC15F104上面,要適量的減少補償值……
        順便說一句,編譯器建議使用sdcc。keil的SB printf函數(shù)搞死我了……在22.1184 6T的情況下大約能到57600.
        當然在STC15F系列到115200毫無壓力,可是是半雙工的。要做全雙工只能減倍波特率……
        測量波特率的方法很簡單。校準他的波特率的方法就是發(fā)送沒有連續(xù)低電平的字符,類似0x55/0xff/0x7f之類的。使用這個特性還可以將它用在STC自動冷啟動下載器中。不過注意要限制校準波特率。否則你的正常串口通訊可能會被干擾,因為你比如115200通訊的時候,正好波形類似57600的7F,校準上去了把你的連接掐了,估計很多人都會看看程序是不是跑飛了……所以一定要把同步波特率降到4800以下,因為STC-ISP的默認最低波特率是從1200~4800.
        這個也可以適用于不準晶振的單片機和計算機通訊。方法就是計算機以不同波特率發(fā)送校準信號,找出誤碼率最低的波特率,然后發(fā)送確認,讓單片機在這個重載值下運行,也適用于時鐘速度可能變化的單片機/懶得計算重載值的人使用。
        然后低于4800的波特率在11.0592的速度下面只能分頻,這也是不得已的……
        上代碼:

        /*
        * 自適應(yīng)波特率程序,
        * BY 萬致遠@rwzy.co.cc
        * CRYSTAL:任意
        */
        #include hwconfig.h>
        #include type-def.h>
        #include stdio.h>
        #define MIS_0 0
        #define MIS_2 1
        #define MIS_4 2
        #define MIS_8 3
        #define MIS_16 4
        #define TX1 P1_0 //發(fā)送數(shù)據(jù)端口
        #define RX1 P1_1 //接收數(shù)據(jù)端口
        BYTE min_mode;//減倍模式
        void WaitTF1()
        {
        while(!TF1);
        TF1=0;
        if(min_mode==MIS_2)
        {// /2
        while(!TF1);
        TF1=0;
        }
        else if(min_mode == MIS_4)
        {// /4
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        }
        else if(min_mode == MIS_8)
        {// /8
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        }
        else if(min_mode == MIS_16)
        {// /16
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        while(!TF1);
        TF1=0;
        }
        }


        上一頁 1 2 下一頁

        關(guān)鍵詞: 模擬串口 自動測量 波特率

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉