微控制器串列埠通訊傳輸16位傳到8位接收端怎麼區分第一次和第二次接收?求指教

時間 2021-08-31 19:59:18

1樓:尋覓蒼天

對你的問題有些疑問

目前接觸的微控制器以8位為主。每次都是傳輸8位資料,也就是乙個位元組。

根據你的問題,有兩種情況。一種是一次傳送兩個位元組的16位資料,這種情況實際是傳送兩次的。另一種情況是一次性傳送乙個字16資料,這樣的話不知道接收端能不能反應過來。

如果能反應過來的話,你可以傳送16位資料,然後根據接收情況看一下具體傳送情況。

2樓:匿名使用者

接收端怎麼區分第一次接收和第二次接收 傳送端sbuf = c1%256; //是256,先發低8位while(!ti); ti=0;

sbuf = c1/256; //後發高8位while(!ti); ti=0;

接收端while(!ri);ri=0;

c0=sbuf; //先收低8位,c0定義成8位while(!ri);ri=0;

c00=sbuf; //後收高8位,c00定義成16位c00=c00*256+c0;

c00就是接收後恢復成的傳送的16位數c1了。

3樓:萍水相逢就是緣吧

順序傳送

當然順序接收

4樓:

對不起啊,這個我不知道

51微控制器通過串列埠不斷連續傳送兩次資料(一次傳送8位,先發a,再發b),另乙個51微控制器進行接收,

5樓:匿名使用者

想非常安全,那就要有接收確認機制。

1,傳送a

2,接收微控制器接收到後返回相同值,

3,傳送微控制器接收到返回的a,完成一次傳送。

4,再傳送b,

5,接收微控制器接收到b返回相同值,

6,傳送微控制器接收到返回的b,完成一次傳送。

其實就是1,2,3步驟的重複。如果返回的資料不是傳送的資料那就再回到1

6樓:

如果可以的話你每幀資料發三個位元組

就是說你發c,a,b

接收微控制器收到了c就知道下乙個來的是a而非bc是你隨便定義的乙個數就可以

51微控制器怎麼連續接收2個8位資料,我用的是串列埠中斷接收的,但只能接收到其中的乙個數,求高手幫忙???

7樓:匿名使用者

應該是復你處理不當,將第二制個資料丟失了,可以開闢乙個緩衝區來解決這個問題。

#include

#define uchar unsigned charuchar recive[16],num=0;

void uart() inerrupt 4}main()

8樓:匿名使用者

串列埠的波特率是不是比較高,而中斷服務子程式又比較長,這樣,在串列埠中斷程式還沒有執行完,就又收到了乙個位元組,那麼這個位元組就會丟了。在保證從中斷及時返回,才能連續收到資料。

9樓:墨爾本晴小果

接收到的資料要有快取區,接收到後要分別儲存,如果第一次的資料沒有讀走,第二次的有來了,會把第一次的覆蓋掉!

10樓:

是不是處理數太慢了,處理時串列埠又中斷了。如果處理時禁止中斷,串列埠就收不到了。

微控制器串列埠通訊問題,51微控制器串列埠通訊問題

修者世界 p3 0xff的作用其實很簡單,就是為了更好的完成 讀 修改 寫 這個過程,其實對於p3口是沒有必要的,對於p0口這樣做是應該的。 革玉花戚雪 微控制器串列埠通訊的問題,其實你只有乙個問題,就是 p0 0xf0 s2buf 0xfc p0 s2buf 為什麼這裡p0是0x00 你覺得p0應...

pc機與微控制器串列埠通訊問題利用串列埠通訊助手將字串發給微控制器微控制器返回字串到串列埠通訊助手

問題出在你傳送時關掉中斷,因為丟掉了資料造成的,解決的辦法是 延時一段時間等待接收完畢後再傳送,比如檢測到有接收資料後,延時10毫秒,之後再傳送回pc。 掃地走人 給你指出幾處明顯的錯誤。1.resv沒有最大值的限定,這樣你的程式在執行的時候ch resv 會指向不明地址,因為ch最大為10個位元組...

微控制器串列埠通訊是否必須要建立通訊協議?微控制器之間通訊是否也必

微控制器進行串列埠通訊,需要設定波特率和一些電氣引數 一般定義1bit起始位,8bit資料位,1bit停止位,無奇偶校驗位 這些就屬於通訊協議的範疇。再則,微控制器接收的資料,需要進行處理,所以你必須要知道接收的資料代表的意義,這也是通訊協議,只是不太嚴格的通訊協議。而比較嚴格的通訊協議則一般會定義...