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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

MSP430單片機異步通信程序(發送),含注釋

[復制鏈接]
跳轉到指定樓層
樓主
ID:808634 發表于 2021-7-24 14:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. /*************************
  2. 發送數據幀的程序
  3. 利用發送中斷,發送過程不阻塞CPU繼續執行后續代碼
  4. Author:七禾頁8
  5. site:創客基地

  6. 缺點:必須整幀地發送數據。
  7. 需要將一次發送的數據都先整理完畢才能啟動發送,
  8. 且必須等待上一幀發完才能啟動下一幀的發送,
  9. 不能在程序中隨時地按字節發送數據
  10. **************************/

  11. #include "msp430x14x.h"

  12. #define uint unsigned int
  13. #define uchar unsigned char
  14. #define ulong unsigned long
  15. #define TXBUF_SIZE 32   //一幀最多能發送的數據字節數
  16. unsigned char TX_BUFF[TXBUF_SIZE];      //發送緩沖區
  17. unsigned char TX_NUM;     //發送字節總數變量
  18. unsigned char TX_CNT;     //發送字節計數變量



  19. /*******************************
  20. *名稱:UART0_PutFrame()
  21. *功能:從串口發送1幀數據
  22. *入口參數:Ptr:待發送數組的首地址(數組名)
  23.            Lenth:數據幀長度
  24. *出口參數:返回1表示成功
  25.            返回0表示失敗
  26. *說明:發送過程中,不阻塞CPU運行
  27. ********************************/
  28. char UART0_PutFrame(unsigned char*Ptr,unsigned int Lenth)
  29. {
  30.   int i;
  31.   if(IE1 & UTXIE0)
  32.     return (0);   //如果上一幀沒發送完,返回0
  33.   if(Lenth>TXBUF_SIZE)
  34.     return(0);    //長度超過最大緩沖區,返回0
  35.   for(i=0;i<Lenth;i++)
  36.   {
  37.     TX_BUFF[i]=Ptr[i];    //待發送數據裝填進入發送緩沖區
  38.   }
  39.   TX_CNT = 0;   //發送字節數清0
  40.   TX_NUM = Lenth;   //發送字節總數
  41.   IFG1 |= UTXIFG0;    //人為制造第一次發生中斷
  42.   IE1 |= UTXIE0;  //允許UART0的發送中斷
  43.   return(1);      //返回發送成功
  44. }

  45. /*************************
  46. 發送中斷
  47. **************************/
  48. #pragma vector = UART0TX_VECTOR
  49. __interrupt void UART0_TX(void)   //串口發送中斷
  50. {
  51.   U0TXBUF = TX_BUFF[TX_CNT];      //將本次應該發送的數據送入TXBUF
  52.   TX_CNT++;     //下一次 依次發送后續字節
  53.   if(TX_CNT >= TX_NUM)      //發送字節計數到達發送總數
  54.   {
  55.     IE1 &= ~UTXIE0;    //禁止UART0的發送中斷,停止發送
  56.   }
  57. }

  58. /********************
  59. 時鐘初始化
  60. ***********************/
  61. void BCS_Init()
  62. {
  63.   uchar j;
  64.   WDTCTL = WDTPW + WDTHOLD;   //關閉看門狗
  65.   //使用外部高頻晶體振蕩器
  66.   BCSCTL1&=~XT2OFF;       //使用外部XT2晶振8M
  67.   do{
  68.       IFG1&=~OFIFG;   
  69.       for(j=0XFF;j>0;j--);
  70.     }while((IFG1&OFIFG));    //等待晶振震蕩平穩
  71.   BCSCTL2|=SELM_2;        //MCLK選擇XT2
  72. }


  73. /********************
  74. IO初始化
  75. ***********************/
  76. void IO_Init()
  77. {
  78.   P3DIR|=BIT4;      //P3.4  UTXD0設置為輸出
  79.   P3DIR&=~BIT5;     //P3.5  URXD0設置為輸入
  80.   P3SEL|=BIT4+BIT5;     //開啟第二功能 (通信功能)
  81. }


  82. /********************
  83. 通信初始化
  84. ***********************/
  85. void communication_Init()
  86. {
  87.         ME1 |= UTXE0 + URXE0;  // 使能USART0收發
  88.         UCTL0 |= CHAR + SWRST;     // 8-bit 數據,一位停止位 SWRST=1 設置串行口
  89.         UTCTL0 |= SSEL0;           // 選擇時鐘,UCLK = ACLK,32768
  90.         UBR00 = 0x03;    // 32k/9600選擇ACLK
  91.         UBR10 = 0x00;   //
  92.         UMCTL0 = 0x4a;            // Modulation
  93.         UCTL0 &= ~SWRST;    // 初始化UART0狀態機,一般要設置好串口之后才復位
  94.         P2DIR |= BIT0;
  95. /*************在初始化代碼中增加下面兩句*************/
  96.         IE1 |= URXIE0 + UTXIE0;           // URXIE0允許接收中斷 + UTXIE0允許發送中斷
  97.         _EINT();     //總中斷允許
  98. }



  99. void main( void )
  100. {
  101.     uchar TxTestBuff[8]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
  102.     BCS_Init();     //時鐘初始化
  103.     IO_Init();      //IO初始化
  104.     communication_Init();   //通信初始化
  105.     while(1)
  106.     {
  107.       UART0_PutFrame(TxTestBuff,8);     //發送一個長度約為8B的數據幀
  108.       __delay_cycles(10000000);           //約一秒發送一次
  109.     }
  110. }


復制代碼


評分

參與人數 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:33438 發表于 2021-10-7 22:51 | 只看該作者
謝謝分享 正在學習中 好東西
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品区一区二区三区 | 国产小视频在线 | 国产成人99久久亚洲综合精品 | 两性午夜视频 | 免费观看黄a一级视频 | 亚洲国产一区二区在线 | 人人干天天干 | 亚洲天堂二区 | 91在线精品一区二区 | 国产精品国产精品国产专区不片 | 欧美成人综合 | 国产精品一区二区三区在线播放 | 成人欧美一区二区三区在线播放 | av在线一区二区三区 | av入口| 日韩综合网 | 一区二区三区欧美在线 | 亚洲一一在线 | www网站在线观看 | 亚州精品成人 | 一区二区三区高清不卡 | 成人av一区二区在线观看 | 精品在线播放 | 婷婷丁香激情 | 伊人网在线播放 | 国产精品国产成人国产三级 | 欧美一区二区在线视频 | 在线看中文字幕 | 草草视频在线播放 | 久久精品黄色 | 美日韩免费 | 亚洲国产精品久久 | 国产精品国产精品国产专区不片 | 在线观看视频一区二区三区 | 秋霞精品 | 国产成人精品一区二区三区在线 | 精品96久久久久久中文字幕无 | www精品 | 中文字幕国产视频 | 欧美日韩精品专区 | 中国一级大毛片 |