新聞中心

        51 串口中斷發(fā)送程序

        作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò) 收藏
        假設(shè)要發(fā)送一組數(shù)據(jù)Send[10]
        一般采用查詢(xún)發(fā)送(循環(huán)發(fā)送)方式:
        unsignedcharSend[10];//發(fā)送量
        unsignedchari;//循環(huán)量
        for(i=0;i<10;i++)
        {
        SBUF=Send[i];//發(fā)送
        while(TI==0);//等待發(fā)送完成
        TI=0;//清標(biāo)志
        }

        采用中斷發(fā)送方式:
        unsignedcharSend[10];//發(fā)送量
        unsignedcharnum;//發(fā)送數(shù)據(jù)量
        unsignedchar*p;//發(fā)送用指針

        //發(fā)送時(shí):
        num=10;//定義發(fā)送數(shù)據(jù)量
        p=&Send;//取首地址
        SBUF=*p;//發(fā)送第一個(gè)數(shù)據(jù),啟動(dòng)發(fā)送中斷
        //中斷代碼:
        voidComInt()interrupt4
        {
        if(RI)RI=0;//接收中斷略;

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

        中斷發(fā)送優(yōu)點(diǎn):省去循環(huán)等待時(shí)間,以上面例子為例,9600bps時(shí)查詢(xún)發(fā)送約占用單片機(jī)10ms多,而中斷發(fā)送只占單片機(jī)幾十微秒(單片機(jī)速度越快,占用時(shí)間越少)。
        中斷發(fā)送缺點(diǎn):代碼稍復(fù)雜,發(fā)送過(guò)程不易控制。


        關(guān)鍵詞: 51串口中斷發(fā)送程

        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 睢宁县| 南和县| 延安市| 穆棱市| 阿巴嘎旗| 福建省| 黄陵县| 博爱县| 太白县| 明溪县| 荔波县| 广灵县| 平潭县| 四平市| 鹤岗市| 新巴尔虎左旗| 潜山县| 义马市| 桃源县| SHOW| 天全县| 洪雅县| 双牌县| 含山县| 来安县| 讷河市| 垣曲县| 苍梧县| 民和| 湖南省| 马鞍山市| 通海县| 苏尼特右旗| 曲麻莱县| 遂溪县| 秦安县| 江西省| 小金县| 陕西省| 丹东市| 庆安县|