wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5909|回復: 1
打印 上一主題 下一主題
收起左側

MSP430單片機UART_FIFO 發送 接受

[復制鏈接]
跳轉到指定樓層
樓主
ID:108615 發表于 2016-3-14 19:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本程序是《MSP430系列單片機系統工程設計與實踐》書里面的源碼,(包含工程文件 (例2.9.10)))完整例程下載:http://www.izizhuan.cn/bbs/dpj-46245-1.html

關于本程序的詳細解說大家可以下載電子書點擊上圖即可
原書一共有2個程序
程序1發送:
  1. #include <msp430x42x.h>
  2. #define TXBUF_SIZE  32                    /*發送FIFO的最大容量*/
  3. unsigned char TX_BUFF[TXBUF_SIZE];  /*發送FIFO緩沖區數組*/
  4. unsigned int  UART_OutLen=0;        /*發送FIFO內待發出的字節數*/
  5. unsigned int  TX_IndexR=0;          /*發送FIFO內的讀指針*/
  6. unsigned int  TX_IndexW=0;          /*發送FIFO內的寫指針*/
  7. /*****************************************************************
  8. * 名    稱:UART0_PutChar()
  9. * 功    能:從串口發送1字節數據(向緩沖隊列內填入1字節待發送數據)
  10. * 入口參數:Chr:待發送的字節
  11. * 出口參數:返回1表示發送成功,
  12.             返回0表示發送失敗。     
  13. * 說    明: 發送過程中,不阻塞CPU運行
  14. *****************************************************************/
  15. char UART0_PutChar(unsigned char Chr)
  16. {
  17.   if(UART_OutLen == TXBUF_SIZE) //如果FIFO已滿
  18.   {
  19.     return (0);                 // 不發送數據,返回發送失敗標志
  20.   }
  21.   if(UART_OutLen==0)            // 如果是第一個字節
  22.   {
  23.     IFG1|=UTXIFG0;              // 人為制造第一次中斷條件   
  24.   }
  25.   _DINT();                      // 涉及FIFO操作時不允許中斷,以免數據錯亂
  26.   UART_OutLen++;                // 待發送字節數加1
  27.   TX_BUFF[TX_IndexW] = Chr;     // 待發送數據通過寫指針寫入FIFO
  28.   if (++TX_IndexW >= TXBUF_SIZE)// 寫指針遞增,且判斷是否下標越界
  29.    {
  30.     TX_IndexW = 0;              // 如果越界則寫指針歸零(循環隊列)      
  31.    }
  32.   IE1 |= UTXIE0;                  // 允許UART0的發送中斷,在中斷內依次發送數據   
  33.   _EINT();                      // FIFO操作完畢,恢復中斷允許
  34.   return (1);                   // 返回發送成功標志   
  35. }                                   

  36. #pragma vector=UART0TX_VECTOR
  37. __interrupt void UART_TX (void)         // 串口發送中斷
  38. {
  39.    if(UART_OutLen>0)                    // FIFO內是否有待發送的數據?
  40.        {                                
  41.           UART_OutLen--;                // 待發送數據字節數減1  
  42.           U0TXBUF=TX_BUFF[TX_IndexR];   // 從尾指針讀取一個字節并發送
  43.           if (++TX_IndexR >= TXBUF_SIZE)// 讀指針遞增,且判斷是否下標越界
  44.            {                                   
  45.              TX_IndexR = 0;             // 如果越界則寫指針歸零(循環隊列)
  46.            }
  47.        }
  48.     else  IE1 &=~ UTXIE0;  // 如果數據已發完,則關閉UART0的發送中斷,停止發送  
  49. }   
  50. /*****************************************************************
  51. * 名    稱:UART0_PutChar_Legacy()
  52. * 功    能:傳統的從串口發送1字節數據程序,供對比用
  53. * 入口參數:Chr:待發送的字節   
  54. * 說    明: 發送過程中,會阻塞CPU運行
  55. *****************************************************************/
  56. void UART0_PutChar_Legacy(char Chr)
  57. {
  58.   TXBUF0=Chr;
  59. while ((IFG1 & UTXIFG0)==0);         // 等待該字節發完
  60. }


  61. void main( void )
  62. {                                                               
  63.   WDTCTL = WDTPW + WDTHOLD;           // 停止看門狗
  64.   FLL_CTL0 |= XCAP18PF;                // 配置晶振負載電容
  65.   U0CTL = CHAR;                        // 異步通訊模式,8位數據,無校驗,1位停止位。
  66.   ME1 |= UTXE0 + URXE0;                // 開啟串口0收發模塊
  67.   U0TCTL |= SSEL0;                // 選擇ACLK作為串口波特率時鐘源。
  68.   U0BR1 = 0;                        //
  69.   U0BR0 = 13;                        // 分頻系數整數部分=13
  70.   U0MCTL = 0x6B;                // 分頻系數小數部分調制=5/8。(2400bps)
  71.   P2SEL |= BIT4 + BIT5;  // P2.4,5 開啟第二功能,作為串口收發引腳(不同單片機有差別)
  72.   _EINT();                        // 總中斷允許

  73.   while(1)
  74.   {
  75.     TACTL = TASSEL_2 + MC_2 + TAIE + TACLR; // 用TA測量傳統發送程序所需時間                                                   
  76.     UART0_PutChar_Legacy(0x01);
  77.     UART0_PutChar_Legacy(0x02);
  78.     UART0_PutChar_Legacy(0x03);
  79.     UART0_PutChar_Legacy(0x04);
  80.     UART0_PutChar_Legacy(0x05);             //測試,發送8字節數據
  81.     UART0_PutChar_Legacy(0x06);
  82.     UART0_PutChar_Legacy(0x07);
  83.     UART0_PutChar_Legacy(0x08);
  84.     TACTL = TASSEL_2 + MC_0;                // TA停止計時
  85.     _NOP();                           // 在這一句設斷點查看TAR值(29652個周期)
  86.     __delay_cycles(1000000);        
  87.    
  88.     TACTL = TASSEL_2 + MC_2 + TAIE + TACLR; // 用TA測量帶FIFO的發送程序所需時間                                                   
  89.     UART0_PutChar(0x01);
  90.     UART0_PutChar(0x02);
  91.     UART0_PutChar(0x03);
  92.     UART0_PutChar(0x04);
  93.     UART0_PutChar(0x05);                    //測試,發送8字節數據
  94.     UART0_PutChar(0x06);
  95.     UART0_PutChar(0x07);
  96.     UART0_PutChar(0x08);
  97.     TACTL = TASSEL_2 + MC_0;                // TA停止計時
  98.     _NOP();                           // 在這一句設斷點查看TAR值 (440個周期)   
  99.     __delay_cycles(1000000);                    //約一秒發送一次
  100.   }
  101. }
