在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機與PC通信總結

            51單片機與PC通信總結

            作者: 時間:2014-01-14 來源:網(wǎng)絡 收藏

            的串口,是個全雙工的串口,發(fā)送數(shù)據(jù)的同時,還可以接收數(shù)據(jù)。
            當串行發(fā)送完畢后,將在標志位 TI 置 1,同樣,當收到了數(shù)據(jù)后,也會在 RI 置 1。
            無論 RI 或 TI 出現(xiàn)了 1,只要串口中斷處于開放狀態(tài),單片機都會進入串口中斷處理程序。
            在中斷程序中,要區(qū)分出來究竟是發(fā)送引起的中斷,還是接收引起的中斷,然后分別進行處理。

            常用的方法有:
            接收數(shù)據(jù)時,使用“中斷方式”,清除 RI 后,用一個變量通知主函數(shù),收到新數(shù)據(jù)。
            發(fā)送數(shù)據(jù)時,也用“中斷方式”,清除 TI 后,用另一個變量通知主函數(shù),數(shù)據(jù)發(fā)送完畢。
            這樣一來,收、發(fā)兩者基本一致,編寫程序也很規(guī)范、易懂。
            更重要的是,主函數(shù)中,不用在那兒死等發(fā)送完畢,可以有更多的時間查看其它的標志。
            與單片機串口通信的程序,要求如下:
            1、如果在電腦上發(fā)送以$開始的字符串,則將整個字符串原樣返回(字符串長度不是固定的)。
            2、如果接收到1,則將P00置高電平,接收到0,P10置低電平。(用來控制一個LED)
            單片機是STC89C52RC/晶振11.0592/波特率要求是9600或4800。

            注意:調試軟件我選擇“串口獵人”,串口獵人中選擇“字符格式發(fā)送” 。當然STC-ISP也是可以的
            ********************************************************/
            #include reg52.h>

            sbit LED=P0^0;
            unsigned char UART_buff;
            bit New_rec = 0, Send_ed = 1, Money = 0;

            void main ()
            {
            SCON = 0x50; //串口方式1, 10位UART(一個起始位“0”八個數(shù)據(jù)位一個停止位“1”), 允許接收.
            TMOD = 0x20; //T1方式2
            TH1 = 0xFD; //裝入自動重加載的處置,[email protected]
            TL1 = 0xFD; //裝入初值
            TR1 = 1; //啟動定時器T1
            ES = 1; //開串口中斷,但不開定時器中斷,不允許定時器中斷
            EA = 1;

            while(Money == 0); //等著交費,呵呵,等著接收$.

            while(1)
            {
            if ((New_rec == 1) (Send_ed == 1))
            { //如果收到新數(shù)據(jù)及發(fā)送完畢
            SBUF = UART_buff; //那就發(fā)送.
            New_rec = 0;
            Send_ed = 0;
            }
            }
            }
            //----------------------------------------------
            void ser_int (void) interrupt 4
            {
            if(RI == 1) //如果收到.
            {
            RI = 0; //清除標志.
            New_rec = 1;
            UART_buff = SBUF; //接收.
            if(UART_buff == '1') LED = 1;
            if(UART_buff == '0') LED = 0;
            if(UART_buff == '$') Money = 1;
            }
            else //如果送畢.
            {
            TI = 0; //清除標志.
            Send_ed = 1;
            }
            }

            51單片機相關文章:51單片機教程


            單片機相關文章:單片機教程


            單片機相關文章:單片機視頻教程


            單片機相關文章:單片機工作原理


            數(shù)字通信相關文章:數(shù)字通信原理


            通信相關文章:通信原理




            評論


            相關推薦

            技術專區(qū)

            關閉