如何實現兩塊微控制器之間的串列埠通訊

2021-03-19 18:19:53 字數 4378 閱讀 5769

1樓:匿名使用者

甲微控制器的rxd接乙微控制器的txd,甲微控制器的txd接乙微控制器的rxd,之後就可以相互通訊了。

微控制器與微控制器之間如何進行序列通訊

2樓:匿名使用者

1、將兩個微控制器的rxd與txd相連

2、根據需要傳輸的資料編寫傳輸協議

3、編寫序列通訊程式,將自己需要傳送的資料按照協議進行傳送4、編寫接收程式,按照協議進行接收

5、將兩個程式分別寫入兩個微控制器,執行。

3樓:帆揚五分

微控制器雙機之間的序列通訊設計例項

可以參考一下,不懂再hi我!

4樓:匿名使用者

找個微控制器教程上面都有 兩機rxd txd 對連,然後編寫各個的通訊程式!也有的微控制器是帶can 的 那就按照說明連 ,編寫對應的通訊程式!

5樓:匿名使用者

共地,收/發反接,程式設計即可實現

6樓:匿名使用者

給個郵箱我發你個例項

7樓:匿名使用者

一樓還得把end連線吧

如何實現2個51微控制器之間通過串列埠通訊的源程式

8樓:匿名使用者

彙編編寫的模擬串列埠通訊程式

t2作為波特率控制

uart_rxd 是硬中斷0或1口,如果能進入中斷,說明該線有一個起始位產生,進入中斷後調

用下面的接收程式。退出硬中斷之前還需要將硬中斷標誌重新復位。

uart_txd 是任何其它io即可。

uart_send:

push ie

push dph

push dpl

push psw

push 00h

push acc

clr ea

setb uart_txd ;start bit

mov r0,a

clr tr2 ;tr2置1,計數器2啟動,時間計數啟動。

mov a,rcap2l;計數器2重新裝載值

mov tl2,a ;置計數器2初值 ;t2需要重新裝載

mov a,dph

mov a,rcap2h

mov th2,a

mov a,r0

setb tr2 ;tr2置1,計數器

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2

clr uart_txd ;start bit

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2

mov r0,#08h

uart_send_loop:

rrc a

mov uart_txd,c ;8 bit

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2

djnz r0,uart_send_loop

setb uart_txd ;end bit

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2

pop acc

pop 00h

pop psw

pop dpl

pop dph

pop ie

ret;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

uart_rec:

push ie

push dph

push dpl

clr ea

clr tr2 ;tr2置1,計數器2啟動,時間計數啟動。

mov a,rcap2l;計數器2重新裝載值

mov tl2,a ;置計數器2初值 ;t2需要重新裝載

mov a,dph

mov a,rcap2h

mov th2,a

jb uart_rxd,$ ;rec

setb tr2 ;tr2置1,計數器2啟動,時間計數啟動。

jnb tf2,$

clr tf2 ;0.5 bit

jnb tf2,$

clr tf2 ;1 bit

jnb tf2,$

clr tf2 ;1.5 bit

mov c,uart_rxd

mov acc.0,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;2.5

mov c,uart_rxd

mov acc.1,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;3.5

mov c,uart_rxd

mov acc.2,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;4.5

mov c,uart_rxd

mov acc.3,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;5.5

mov c,uart_rxd

mov acc.4,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;6.5

mov c,uart_rxd

mov acc.5,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;7.5

mov c,uart_rxd

mov acc.6,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;8.5

mov c,uart_rxd

mov acc.7,c

jnb tf2,$

clr tf2 ;9.5

jnb uart_rxd,$ ;等待停止位,並重新復位計數器

setb uart_rxd

pop dpl

pop dph

pop ie

ret補充回答:

串列埠除錯

1. 傳送:向匯流排上發命令

2. 接收:從匯流排接收命令,並分析是地址還是資料。

3. 定時傳送:從記憶體中取數並向主機傳送.

經過除錯,以上功能基本實現,可以通過上位機對微控制器進行實時控制。

程式如下:

//這是一個微控制器c51串列埠接收(中斷)和傳送例程,可以用來測試51微控制器的中斷接收

//和查詢傳送,傳送沒有必要用中斷,因為程式的開銷是一樣的

#include

#include

#include

#define inbuf_len 4 //資料長度

unsigned char inbuf1[inbuf_len];

unsigned char checksum,count3 , flag,temp,ch;

bit read_flag=0;

sbit cp=p1^1;

sbit dir=p1^2;

int i;

unsigned int xdata *ramdata; /*定義ram地址指標*/

unsigned char a[6] = ;

void init_serial***m(void)

void serial () interrupt 4 using 3 }}

//向串列埠傳送一個字元

void timer0() interrupt 1 using 3

}//主程式

main()

while(1)

}除錯需要注意的問題:

1. 傳送過程:在傳送時必須保證ti=1:

即傳送緩衝器為空,否則將導致資料發不出去,如果想強制傳送可以用:ti=1.具體傳送資料:

利用printf(「abcd」);函式直接傳送即可。

2. 接收過程:在接收時多選用中斷方式,這樣可以節約cpu的時間,提高效率,

用兩個51微控制器實現其中微控制器兩個兩個位元組串列埠資料傳送

單一位元組傳送接收可以,只能說明軟體 硬體,基本調通 要想傳送資料,還必須制定通訊協議。傳送方,先向對方呼叫,待收到正確的迴音後 再向對方傳送 資料的位元組數 再向對方連續傳送資料位元組串,對方收到,存放到一個快取空間 傳送方,最後向對方發出校驗位元組 一般是累加和 待收到正確的迴音後,一次資料通訊...

兩個微控制器之間串列埠通訊為什麼其中微控制器接收不到資料呢?求解

請問一下,兩個微控制器分別是什麼型號,另外你可以檢查一下,是否串列埠線有問題,還有兩個微控制器是否共地了。一個 例項,可以參考一下 通常是線路接觸不良。微控制器與dtu通訊,我在微控制器裡 了一個串列埠傳送的程式,連上dtu之後,為什麼dtu收不到資料呢?那還是時序或協議不正確,也可能是dtu沒有正...

51微控制器c語言如何實現中斷呼叫

你這個不是中斷呼叫,只是一種模式選擇。也就是按鍵1按下之後按照一種方式掃描顯示燈回,按鍵2按下之後答按照另一種方式顯示燈 很簡單的。我習慣用switch case 結構,想想就解決了。在你程式裡設定個檢測條件,檢測到按鍵後就無條件跳轉就ok了 include sbit d1 p2 0 sbit p1...