微控制器串列埠傳送的最大數字超過255就不準確了是怎麼回事

2021-05-24 13:22:15 字數 3256 閱讀 4624

1樓:

肯定的啊,串列埠通訊你按9600,n,8,1 即8位資料(2進位制 2的8次方0-255)最大就是0xff即10進位制的255.

如果出現大於255的資料比如256,那麼就是0x100。而你接收端只接收到00了。。

所以如果傳送超過255的資料需要用2個8位暫存器 超過65535就要3個8位暫存器。。

然後在接收側採用比如r0,r1 ,r0是低8位r1是高8位

c的話就需要定義一個合適的暫存器大小比如255以內是char 65535以內是int 在大就需要long瞭然後用或的方式合併接收到的高8位

51微控制器怎麼通過串列埠通訊在數碼管的顯示大於255的值

2樓:匿名使用者

不管十進位制,還是16進位制,在記憶體中都是以二進位制的形式儲存的

十六進位制專ff 和十進位制 255 在記憶體

中都是 1111 1111

這種分離個屬十百的方法邏輯上沒什麼值得懷疑的

寫成十進位制還是十六進位制不影響計算結果

bai=x/100;你將100換成0x64結果是一樣的

我們應用10 進位制已經很習慣了,編譯器也認識,何必將其再化成二進位制或者16進位制呢

串列埠助手大多有兩種傳送方式:十六進位制數,但有的只能發單個字元的十六進,如f可以當15 但ff 就發不出去

二是文字模式,即每個字元的asci 碼,如1 發的是0x31即十進位制的49

12就當49 和50兩次發出去

高階一點的串列埠助手,象ffh,0xff,255都可以當十六進位制數發出去,但為了防止出錯,還是應該格式統一

3樓:崔運生

這個,建議多看一些有關編碼的知識。

串列埠助手「以16進位制傳送資料」時,軟體會先將「專ff」轉換屬成8位二進位制資料「11111111」即十進位制資料「255」傳送出去。微控制器接收到的實際上也是二進位制資料「11111111」。

而你的微控制器**中「bai=x/100;"是我們人類的思維模式,編譯器將**編譯時,實際上進行的運算是"bai=x/0b01100100"。

51微控制器與vb通過串列埠通訊,微控制器為什麼只能傳送0至255的數?然後怎麼解決(發大於255的數)???

4樓:匿名使用者

傳送大數,你只能多次傳送,一次只能傳送一幀,而串列埠傳送的一幀可能是7、8、9位,由你設定而定。

5樓:

51微控制器是8位的,一次只能處理8位資料,也就是一個位元組,一個位元組只能表示0-255的大小的資料。

6樓:匿名使用者

一個位元組確實只能是0-255,但你可以連續發兩個位元組然後在vb裡面組成一個大於255的數。

比如發257就是0x01,0x01

7樓:匿名使用者

資料型別是char型只能是0-255

發int就會大了

串列埠最大一個資料是8位的,可以用多個位元組表示一個資料啊

8樓:匿名使用者

可以傳送多次,分別發這個數的個十百千萬位。然後用程式組合

為啥我用串列埠助手向plc傳送的資料只存在一個暫存器裡面。傳送大於ff的資料就亂了。 10

9樓:匿名使用者

暫存器 是 幾位的?byte 或者 word ?

串列埠通訊問題,為什麼高8位乘上256(2的8次方)加上低8位=t1?

10樓:匿名使用者

串列埠通訊問bai

題,是電腦du串列埠收到兩個位元組的zhi資料,分別為高8位和低dao8位,電腦再內恢復成16位資料吧

容。舉例分析,假如t1=0x0213,高8位為02h,低8位為13h,變成十進位制數是256+19=375。接收的就是高8位是02h,低8位是19h。

可是c語言要恢復成16位的數,必須要經過計算得到。t1=2×256+19=375。

什麼微控制器的串列埠數量最多

採用微控制器採集時動態範圍大於2的8次方是指什麼呢?

11樓:匿名使用者

微控制器採集時首先是能過ad將模擬

訊號轉為發字訊號,一般微控制器的模擬回訊號輸入範圍是0到5v,如果ad模組的答精度是8位,那麼獲得的數字訊號是0-255之間的整數,動態範圍是2的8次方即256,如果ad模組的精度是10位,那麼獲得的數字訊號是0-1023,動態範圍是2的10次方即1024,如果要求動態範圍大於2的8次方,那麼9位10位和12位的ad轉換模組均滿足求

微控制器串列埠怎麼接收超過255位元組的資料,陣列只能存放255位元組,有什麼方法可以實現不間斷的接收

12樓:匿名使用者

和你定義的資料型別有關,char就是256位元組 的,你只要不關閉串列埠自然會一直接收的。

13樓:匿名使用者

1、如果開發上位機,然後採用串列埠與下位機微控制器通訊,之後將採集的資料不斷回傳到上內位機資料庫中儲存,該方案容適合大量資料的採集和處理

2、如果僅希望儲存於微控制器中,在記憶體允許的情況下,定義一個更大的陣列,自然可以實現一定資料量的實現不間斷的接收

3、更多交流參考我空間主頁有關文章

14樓:做而論道

陣列只能存放255位元組,.....

----

你為什麼不定義大一些的陣列呢?

51微控制器串列埠通訊傳送多個位元組的問題

15樓:徐貴洪

你的程式反應你的思路。思路有問題,結果就有問題。顯示就一直放在迴圈 不要加什麼條件判斷避免意外的閃爍,中斷裡面(可以不看建議 最好分兩次,資料,資料的反碼來校驗資料的正確性)關鍵來了 :

進去之後把ren暫存器關了禁止接收。處理完裡面的事情在把它開啟。傳送端每發一次需要等待一次 ,處理是需要時間的。

多少可以估計的出來 大一點一般。好就這樣就能解決

16樓:做而論道

串列埠通訊,每次,只能是一個位元組,即:0~255。

0~65535,就要用兩次。

0~65536,就要用三次。

這麼多位元組的傳送,樓主是怎麼傳送的?

17樓:珠山龍少

能提供一下原理圖嗎?你的接收函式也有問題。

18樓:桀驁

照抄了樓主最後那無比精妙的if語句,我的程式果斷活了。

51微控制器的串列埠io(txd,rxd),能否同時接到兩片ma

理論上是可以的,但你必須從應答的流程上保證,在任意時刻最多只能有一個從 版機在傳送資料,這權點要考慮清楚。另外,txd,rxd可能驅動不了這麼多口子,最簡單的辦法,你可以將訊號輸入到一個74ls04,以增強其驅動。可以!用一片cd4052晶片把txd rxd分接到兩片max232晶片中去。cd405...

51微控制器串列埠通訊接收的過程的疑問

第一,接收資料時如果有高階別中斷產生,那麼將響應該中斷,接收資料將失敗,資料丟失。第二 響應中斷後,沒有退出中斷前,如果繼續有資料傳送過來,那麼後傳送過來的資料將丟失。關於微控制器串列埠收發過程的幾個疑問 微控制器程式設計 原則,所有中斷 程式 應該儘可能 簡短小,如 串列埠 中斷 只把接收 的資料...

一下STC帶串列埠的微控制器,不要模擬串列埠的。引腳越少越好。至少3k flash。帶內部振盪器的

自己上stc官網查查啊 stc15f204ws stc15f104w sop8,最適合你用了!採納吧!推薦一款引腳少並且帶雙串列埠的stc的微控制器 你看看stc15f104e微控制器吧,8腳的。不過內部資源不多。p89lpc904微控制器也是8腳的,內建有ad da轉換器。attiny13也是8腳...