<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        串口助手下發命令~單片機回傳不同的數據

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年03月18日   【字體:

        /**********串口助手下發命令,單片機回傳不同的數據**************/
        /**
        *時間:2014年3月15日 07:32:22
        *作者:寒竹子
        **/

        #include <reg52.h>

        typedef unsigned int uint;
        typedef unsigned char uchar;

        bit cmdAddrived = 0;//收到下發命令的標志
        uchar cmd = 0;//上位機下發的命令
        uchar cnt;//發送字節的個數
        uchar * sendStr = "";//單片機發送的數據指針

        //預定義待發送的數據
        uchar * pstr1 = "Welcome to MCU!\n";
        uchar * pstr2 = "www*Kingst*odg \n";
        uchar * pstr3 = "Welcome to STM-32!\n";
        uchar * pstr4 = "www*chuxue123*cdm \n";

        void UART_Config(uint baud);
        void UART_sendByte(uchar dat);
        void UART_sendString(uchar * pstr);
        uchar UART_recieved();
        void recievedByComputer();

        void main()
        {
        UART_Config(9600);

        while (1)
        {
        recievedByComputer();
        }
        }

        //串口波特率配置
        void UART_Config(uint baud)
        {
        SCON |= 0x50;
        /*
        SM0 = 0;
        SM1 = 1;
        REN = 1;
        TI = 0;
        RI = 0;
        */
        TMOD &= 0x0F;//清零T1控制位
        TMOD |= 0x20;//T1方式2,八位自動重裝
        TH1 = 256-(11059200/12/32/baud);
        TL1 = TH1;
        TR1 = 1;
        }

        //send Byte
        void UART_sendByte(uchar dat)
        {
        SBUF = dat;
        while (!TI);
        TI = 0;
        REN = 1;//允許接收
        }

        //send String
        void UART_sendString(uchar * pstr)
        {
        while (*pstr != '\0')
        {
        UART_sendByte(*pstr++);
        }
        }

        //recieve
        uchar UART_recieved()
        {
        uchar dat = 0;
        if (RI) //接收到數據
        {
        dat = SBUF;
        RI = 0;
        REN = 0;//發送數據,禁止接收
        }

        return (dat);
        }

        //接收命令并處理
        void recievedByComputer()
        {
        cmd = UART_recieved();

        switch (cmd)
        {
        case 1:
        {
        UART_sendString(pstr1);
        break;
        }
        case 2:
        {
        UART_sendString(pstr2);
        break;
        }
        case 3:
        {
        UART_sendString(pstr3);
        break;
        }
        case 4:
        {
        UART_sendString(pstr4);
        break;
        }
        default:
        break;
        }
        }

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