利用 2 個實驗系統(tǒng)通過 232 通信,實現(xiàn)雙機串行通信功能。
用匯編或 C 語言編寫一個 51 單片機程序,
用本側(cè)的 K0~K3 能控制對側(cè)的 L0~L3,
用對側(cè)的 K0~K3 能控制本側(cè)的 L0~L3。
通信線斷開后,不需重啟,接上通信線后,應(yīng)能自動重新建立通信聯(lián)系。
;=========================================================
做而論道早就回答了這個問題,也不知道是那個字眼違規(guī)了,百度知道又抽風(fēng)了,不給顯示。
申訴已經(jīng)很多天了,也沒有反應(yīng)。
時間,已經(jīng)耽誤了,就發(fā)表在這里吧。
程序雖然是用匯編語言編寫的,也非常簡單,20幾行而已。
;=========================================================
? ? ORG ? 0000H
? ? JMP ? START
? ? ORG ? 0023H
? ? JB ? ?TI, S_END
? ? CLR ? RI
? ? MOV ? P0, SBUF ? ?;讀串口, 送P0顯示
S_END: ? ?RETI
;----------------------------------------
START:
? ? MOV ? SCON, #50H ?;方式1,8-n-1
? ? MOV ? TMOD, #20H
? ? MOV ? TH1, #0FDH ?;波特率設(shè)置
? ? MOV ? TL1, #0FDH ?;9600@11.0592MHz
? ? SETB ?TR1?
? ? MOV ? IE, #90H ? ?;開放中斷
LOOP:
? ? MOV ? A, P2 ? ? ? ;讀撥碼開關(guān)
? ? DJNZ ?R7, $ ? ? ? ;延時
? ? DJNZ ?R6, $ - 2
? ? MOV ? B, P2 ? ? ? ;再讀
? ? CJNE ?A, B, LOOP ?;消抖
? ? MOV ? SBUF, A ? ? ;向串口發(fā)送
? ? MOV ? P1, A ? ? ? ;在本機顯示
? ? JNB ? TI, $
? ? CLR ? TI
? ? SJMP ?LOOP
;----------------------------------------
END
;=========================================================
兩臺單片機系統(tǒng),都使用上面給出的同一個程序。
做實驗時,也可以用軟件仿真,電路如下:
用一個單片機,也可以自發(fā)自收,電路如下:
斷開通信線路的開關(guān),撥動開關(guān)就不能控制對方的 LED 了。
接通通信線路的開關(guān),不需重啟,自動就能重新建立通信聯(lián)系。