找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2838|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

關(guān)于單片機(jī)串口接收數(shù)據(jù)保存

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:230975 發(fā)表于 2019-10-16 15:18 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
A和B都是單片機(jī),B的程序是固定死的不可以修改主。A給B發(fā)送數(shù)據(jù)。B會根據(jù)A發(fā)送的指今,返回不同的數(shù)據(jù),有 00 90 38 FF   還有90 41 FF 90 51 FF還有90 41 FF 90 51 FF 90 50 0X 0X 0X 0X FF (_X代表從0-F)
在不同的返回數(shù)據(jù)里面只有最后一組的 90 50 0X 0X 0X 0X FF這些要保留下來,我在串口中斷中做如下的接收判斷,可以是只能接50,50以后的數(shù)據(jù)不能接收。請教如何判斷并且把這些數(shù)保存到數(shù)組當(dāng)中。
void ser() interrupt 4
    {
                  
               uchar temp,j;
         
                  
                   RI=0;   
           temp=SBUF;
                   if(temp==0x50)
                      {
                                  buf[j++]=SBUF;
                                   if(j==5)
                                     {
                                           j=0;
                                           ES=0;
                                         }
                          
                          }
        

                        
        }
這是我的串口接收程序。這樣只能接收50.不能接收50以后的。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:619594 發(fā)表于 2019-10-16 18:09 | 只看該作者
你在串口中斷里面 ES=0 ,關(guān)閉了串口中斷
回復(fù)

使用道具 舉報

板凳
ID:235200 發(fā)表于 2019-10-16 18:20 | 只看該作者
所接收數(shù)據(jù)是一次返回還是多次返回的?如果是多次返回的,只需判斷返回數(shù)據(jù)的長度,當(dāng)長度為7時復(fù)制到存儲器就行
回復(fù)

使用道具 舉報

地板
ID:220005 發(fā)表于 2019-10-16 20:47 | 只看該作者
建議您把 uchar temp,j;
改為 static uchar temp,j;
否則每次進(jìn)入中斷時候,j的值都會被清零。即實(shí)際上,每次讀寫的位置都是 buf[0]
回復(fù)

使用道具 舉報

5#
ID:230975 發(fā)表于 2019-10-17 10:40 | 只看該作者
Flywithliye 發(fā)表于 2019-10-16 20:47
建議您把 uchar temp,j;
改為 static uchar temp,j;
否則每次進(jìn)入中斷時候,j的值都會被清零。即實(shí)際上, ...

謝謝。我有時間再試一下
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表