精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于51單片機的串口中斷發送數據幀

電子工程師 ? 作者:工程師a ? 2018-06-03 09:23 ? 次閱讀

很少看到有資料寫如何以中斷的方式發送一幀數據,如果以等待的發送數據幀,對高速運行的單片機來說是很浪費時間的,下面就介紹一種使用中斷方式發送數據幀,操作平臺采用51 mcu

首先定義一個數據幀的結構體,該結構體可以做為一個全局變量,所有的發送都要經過這個結構體:

//結構體

struct{

charbusy_falg;//忙標志,若在發送數據時置位1,即在開始發送置位1,發送結束置位0

intindex;//索引,指向需要發送數組的位置

intlength;//整個數據幀的長度

char*buf;//指向需要發送的數據幀,建議為全局變量,否則一旦開始發送,必須等到發送結束,即判斷busy_falg為0

}send_buf;

發送數據的函數,這里有個缺點,就是還是要使用while來檢測串口是否忙碌,不過這樣比占用系統時間來發送要好的多了:

//發送一幀

voidSendBuf(char*buf,intlength)

{

while(busy_falg);//查詢發送是否忙,否則循環等待

send_buf.length=length;

send_buf.index=0;

send_buf.buf=buf;

send_buf.busy_falg=1;

SBUF=send_buf.buf[0];//寫入SBUF,開始發送,后面就自動進入中斷發送

}

串口中斷發送函數,注意設置空閑標志位,避免多任務時多個發送幀調用了同一個結構體:

voidSerialInt()interrupt4//串口中斷

{

if(RI==1)//串口接收

{

RI=0;

}

elseif(TI==1)//串口發送

{

TI=0;

send_buf.index++;

if(send_buf.index==send_buf.length)

{

send_buf.busy_falg=0;//發送結束

return;

}

SBUF=send_buf.buf[send_buf.index];//繼續發送下一個

}

}


串口中斷發送就是這樣簡單,注意busy_falg和index的使用。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6032

    文章

    44514

    瀏覽量

    632971
  • 數據幀
    +關注

    關注

    0

    文章

    45

    瀏覽量

    6732
收藏 人收藏

    評論

    相關推薦

    51單片機什么情況下會產生串口中斷

    首先,你要用軟件允許中斷,即C語言中EA = 1; 允許總中斷ES = 1;//允許串口中斷匯編中可用 SETB EA ;允許總中斷SETB ES ;允許
    發表于 11-01 18:09

    請問51單片機串口中斷是怎么觸發的?

    51單片機中斷串口中斷怎么觸發的感覺很模糊啊,發送數據或接收到
    發表于 04-09 06:35

    51單片機串口中斷使用總結

    51單片機串口中斷使用總結,有程序,可以參考。
    發表于 03-28 10:00 ?13次下載

    第6章單片機定時器串口中斷(20150709213857)

    第6章單片機定時器串口中斷(20150709213857)
    發表于 12-15 22:28 ?6次下載

    串口中斷丟失數據問題

    關于51單片機串口中斷發送與接收出現數據丟失問題串口中斷的接收器具有雙緩沖結構,即在從接收寄存
    發表于 02-17 00:13 ?3541次閱讀

    51單片機進行串口通信的發送與接收的實例程序免費下載

    51單片機串口,是個全雙工的串口發送數據的同時,還可以接收
    發表于 08-20 17:31 ?14次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>進行<b class='flag-5'>串口</b>通信的<b class='flag-5'>發送</b>與接收的實例程序免費下載

    使用單片機串口發送數據的程序免費下載

    本文檔的主要內容詳細介紹的是使用單片機串口發送數據的程序免費下載。
    發表于 08-15 17:32 ?7次下載
    使用<b class='flag-5'>單片機</b>的<b class='flag-5'>串口</b><b class='flag-5'>發送</b><b class='flag-5'>數據</b><b class='flag-5'>幀</b>的程序免費下載

    如何使用51單片機進行串口通信的發送與接收

    51單片機串口,是個全雙工的串口發送數據的同時,還可以接收
    發表于 07-08 17:41 ?18次下載
    如何使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>進行<b class='flag-5'>串口</b>通信的<b class='flag-5'>發送</b>與接收

    使用51單片機中斷方式實現串口數據發送與接收的程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機中斷方式實現串口數據發送與接收的程序免費下載。
    發表于 07-04 17:41 ?5次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>中斷</b>方式實現<b class='flag-5'>串口</b><b class='flag-5'>數據</b><b class='flag-5'>發送</b>與接收的程序免費下載

    使用51單片機進行接收和發送串口通信資料免費下載

    原料:keil、仿真軟件、虛擬串口工具(群文件里的tools)vspdctl.dll記得覆蓋說明:串口中斷允許位ES=1時,單片機一接收到數據或者
    發表于 07-03 17:42 ?0次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>進行接收和<b class='flag-5'>發送</b>的<b class='flag-5'>串口</b>通信資料免費下載

    串口中斷接收和發送的C51程序免費下載

    這是一個單片機C51串口接收(中斷)和發送例程,可以用來測試51
    發表于 04-25 18:27 ?4次下載
    <b class='flag-5'>串口中斷</b>接收和<b class='flag-5'>發送</b>的C<b class='flag-5'>51</b>程序免費下載

    51單片機串口中斷功能的設置

    51單片機串口功能就是和外界進行通訊,所謂的“外界”也就是與單片機進行交互的媒介,最常用的就是我們經常使用的計算機、平板或者其他設備(比如另一個
    發表于 11-14 19:51 ?74次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>串口中斷</b>功能的設置

    51單片機串行口中斷的使用(指針)

    51單片機串行口中斷的使用(指針)初始化中斷服務函數主函數這個程序的功能是通過上位發送數字12
    發表于 11-20 17:21 ?1次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>串行<b class='flag-5'>口中斷</b>的使用(指針)

    51單片機中斷問題

    51單片機中斷使用注意事項1.例如:同時使用外部中斷0和串口中斷的時候,如果沒有用到串口中斷,一
    發表于 11-22 12:21 ?0次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>中斷</b>問題

    串口傳輸(51單片機版)

    串口傳輸在51單片機里是非常重要的一點,這常常是在中斷、計數器后面學習,因為不可避免的需要用到中斷51
    發表于 11-23 16:20 ?0次下載
    <b class='flag-5'>串口</b>傳輸(<b class='flag-5'>51</b><b class='flag-5'>單片機</b>版)