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...