欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機串口如何接收數組?不理解

[復制鏈接]
跳轉到指定樓層
樓主
ID:891306 發表于 2021-4-2 16:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
手機發送數組后,單片機能接收該數組,并將該數組通過蜂鳴器音樂盒的方式播放出音樂我現在不理解的是,串口如何接收數組,懇請各位大佬指點一二。。。。謝謝



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

使用道具 舉報

沙發
ID:47286 發表于 2021-4-2 19:16 | 只看該作者
建立個數組 從0位開始 收一個就存一個進去 然后計數變量+1 就是下一個數組位號 以此類推直到存完所有接收的數據
回復

使用道具 舉報

板凳
ID:686782 發表于 2021-4-2 19:23 | 只看該作者
數組不就是多個同類型的集合嗎,你字符串不也相當于char數組嗎,不是照樣能發送 一個道理啊
比如一個char數組8個元素,你想辦法讓給他分八次發送不就行了  不知道大小的可以用sizeof求元素數目
如果你要同時發聲的話應該夠嗆,不太好協調 這種什么頻率音符的數組一般也比較大,串口通訊速率感覺會不太行。
你如果數組都能全部接到了,直接存下來不就行了,然后調用你的音樂播放函數。
回復

使用道具 舉報

地板
ID:891306 發表于 2021-4-3 10:09 | 只看該作者
void Usart() interrupt 4        //進入中斷服務函數
{
        if(form==2)
        {
     if(SBUF=='v')
                {
                        form=0;
                        SBUF=form;
                                timer0h=0;
                                timer0l=0;
                                time=1;
                                sec = 0;
                                num = 0;       
                  while(!TI);                         //等待發送數據完成
            TI=0;                                                 //清除發送完成標志位
                }
                if((form==2)&&(SBUF!='@'))//數組接收截止標志                                             //串口接收
                {       
    if((RI==0)&&(form==2))
   {
                 array[n]=SBUF;
                 SBUF=array[n];
     RI=0;
     n++;
           while(!TI);                         //等待發送數據完成
           TI=0;                                                 //清除發送完成標志位
          }
        }
        }


這是我寫的接收數組的程序,form==2的時候是接收數組模式。但是不知道哪里有問題,懇請大佬指點一下
回復

使用道具 舉報

5#
ID:824490 發表于 2021-4-3 15:06 | 只看該作者
1:定義一個接收計數器 RX_COUNT=0
2:定義一個接收數組 RX_BUF【64】,最多一次接收64B
3:接收中斷中:
i
{
    Res =USART_ReceiveData(USART1);    //接收一個B
  UART1_SendByte(Res);//有需要則反彈數據
  RX_BUF[RX_COUNT]=Res;//數據入組
    if ((RX_BUF[RX_COUNT]==0X0A)&&(RX_BUF[RX_COUNT-1]==0X0D)) // 判斷接收到結束符
        {
         RX_COUNT=0;//清除接收計數
         uart_cmd=1;//置全局標志,接收到完整 的一組數據
        }
     else RX_COUNT++;//沒有結束符,繼續等下一個字節
    if (RX_COUNT>64)

    {
      RX_COUNT=0;//計數溢出
      UART1_SendByte(Over_flag);//發送出溢出標志,讓對方重新發送

    }

    }
   
}
4:在Mian()中
  while(uart_cmd)

//處理接收到的有效數據



回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表