新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機 串口

        51單片機 串口

        作者: 時間:2016-11-25 來源:網絡 收藏
        串口這貨,重要性就不用說了。哪里有單片機,哪里就有串口了。

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

        直接上代碼:

        #include
        #define uint unsigned int
        #define uchar unsigned char

        uint flag; //串口中斷標志變量
        uchar accept_data; //串口接收到的數據
        uint i; //用于把"I get "六個字符型數據發送出去
        uchar code table[]="I get "; //字符型編碼數組

        void init(); //串口中斷初始化函數聲明
        void send(); //發送函數聲明

        void main()
        {
        init();
        while(1)
        {
        if(flag==1)
        {
        send();
        }
        }
        }
        //串口初始化函數主體
        void init()
        {
        //t1定時器初始化(由于t0定時器溢出之后沒有動作需要,所以這里不需要打開t0中斷,不需要寫t0中斷服務程序)
        TMOD=0x20;
        TH0=0xfd;
        TL0=0xfd;
        TR1=1;
        //串口中斷初始化
        REN=1; //允許接受數據
        SM0=0;
        SM1=1; //選擇方式一
        EA=1; //打開總中斷
        ES=1; //打開串口中斷
        }
        //串口數據發送函數主體
        void send()
        {
        if(flag==1) //如果接受了數據,因為接受數據完成之后,單片機會自動申請中斷,又串口中斷打開的,所以中斷有效
        {
        ES=0; //關閉串口中斷,此時只是發送數據,不需要接受數據。必須關閉
        for(i=6;i>0;i--)
        {
        SBUF=table[i]; //"I_get_"一共六個字符,需要一個一個發送出去
        while(!TI) //發送一個字符結束之后,TI=1(自動)
        {
        }
        TI=0; //軟件清零
        }
        SBUF=accept_data; //發送接受到的數據
        while(!TI)
        {
        }
        TI=0;
        ES=1; //打開串口中斷,下一次接受數據準備
        flag=0;
        }
        }
        //串口中斷服務程序主體
        void serial_port() interrupt 4
        {
        flag=1;
        RI=0;
        accept_data=SBUF;
        }



        關鍵詞: 51單片機串口收

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 兴安县| 肥西县| 马鞍山市| 西平县| 大宁县| 齐齐哈尔市| 和林格尔县| 霸州市| 武隆县| 长子县| 盈江县| 普兰店市| 仙游县| 德惠市| 和静县| 霍林郭勒市| 霍邱县| 社旗县| 遂平县| 怀安县| 南开区| 东港市| 康乐县| 北川| 巫溪县| 山东省| 杂多县| 随州市| 阿图什市| 新泰市| 建水县| 广灵县| 嘉祥县| 通海县| 栾川县| 班戈县| 略阳县| 大埔区| 曲松县| 盐津县| 浦县|