復制代碼

程序2接受:
  1. #include <msp430x42x.h>
  2. #define RXBUF_SIZE  32                              /*接收FIFO的最大容量*/
  3. unsigned char RX_BUFF[RXBUF_SIZE];          /*接收FIFO緩沖區數組*/
  4. unsigned int  UART_InpLen=0;                /*接收FIFO內待讀取的字節數*/
  5. unsigned int  RX_IndexR=0;                  /*接收FIFO的讀指針*/
  6. unsigned int  RX_IndexW=0;                  /*接收FIFO的寫指針*/
  7. /*****************************************************************
  8. * 名    稱:UART0_GetChar()
  9. * 功    能:從串口讀取1字節數據(從緩沖隊列內讀取1字節已接收的數據)
  10. * 入口參數:*Chr:讀取數據所存放的地址指針
  11. * 出口參數:返回1表示讀取成功,返回0表示讀取失敗。     
  12. * 說    明: 讀取過程中,不阻塞CPU運行
  13. *****************************************************************/
  14. char UART0_GetChar(unsigned char *Chr)
  15. {
  16.   if(UART_InpLen==0) return(0);         // 如果FIFO內無數據,返回0
  17.   _DINT();                              // 涉及FIFO操作時不允許中斷,以免指針錯亂                              
  18.   UART_InpLen--;                        // 待讀取數據字節數減1  
  19.   *Chr=RX_BUFF[RX_IndexR];                   // 從尾指針讀取一個字節作為返回值
  20.   if (++RX_IndexR >= RXBUF_SIZE)        // 讀指針遞增,且判斷是否下標越界
  21.      {                                   
  22.        RX_IndexR = 0;                   // 如果越界則寫指針歸零(循環隊列)
  23.      }
  24.   _EINT();                              // FIFO操作完畢,恢復中斷允許
  25.   return (1);                           // 返回發送成功標志   
  26. }                                   
  27. /*****************************************************************
  28. * 名    稱:UART0_GetCharsInRxBuf()
  29. * 功    能:獲取FIFO內已接收的數據字節數
  30. * 入口參數:無
  31. * 出口參數:待讀取的字節數     
  32. *****************************************************************/
  33. unsigned int UART0_GetCharsInRxBuf()
  34. {
  35.   return (UART_InpLen);                 // 返回FIFO內數據的字節數   
  36. }                                   
  37. /*****************************************************************
  38. * 名    稱:UART0_ClrRxBuf()
  39. * 功    能:清除接收FIFO區
  40. * 入口參數:無
  41. * 出口參數:無     
  42. *****************************************************************/
  43. void UART0_ClrRxBuf()
  44. {
  45.   _DINT();        // 涉及FIFO操作時不允許中斷,以免指針錯亂
  46.   UART_InpLen=0;  // 接收的數據清空
  47.   RX_IndexR=0;   
  48.   RX_IndexW=0;    // 頭尾指針復位
  49.   _EINT();
  50. }

  51. #pragma vector=UART0RX_VECTOR
  52. __interrupt void UART0_RX (void)         // 串口接收中斷
  53. {
  54.   UART_InpLen++;                        // 接收字節計數加1
  55.   RX_BUFF[RX_IndexW] =U0RXBUF;             // 串口接收數據通過寫指針寫入FIFO
  56.   if (++RX_IndexW >= RXBUF_SIZE)        // 寫指針遞增,且判斷是否下標越界
  57.    {
  58.     RX_IndexW = 0;                      // 如果越界則寫指針歸零(循環隊列)      
  59.    }  
  60. }

  61. void main( void )
  62. {                                                               
  63.   unsigned char RxDataBuff[8];
  64.   unsigned char Addr;
  65.   unsigned char Func;
  66.   int i;
  67.   WDTCTL = WDTPW + WDTHOLD;           // 停止看門狗
  68.   FLL_CTL0 |= XCAP18PF;                // 配置晶振負載電容
  69.   U0CTL = CHAR;                        // 異步通訊模式,8位數據,無校驗,1位停止位。
  70.   ME1 |= UTXE0 + URXE0;                // 開啟串口0收發模塊
  71.   U0TCTL |= SSEL0;                // 選擇ACLK作為串口波特率時鐘源。
  72.   U0BR1 = 0;                        //
  73.   U0BR0 = 13;                        // 分頻系數整數部分=13
  74.   U0MCTL = 0x6B;                // 分頻系數小數部分調制=5/8。(2400bps)
  75.   P2SEL |= BIT4 + BIT5;  // P2.4,5 開啟第二功能,作為串口收發引腳(不同單片機有差別)
  76.   IE1 |= URXIE0;         // 開啟UART0的接收中斷,在中斷內接收數據
  77.   _EINT();                        // 總中斷允許
  78.   while(1)
  79.   {  
  80.     __delay_cycles(1000000);//模擬一個長耗時的程序,使CPU暫時不能讀取串口
  81.     if(UART0_GetCharsInRxBuf()>=10) //每收到10字節數據
  82.     {
  83.       UART0_GetChar(&Addr);         //讀取第1字節
  84.       UART0_GetChar(&Func);         //讀取第2字節
  85.       for(i=0;i<8;i++) UART0_GetChar(RxDataBuff+i); //依次讀取后8字節
  86.     }
  87.   }
  88. }
