微控制器串列埠通訊時而正常,時而不正常,硬體沒問題,應該是時序問題,一般會有什麼時序問題呢

2022-11-21 23:51:28 字數 1872 閱讀 9941

1樓:匿名使用者

別說這話,串列埠通訊是微控制器的基礎,這都搞不定,大概你是初學,既然是初學,你怎麼就肯定是硬體沒問題,時序不正常呢?你用示波器看了?再說時序問題是很關鍵的,要麼通要麼不通,時好時壞反而是硬體問題多。

2樓:匿名使用者

這一般是通訊的雙方通訊速度不一樣造成的,建議檢視一下自己的波特率的設定,最好親自計算一下兩邊的速度

3樓:匿名使用者

有時候也可能是干擾的問題

在工業控制中常有的

關於微控制器串列埠同時收發資料的時序問題

4樓:匿名使用者

回答這些問題來

之前,源

你要先複習一下串列埠部件的結構bai和資料收發的原du理。

1.不管你有沒zhi有處理ri,還是在dao繼續接收資料的。資料接收完成之後,資料從移位暫存器轉移到資料暫存器中,這時才產生中斷,但移位暫存器是空的,還可以繼續接收資料。

2.你想讓串列埠的收和發同時工作,那就只能使用中斷方式,你用查詢方式是不可能的。如果是使用「半雙工」,那就簡單些:

a查詢方法傳送資料,b以查詢方式接收資料,反之依然,這樣的缺點是比較耗時,沒有實時性。

後面的幾個問題就用2來回答了,就是用中斷的方法來接收和傳送資料,這樣不管你是不是同時收發的,都能處理。按照你的例子說,上位機要傳送命令來查詢下位機的結果,那簡單,下位機必須要一個緩衝區來儲存收到的資料,然後在主程式中處理緩衝區中的內容,再根據情況向上位機傳送資料。當然下位機的傳送也可以使用緩衝區來儲存待傳送的資料。

使用緩衝區的好處就是能保證不傳送遺漏。比如上位機可以一次傳送多個命令給下位機,這樣就是在接收緩衝區中形成命令佇列,即「排隊」,下位機逐一處理佇列中的每一條命令,然後將對應結果送入傳送緩衝區中「排隊」,再有串列埠傳送中斷逐一將其中的位元組傳送出去。

5樓:手機使用者

ri位接收暫存器標識位,每傳送完一個字元,ri=1;然後通過軟體清零.

ti位傳送暫存器標識位,每傳送完一個字元,ri=1;然後通過軟體清零.

串列埠與微控制器通訊時好時壞

6樓:

首先試試串列埠好使不。。。。

拿pc機開啟個串列埠除錯軟體,將rxd與txd拿個導線短接一下。。。之後用軟體傳送隨便一些資料,由於txd與rxd是短接的,那麼軟體接收到的資料應該是和發射資料一致,如果不一致,線壞了,如果徹底就收不到,線懷了,多試幾次,時好時壞,線接觸不良。。。

如果一切正常,那麼就得看微控制器的串列埠介面是不是好的了,示波器也行,萬用表也行,測測看。。。

如果一切良好,軟體問題,自己寫的程式的時序有問題。嘛,由於微控制器有很多種,我也就會那麼兩三種,ttl轉pc電平你用的那種ic也不知道,所以,自己檢查程式時序問題吧。。。

7樓:

我懷疑你的電源系統是不是不穩定,可以多加一些濾波電容試驗一下。同時你的串列埠接收傳送函式是怎麼寫的,不知道你的程式設計有沒有問題

8樓:壞壞—雨

建議你在電腦端加一個光電隔離器,我工作的電腦就加了,對串列埠也有保護作用

9樓:倚劍笑東風

波特率設定對了麼?不能太大!

中間有沒有電平轉換(即,rs232類的東東)?

pic微控制器讀dht11溫溼度感測器,時序應該沒問題,但校驗通不過,略過校驗數值也不對,求大神給看看

10樓:

修改相關的延時長短(就是嘗試,一直到可以),可以解決這個問題。

11樓:一萬光年

應該沒問題,說明你還不太確定。

還是用示波器看看波形對不對吧。

微控制器串列埠通訊的原理微控制器串列埠通訊原理

串列埠通訊的概念非常簡單,串列埠按位 bit 傳送和接收位元組。儘管比按位元組 byte 的並行通訊慢,但是串列埠可以在使用一根線傳送資料的同時用另一根線接收資料。它很簡單並且能夠實現遠距離通訊。比如ieee488定義並行通行狀態時,規定裝置線總長不得超過20米,並且任意兩個裝置間的長度不得超過2米...

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

c51微控制器的程式 1 初始化程式 tmod 0x20 th1 0xfd tl1 0xfd 0 0 1 1 ren 1 tr1 1 ea 1 es 1 2 傳送程式 void data send 串列埠傳送資料3 接收資料 void data receive interrupt 4 include...

51微控制器與vb通過串列埠通訊,微控制器為什麼只能傳送0至

傳送大數,你只能多次傳送,一次只能傳送一幀,而串列埠傳送的一幀可能是7 8 9位,由你設定而定。51微控制器是8位的,一次只能處理8位資料,也就是一個位元組,一個位元組只能表示0 255的大小的資料。一個位元組確實只能是0 255,但你可以連續發兩個位元組然後在vb裡面組成一個大於255的數。比如發...