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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4872|回復: 0
收起左側

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

[復制鏈接]
ID:108615 發表于 2016-3-14 19:17 | 顯示全部樓層 |閱讀模式
本程序是《MSP430系列單片機系統工程設計與實踐》書里面的源碼,(包含工程文件 (例2.9.14)))完整例程下載:http://www.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. }
復制代碼



回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99久久中文字幕三级久久日本 | 久久久久久久久毛片 | 男女久久久 | www.欧美.com | 免费亚洲一区二区 | 欧美精 | 久久男人天堂 | 精品国产一区二区三区性色av | 欧美一级淫片007 | 欧美一二三区 | 婷婷午夜天| 精精国产xxxx视频在线 | 久久国产精品一区二区 | 羞羞的视频免费观看 | 一级毛片视频 | 日韩免费福利视频 | 黄色操视频 | 精品国产一区二区三区在线观看 | 欧美精品1区2区 | 午夜精品一区二区三区在线视频 | 国产一区三区视频 | 在线免费看毛片 | 亚洲日日| 视频一区在线 | .国产精品成人自产拍在线观看6 | 高清黄色| 91精品国产99 | 久久久精品一区 | 亚洲精品一二三 | 在线看免费 | 久久久精品日本 | 91久久精品日日躁夜夜躁国产 | 亚洲一区二区三区免费在线观看 | av中文字幕网| 日本一区二区电影 | 特级毛片www | 亚洲精品黑人 | 亚洲电影免费 | 成人在线免费电影 | 久久国产一区 | 日屁视频 |