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

標題: 關于單片機串口接收數據保存 [打印本頁]

作者: hmgqljz111    時間: 2019-10-16 15:18
標題: 關于單片機串口接收數據保存
A和B都是單片機,B的程序是固定死的不可以修改主。A給B發送數據。B會根據A發送的指今,返回不同的數據,有 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)
在不同的返回數據里面只有最后一組的 90 50 0X 0X 0X 0X FF這些要保留下來,我在串口中斷中做如下的接收判斷,可以是只能接50,50以后的數據不能接收。請教如何判斷并且把這些數保存到數組當中。
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以后的。

作者: 來51學習2    時間: 2019-10-16 18:09
你在串口中斷里面 ES=0 ,關閉了串口中斷
作者: csmyldl    時間: 2019-10-16 18:20
所接收數據是一次返回還是多次返回的?如果是多次返回的,只需判斷返回數據的長度,當長度為7時復制到存儲器就行
作者: Flywithliye    時間: 2019-10-16 20:47
建議您把 uchar temp,j;
改為 static uchar temp,j;
否則每次進入中斷時候,j的值都會被清零。即實際上,每次讀寫的位置都是 buf[0]
作者: hmgqljz111    時間: 2019-10-17 10:40
Flywithliye 發表于 2019-10-16 20:47
建議您把 uchar temp,j;
改為 static uchar temp,j;
否則每次進入中斷時候,j的值都會被清零。即實際上, ...

謝謝。我有時間再試一下




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1