新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > C51:串口接收和發送,查詢與中斷方法

        C51:串口接收和發送,查詢與中斷方法

        作者: 時間:2016-11-09 來源:網絡 收藏
        假設要發送一組數據 Send[10]一般采用查詢發送(循環發送)方式:

        本文引用地址:http://www.104case.com/article/201611/318053.htm
        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多,而中斷發送只占單片機幾十微秒(單片機速度越快,占用時間越少)。
        中斷發送缺點:代碼稍復雜,發送過程不易控制。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 两当县| 来宾市| 曲麻莱县| 扶沟县| 兴国县| 漠河县| 图片| 开封县| 丰县| 阜阳市| 太保市| 喀喇沁旗| 襄樊市| 梁平县| 田林县| 西和县| 罗平县| 弥勒县| 和政县| 澄江县| 沂南县| 新干县| 营口市| 西城区| 柞水县| 合江县| 鹿泉市| 阜新| 临清市| 玉田县| 武汉市| 张家口市| 怀集县| 长治市| 诏安县| 晴隆县| 武山县| 清水河县| 无锡市| 仪征市| 福鼎市|