日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

單片機串口發(fā)送數(shù)據(jù)幀

出處:eefocus 發(fā)布于:2018-06-02 14:49:15

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

  首先定義一個數(shù)據(jù)幀的結構體,該結構體可以做為一個全局變量,所有的發(fā)送都要經(jīng)過這個結構體:

  //結構體

  struct {

  char busy_falg;//忙標志,若在發(fā)送數(shù)據(jù)時置位1,即在開始發(fā)送置位1,發(fā)送結束置位0

  int index;//索引,指向需要發(fā)送數(shù)組的位置

  int length;//整個數(shù)據(jù)幀的長度

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

  } send_buf;

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

  //發(fā)送一幀

  void SendBuf(char *buf,int length)

  {

  while(busy_falg);//查詢發(fā)送是否忙,否則循環(huán)等待

  send_buf.length = length;

  send_buf.index = 0;

  send_buf.buf = buf;

  send_buf.busy_falg = 1;

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

  }

  串口中斷發(fā)送函數(shù),注意設置空閑標志位,避免多任務時多個發(fā)送幀調(diào)用了同一個結構體:

  void SerialInt() interrupt 4     //串口中斷

  {

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

  {

  RI = 0;

  }

  else if(TI == 1)//串口發(fā)送

  {

  TI = 0;

  send_buf.index++;

  if(send_buf.index == send_buf.length)

  {

  send_buf.busy_falg = 0;//發(fā)送結束

  return;

  }

  SBUF = send_buf.buf[send_buf.index];//繼續(xù)發(fā)送下一個

  }

  }

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


關鍵詞:單片機,數(shù)據(jù)幀

版權與免責聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關法律責任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權等法律責任。

如涉及作品內(nèi)容、版權等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務:
賣家服務:
技術客服:

0571-85317607

網(wǎng)站技術支持

13606545031

客服在線時間周一至周五
9:00-17:30

關注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!