新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > C51:串口通信接收與發送

        C51:串口通信接收與發送

        作者: 時間:2016-11-09 來源:網絡 收藏
        假設要發送一組數據 Send[10]

        一般采用查詢發送(循環發送)方式:
        unsigned char Send[10]; //發送量
        unsigned char i; //循環量
        for(i=0;i<10;i++)
        {
        SBUF= Send[i]; //發送
        while(TI==0); //等待發送完成
        TI=0; //清標志
        }

        采用中斷發送方式:
        unsigned char Send[10]; //發送量
        unsigned char num; //發送數據量
        unsigned char *p; //發送用指針

        //發送時:
        num=10; //定義發送數據量
        p=&Send ; //取首地址
        SBUF=*p; //發送第一個數據,啟動發送中斷
        //中斷代碼:
        void ComInt() interrupt 4
        {
        if(RI) RI=0; //接收中斷略;

        if(TI) //發送中斷處理
        {
        TI=0; //清標志
        num--; //計數減1
        p++; //指針加1
        if(num >0) SBUF=*p; //數據繼續發送至全部發完
        }
        }

        中斷發送優點:省去循環等待時間,以上面例子為例,9600bps時查詢發送約占用單片機10ms多,而中斷發送只占單片機幾十微秒(單片機速度越快

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

        ,占用時間越少)。
        中斷發送缺點:代碼稍復雜,發送過程不易控制。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 崇义县| 辛集市| 五河县| 海丰县| 闽清县| 青阳县| 商洛市| 尚志市| 武宣县| 神木县| 威宁| 新泰市| 雅安市| 资源县| 沽源县| 石城县| 兖州市| 墨竹工卡县| 仁寿县| 含山县| 喀喇沁旗| 四平市| 久治县| 封开县| 荣昌县| 凤阳县| 丰都县| 常熟市| 彰化县| 竹溪县| 民勤县| 茶陵县| 铁岭市| 兴文县| 阿克陶县| 孟州市| 碌曲县| 克山县| 杭州市| 德安县| 泸溪县|