新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STC單片機11.0592晶振實現115200波特率串口通信

        STC單片機11.0592晶振實現115200波特率串口通信

        作者: 時間:2016-11-19 來源:網絡 收藏
        在8051系列單片機如:89S51、89C51 這些單片機上,用11.0592M晶振實現115200波特率通信,幾乎是不可能的。

        本文引用地址:http://www.104case.com/article/201611/318548.htm

        如果換了STC單片機,例如在STC12C5A60S2實現115200的高速通信就相當簡單了。

        因為,STC12單片機有獨立的波特率發生器。

        #include "STC12C5A60S2.H"
        #include "stdio.h"

        void init_uart()
        {

        PCON &= 0x7f;//波特率不倍速
        SCON = 0x50;//8位數據,可變波特率
        BRT = 0xFD; //設定獨立波特率發生器重裝值
        AUXR |= 0x04;//獨立波特率發生器時鐘為Fosc,即1T
        AUXR |= 0x01;//串口1選擇獨立波特率發生器為波特率發生器
        AUXR |= 0x10;//啟動獨立波特率發生器
        }

        char putchar (unsigned char i)
        {

        ES = 0; //關串口中斷
        TI = 0; //清零串口發送完成中斷請求標志
        SBUF = i;
        while(TI ==0); //等待發送完成
        TI = 0; //清零串口發送完成中斷請求標志
        ES = 1; //允許串口中斷

        return SBUF;
        }

        記得頭文件加上 stdio.h,然后在代碼里實現 putchar 函數,這樣你就可以很方便的用 printf函數進行串口輸出了。

        例如

        int hh=0,mm=0,ss=0;

        printf("現在的時間:%d:%d:%drn", hh,mm,ss);

        是不是串口輸出變簡單多了。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 五大连池市| 大姚县| 灵璧县| 郎溪县| 天全县| 长乐市| 淮滨县| 桦南县| 安徽省| 阿勒泰市| 许昌县| 凤山县| 广东省| 涟源市| 靖宇县| 隆德县| 武功县| 定陶县| 瓦房店市| 且末县| 巧家县| 亳州市| 塔城市| 平顶山市| 麦盖提县| 石门县| 平凉市| 西昌市| 白山市| 会同县| 丹巴县| 聂荣县| 敦化市| 河源市| 陇川县| 阿合奇县| 元氏县| 沛县| 敦化市| 健康| 桦川县|