復制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:165841 發表于 2017-3-14 22:58 | 只看該作者
if(UART_OutLen==0)            // 如果是第一個字節   {     IFG1|=UTXIFG0;              // 人為制造第一次中斷條件       }是什么意思
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
久久午夜羞羞影院免费观看| 中文字幕精品—区二区| 99在线|亚洲一区二区| 麻豆免费在线| 日本视频二区| 亚洲 小说区 图片区 都市| 欧美三级视频网站| 日本一道本久久| 成人午夜电影在线播放| 色播久久人人爽人人爽人人片视av| 亚洲一区二区在线播放相泽| 国产伦理精品不卡| 91麻豆国产自产在线观看亚洲| 末成年女av片一区二区下载| 尤物视频在线观看| 丝袜脚交免费网站xx| 国产欧美一级片| 欧美成人国产精品高潮| 天美一区二区三区| 日本中文字幕一级片| 亚洲一区国产精品| 欧美精品18videos性欧| 精品国产91乱码一区二区三区 | 中文字幕亚洲在线| 欧美日韩国产美| 亚洲欧美日韩国产成人精品影院| 国产自产视频一区二区三区| 欧美在线资源| 欧美调教在线| 四虎成人精品一区二区免费网站| 秋霞a级毛片在线看| 国产精品久久久久久精| 国产美女自拍| 一区免费观看| 国产精品呻吟久久| 国产一区二区99| 少妇高潮一区二区三区喷水| 91av视频免费观看| 欧美日本视频在线观看| 日韩在线国产| 国产传媒一区二区| 成人伊人精品色xxxx视频| 欧美大片在线看| 亚洲精品一区在线观看香蕉| 欧美日韩黄色影视| 黑人狂躁日本妞一区二区三区| 国产日韩欧美高清在线| 国产精品一二三四五| 国产欧美综合一区二区三区| 亚洲精品国产成人影院| 国内黄色精品| 五月激激激综合网色播| 91久久偷偷做嫩草影院电| 国产一区二区主播在线| 欧美一级鲁丝片| av在线小说| 国产淫片在线观看| 含羞草www国产在线视频| 大胆av不用播放器在线播放| 日韩偷拍自拍| 神马电影在线观看| 日本在线丨区| 大乳在线免费观看| 青青青青在线| 毛片在线导航| 国产自产自拍视频在线观看| 午夜av在线免费观看| 1区2区3区在线视频| 菠萝蜜视频国产在线播放| jizz在线观看视频| 久久bbxx| a级片免费在线观看| 小视频免费在线观看| 1234区中文字幕在线观看| yellow字幕网在线| 成人免费短视频| 日韩高清不卡| 日韩三级av高清片| 欧美一级全黄| 日韩精品永久网址| 午夜激情一区| 久久中文在线| 国产在线麻豆精品观看| 国产成人免费在线观看不卡| 91色.com| 亚洲男人电影天堂| 天天免费综合色| 91极品美女在线| 5858s免费视频成人| 欧美大片国产精品| 国产亚洲精品综合一区91| 国产一区二区三区在线看| 毛片精品免费在线观看| 久久成人在线视频| 波霸ol色综合久久| 欧美亚洲免费电影| 国产精品入口尤物| 久久99国产精品| 欧美 另类 交| 日本男人操女人| 成人区人妻精品一区二| 美女久久久久久久久| 免费黄在线观看| 国产精品人人人人| 精品人妻一区二区三区浪潮在线| 久久久一区二区三区不卡| 自拍在线播放| 国产对白在线正在播放| 91xxx在线观看| 乱馆动漫1~6集在线观看| 欧美知名女优| 成人短视频在线| 日韩欧美三区| 无码一区二区三区视频| 免费精品视频| 久久久久亚洲蜜桃| 色婷婷av一区二区三区gif | 亚洲一区三区视频在线观看| 精品中文字幕av| 91九色蝌蚪porny| 性色av无码久久一区二区三区| 精品视频一二三区| 性xxxx奶大欧美高清| 羞羞在线观看网站| av在线免费网站| 欧美高清一级片| 先锋资源久久| 成人午夜视频在线| 欧美日韩一区二区免费在线观看| 亚洲国产91色在线| 亲爱的老师9免费观看全集电视剧| 精品一区二区国产| 毛片av免费在线观看| 久久视频精品在线观看| 一级特黄aaa大片在线观看| 国产男女猛烈无遮挡免费视频| 伊人资源视频在线| 亚洲黄色中文字幕| 999久久久免费精品国产| 狠狠色丁香久久婷婷综合丁香| 综合久久综合久久| 欧美mv日韩mv| 日韩暖暖在线视频| 日本老太婆做爰视频| 91精产国品一二三| 日日夜夜狠狠操| 在线观看xxxxvideo| 国产高清免费在线播放| 精品午夜av| 老**午夜毛片一区二区三区| 亚洲日本在线天堂| 亚洲欧美在线一区| 国产精品毛片va一区二区三区| 亚洲精品乱码久久久久久自慰 | 日本一区二区久久| 日韩一级片在线观看| 茄子视频成人在线| 日韩极品视频在线观看| 变态另类ts人妖一区二区| 精品久久在线观看| 久草热久草在线频| 欧洲亚洲精品| 男女视频一区二区| 日韩欧美亚洲成人| 4438全国亚洲精品在线观看视频| 伊人久久大香线蕉午夜av| 性欧美成人播放77777| 99久久国产热无码精品免费| 好男人社区在线视频| 成人国产一区二区三区精品麻豆| 国产欧美大片| 精品久久久久久| 性色av一区二区三区| 特色特色大片在线| 欧美一级片在线视频| 欧美乱大交xxxxx在线观看| 日韩专区在线| 图片区亚洲欧美小说区| 国产精品天干天干在线综合| 一区二区三区天堂av| 日本视频一区在线观看| 国产一区二区三区四区五区六区 | 国产污视频在线播放| 欧美三区在线| 亚洲大片免费看| 97高清免费视频| 国产成人久久777777| 国产一级片毛片| 欧美高清xxxxxkkkkk| 试看120秒一区二区三区| 国产成人综合精品三级| 精品国产免费久久| 精品国产一区二区三区日日嗨| 亚洲国产精品成人综合久久久| 在线视频亚洲色图| 日本在线观看大片免费视频| 亚洲激情网站| 欧美色成人综合| 18成人在线| 男生裸体视频网站| 国产视频你懂的| 免费高清视频在线一区| 国内精品不卡在线| 日韩黄在线观看| 在线视频91| 国产无遮挡又黄又爽又色| 丁香婷婷激情| 国产精品欧美三级在线观看| 亚洲欧洲三级电影| 欧美亚洲在线视频| 欧美色图校园春色| 最近中文字幕第一页| av3级在线| 欧美aaaaa成人免费观看视频| 日韩一级二级三级| 日韩妆和欧美的一区二区| 久久久精品99| 欧美12一14sex性hd| 999精品色在线播放| 色欧美乱欧美15图片| 国产精品swag| 欧美久久久久久久久久久久| 国产美女被遭强高潮免费网站| 一本色道久久综合亚洲精品酒店| 一级做a爱片久久| 91人人爽人人爽人人精88v| 欧美成人国产精品一区二区| yw3121.龙物视频永不失联| 欧美久久香蕉| 性做久久久久久久久| 日韩欧美国产骚| 国产日韩精品在线| 偷拍夫妻性生活| 天天噜噜噜噜噜噜| 欧美美女一区| 欧美日韩在线播放三区| 欧美国产一二三区| 欧美一级视频免费观看| 久久精品a一级国产免视看成人| 亚洲精品免费观看| 日韩精品在线免费| 日韩国产一级片| 一区二区www| 岛国成人毛片| 懂色av中文一区二区三区| 美女精品视频一区| 亚洲制服在线观看| 日日干夜夜草| 欧美日韩一二| 欧美三级日韩三级国产三级| 日本不卡一区| 免费在线观看日韩| 91官网在线| 久久成人免费电影| 久久av资源网站| bl动漫在线观看| 少妇高潮喷水久久久久久久久久| 这里只有精品国产| 妞干网免费在线视频| 久久综合色8888| 91久久精品一区| 青青草原免费观看| 日韩av中文| 国产精品亚洲专一区二区三区 | 国产在线观看a视频| 高清av一区二区| 国产精品扒开腿做爽爽爽视频 | 国产秀色在线www免费观看| 成人深夜视频在线观看| 日韩免费在线播放| 久久久精品视频免费观看| 国产一级免费在线观看| 国产在线麻豆精品观看| 日韩免费黄色av| 中日韩黄色大片| 亚洲精品国产精品国产| 国产精品人妖ts系列视频| 国产 高清 精品 在线 a| 亚洲国产av一区二区三区| 日韩影院在线| 亚洲一区二区在线免费看| 亚洲日本japanese丝袜| 午夜一区在线观看| 亚洲丝袜美腿一区| 精品成人在线观看| 欧美日韩一区二区区| 天堂中文字幕| 懂色av中文一区二区三区| 2014国产精品| www国产在线| 亚洲精品蜜桃乱晃| 日韩黄在线观看| 国产精品入口麻豆| 免费在线观看一级毛片| 91免费国产在线观看| 韩国一区二区三区美女美女秀| 国产乱淫片视频| 91成人精品在线| 亚洲福利小视频| 中国极品少妇videossexhd| 神马电影在线观看| 欧美国产精品一区二区三区| 欧美日韩高清在线一区| 成人午夜影视| 国产亚洲一区二区手机在线观看| 久久影院午夜精品| 精品无人区乱码1区2区3区在线| 超碰97在线资源| 国产一区二区在线视频聊天| 欧美第一在线视频| 欧美一区二区三区免费| 熟妇无码乱子成人精品| 一区二区三区视频国产日韩| 成人动漫中文字幕| 欧美精品一区二区三区在线看午夜 | 黄色成人在线网站| 国模视频一区二区三区| 日产精品久久久久| 在线观看欧美| 亚洲成人aaa| 手机看片福利视频| 欧美电影免费观看| 欧美电影一区二区| 国产精品无码网站| 91av久久| 正在播放亚洲一区| av女人的天堂| 136福利视频| 久久99精品久久久| 狠狠色噜噜狠狠色综合久 | 搜索黄色一级片| 忘忧草在线www成人影院| 91精品国产综合久久久蜜臀图片| 精品国产av色一区二区深夜久久| 在线你懂的视频| 欧美一a一片一级一片| 蜜桃色一区二区三区| www视频在线看| 在线视频中文字幕一区二区| 午夜免费福利视频在线观看| 偷拍25位美女撒尿视频在线观看| 最新国产精品久久精品| 免费在线观看的毛片| 黄色大片在线看| 欧美日韩亚洲一区二区| 日本美女视频网站| 亚洲欧美电影| 亚洲欧美另类中文字幕| 久久久精品免费看| 日韩成人免费| 国产精品大片wwwwww| 视频一区 中文字幕| 日本韩国在线观看| 午夜国产欧美理论在线播放 | 岛国av免费在线观看| 欧美主播一区二区三区| 色乱码一区二区三区在线| av免费网站在线观看| 欧美人牲a欧美精品| 99精品全国免费观看| 久久久久久亚洲精品美女| 日韩在线观看你懂的| 国产999久久久| 亚洲国产99| 亚洲自拍中文字幕| 黄色的毛片免费| 国产欧美一区二区三区鸳鸯浴| 一女被多男玩喷潮视频| 成人高清网站| 日韩欧美成人一区二区| 久久网中文字幕| 精品福利久久久| 91免费福利视频| 操操操com| 一区二区免费看| xxxxx在线观看| 欧美日韩黄网站| 欧美又大又粗又长| 久热中文字幕在线| 91一区二区三区在线观看| 岛国毛片在线播放| 欧美影视资讯| 久久国产精彩视频| 在线亚洲日本| 久久一留热品黄| 亚洲911精品成人18网站| xxxxx.日韩| 欧美另类xxx| 欧美日韩综合高清一区二区| 91亚洲精品一区二区乱码| 一区二区三区国产免费| 天堂网在线最新版www中文网| 亚洲视频在线视频| 国产黄色片免费| 国产在线观看一区二区| 欧美精品一区二区三区免费播放| 2018av在线| 久久久久久91| 国产又爽又黄视频| 成人免费在线观看入口|