久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

MSP430單片機UART幀超時處理程序

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

關于本程序的詳細解說大家可以下載電子書點擊上圖即可

  1. #include <msp430x42x.h>
  2. #define FRAMEBUF_SIZE  32                 /*最大幀長度*/
  3. #define IDLELINE_TIME  200                /*線路空閑判據時間*/
  4. unsigned char FrameBuff[FRAMEBUF_SIZE];   /*接收幀緩沖區數組*/
  5. unsigned int  UART_RcvCnt=0;              /*接收計數*/

  6. #pragma vector=UART0RX_VECTOR
  7. __interrupt void UART0_RX (void)        // 串口接收中斷
  8. {
  9.   TAR=0;                                //清除幀空閑計時值
  10.   TACTL|=MC_1;                          //開始計時
  11.   if(UART_RcvCnt<FRAMEBUF_SIZE)         //若緩沖區未滿
  12.     {
  13.       FrameBuff[UART_RcvCnt]=U0RXBUF;   //接收一字節數據
  14.       UART_RcvCnt++;                    //指向下一字節
  15.     }
  16.    else  IFG1 &=~ URXIFG0;              //接受區已滿,不接收
  17. }  //讀取RXBUF會自動清除串口中斷標志,不接收時需要手動清除

  18. #pragma vector=TIMERA1_VECTOR
  19. __interrupt void TA_ISR(void)           //定時器溢出中斷
  20. { int i;
  21.   if(TAIV==10)                          //TA溢出
  22.   {
  23.    TACTL &=~ MC_3;                      //停止計數器                  
  24.    //--------------------------------------------------------------------------
  25.    // 數據幀接收完畢,在這里寫數據幀處理程序,注意緩沖區只用前UART_RcvCnt個數據
  26.     _NOP();  //在這里設斷點查看FrameBuff[]數組的數據
  27.    //--------------------------------------------------------------------------               
  28.    UART_RcvCnt=0;             //清除接收計數
  29.    for(i=0;i<FRAMEBUF_SIZE;i++) FrameBuff[i]=0; //清除接收緩沖區(可省略)
  30.   }
  31. }  

  32. void main( void )
  33. {                                                               
  34.   WDTCTL = WDTPW + WDTHOLD;                   // 停止看門狗
  35.   FLL_CTL0 |= XCAP18PF;                        // 配置晶振負載電容
  36.   U0CTL = CHAR;                                // 異步通訊模式,8位數據,無校驗,1位停止位。
  37.   ME1 |= UTXE0 + URXE0;                        // 開啟串口0收發模塊
  38.   U0TCTL |= SSEL0;                        // 選擇ACLK作為串口波特率時鐘源。
  39.   U0BR1 = 0;                                //
  40.   U0BR0 = 13;                                // 分頻系數整數部分=13
  41.   U0MCTL = 0x6B;                        // 分頻系數小數部分調制=5/8。(2400bps)
  42.   P2SEL |= BIT4 + BIT5;  // P2.4,5 開啟第二功能,作為串口收發引腳(不同單片機有差別)
  43.   IE1 |= URXIE0;                         // 開啟UART0的接收中斷,在中斷內接收數據
  44.   TACTL = TASSEL_1  + TAIE;             // TA設為增計數模式,時鐘=ACLK,開中斷
  45.   TACCR0=IDLELINE_TIME;                 //設置溢出超時條件            
  46.   _EINT();                                // 總中斷允許
  47.   while(1)
  48.   {   
  49.     //CPU可以執行其他任務
  50.   }
  51. }
復制代碼



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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕亚洲精品在线观看 | 亚洲一区二区在线视频 | 婷婷五月色综合 | 欧美综合国产精品久久丁香 | 大久| 亚洲视频在线看 | 99精品亚洲国产精品久久不卡 | 午夜日韩 | 久久久久一区二区三区 | 九九亚洲| 操久久| 亚洲欧洲中文日韩 | 成人午夜免费视频 | 黄色在线播放视频 | 全免费a级毛片免费看视频免费下 | www日| 91精品国产综合久久久动漫日韩 | 久久久久久91 | 免费国产视频在线观看 | 国产精品久久久久久网站 | 天啪| 一区二区不卡高清 | 国产乱码精品一品二品 | 亚洲一区 中文字幕 | 在线欧美一区 | 色天堂影院| 亚洲资源在线 | 欧美中文字幕一区 | 91精品国产91久久久久久不卞 | 久久伊人久久 | 91久久爽久久爽爽久久片 | 91成人在线| 91精品中文字幕一区二区三区 | 黄色小视频大全 | 国产一区二区三区 | 成人在线一级片 | 人人人人干 | 色综合久久久久 | 精品国产91乱码一区二区三区 | 国产综合久久 | 蜜臀久久99精品久久久久野外 |