如何用串列埠將資料傳給微控制器裡面的暫存器?也就是串列埠接收的資料來更新暫存器的值

時間 2021-09-06 02:04:31

1樓:匿名使用者

舉個例子吧,將pc傳送來的資料,依次存入到30h開始的內部ram中。

org 0000h

ljmp main

org 0030h

main:

mov tmod,#20h

mov th0,#0fdh

mov tl0,#0fdh

setb tr1

mov scon,#50h

mov r0,#30h

mov r2,#80

loop:

jnb ri,$

clr ri

mov a,sbuf

mov @r0,a

inc r0

djnz r2,loop

sjmp $end

2樓:小毛豆

正常傳送就行了,比如用電腦的串列埠精靈,微控制器接收後會自動將8位資料送入sbuf暫存器中,並將串列埠接收標誌位ri置1,直接從中讀取就行了。傳送也是一樣,將8位資料送入sbuf暫存器,微控制器就會自動傳送資料,傳送完畢後會將串列埠傳送標誌位ti置1。

3樓:

先用串列埠助手等工作(或自己編寫的程式)通過計算機串列埠(com口)傳送資料到微控制器,當然微控制器需要程式設計比如中斷方式接收來自計算機發的資料,接到後將其存入微控制器暫存器對應地址。

在微控制器中,串列埠接收到的資料是放在串列埠裡還是微控制器裡面?

4樓:布鑲嵐

串列埠接收到的資料是放在資料緩衝暫存器(sbuf)裡面,資料緩衝暫存器是整合在微控制器裡面的。

串列埠接收資料時資料先存放在sbuf裡面(接收過程中微控制器照常工作),接收完成串列埠後向微控制器發出中斷請求,微控制器將資料取走。傳送時也是一樣,資料先送到sbuf裡,再由sbuf往外發。

5樓:匿名使用者

是放在微控制器的串列埠暫存器裡面

微控制器程式設計中 如何清除串列埠接收暫存器中的值,即清除sbuf中的值 10

6樓:做而論道

追問:可是我做實驗,需要清除。以便接收到新的不同的值,從而微控制器做出相應的動作回答清除標誌位

----

不用清除。也不可能清除。

可以這樣做:

每收到一個新資料,就置位一個自定義的標誌位,如:r_flag = 1;。

程式中,一旦發現它為1,就進行一次處理,然後就將其清零:r_flag = 0;。

這樣,收到一個,就僅僅處理一遍。

7樓:匿名使用者

微控制器的sbuf是不需要清零的!

你是模擬串列埠通訊嗎?

不管是模擬串列埠通訊還是硬體串列埠通訊,都是是不需要清零的.因為模擬串列埠通訊時是判斷串列埠有無起始位來決定是否接受資料,而硬體串列埠sbuf是自動接收資料,並會產生一箇中斷,這時你只需要讀出sbuf的值就行了。

labview串列埠接收到的資料怎樣實時更新?

8樓:匿名使用者

如果你每次收到的位元組數能確定(比如每條發過來的命令位元組數固定,或者最前一兩個位元組表示後面的位元組數),就按照位元組數接收。然後直接把收到的字串給顯示控制元件,不使用移位暫存器或反饋節點當然就不顯示之前的字元了。

別加「等待」之類的函式(手錶圖示哪個),串列埠讀取函式會在讀到指定數量的字元或到達超時之後返回讀到的字串。用它就能控制迴圈。也就是說來一條命令或者到達一次超時之後,自動迴圈一次,字串顯示控制元件裡面的值就是剛收到的字串了。

如下圖:

串列埠的引數我就使用預設的「9600,8,n,1」了,超時值我設定的是100ms,為了讓程式執行時不會因為預設的10000ms超時顯得程式卡死。但是幾乎每100毫秒就會有一個超時錯誤並返回空字串,所以內層的錯誤分支什麼也沒做,在超時的時候不用空字串替換原有的顯示值。

如果字元數不確定,你還不想保留之前的值,那就不好辦了。很有可能會造成一句話分兩次顯示的情況,某次顯示前面一部分,後面一次顯示後一部分。

看下圖吧:

為減少上述情況的出現,我把超時值改為了1000ms,後面的條件分支根據讀到的位元組數區分。0的時候不更新顯示控制元件,其它值的時候顯示剛剛收到的字串。因為你不要和前面的拼湊,所以有可能是不完整的。

其實也可以讓字串顯示控制元件自動滾動,或者字串長度達到一定長度時或點清空按鈕時,清空顯示值。可以用反饋節點/移位暫存器/區域性變數/值屬性等。

下圖的做法最簡單,因為用的是輸入控制元件,可以隨便刪除之前的內容。

9樓:tn瓶邪

使用移位暫存器功能。在迴圈框左邊框或右邊框上點右鍵,新增移位暫存器,將採集到的資料連到右邊的暫存器埠,再從外界連到左邊的暫存器入口,裡面再加一個函式將暫存器入口的資料與新鮮採集到的資料合併,然後引到輸出控制元件上。

從需實現一個類似這樣的功能: display = old data + new data

微控制器接收串列埠資料,怎麼用微控制器確定串列埠接收資料的時間間隔?

你通過串列埠助手要接受字串或一組資料需要在微控制器端開闢一個緩衝區,否則可能丟失資料。以下程式是較為通用的串列埠收發例程,開闢一個16位元組的緩衝區,兩個指標,一個存數指標,一個取數指標,兩指標相等,證明沒有新的接收資料。include define uchar unsigned charuchar...

求微控制器串列埠資料分離c程式

define comm led on 0x00 串列埠發過來的led亮的命令 define c0mm led off 0xff 串列埠發過來的led滅的命令 define c0mm none 0x01 串列埠無有效命令 unsigned char led flag unsigned char rec...

如何用微控制器來控制LCD顯示,如何用微控制器來控制LCD顯示

兆嵐經新榮 你不會說的是電腦用的彩色液晶顯示器吧.我這兒有個,320 240的lcd微控制器控制程式. 光明的大道好 16 16顯示一個漢字,向左移動 只能顯示8個漢字,受8位控制 資源分析 r0指向資料快取地址,r1顯示地址指標,r2資料增加指向指標,r3顯示掃描次數 r4 r5延時程式,r6掃描...