<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機雙機串口通信程序設計

單片機雙機串口通信程序設計

作者: 時(shí)間:2012-12-05 來(lái)源:網(wǎng)絡(luò ) 收藏
利用方式1實(shí)現通信,主頻為6M,波特率為2400bps,電路見(jiàn)圖5-10。當兩個(gè)距離較近時(shí),甲、乙兩機的發(fā)送端與接收端分別直接相聯(lián),兩機共地。執行程序,甲機將亮燈信號發(fā)送給乙機,若通信正常,乙機接收到信號后點(diǎn)亮20個(gè)發(fā)光二極管。乙機采用查詢(xún)與中斷兩種工作方式。當然20個(gè)LED乙機可單獨控制,也可接受甲機的控制,并執行甲機指令,還需要進(jìn)一步完善程序.
甲機發(fā)送程序:
org 0000h
sta:mov tmod,#20h;設置波特率
mov tl1,#0FAh
mov th1,#0FAh
setb tr1
mov scon,#40h;置工作方式1
clr ti
mov a,#00h
mov sbuf,a ;發(fā)送亮燈信號
wait: jbc ti,cont;發(fā)送成功清標志
ajmp wait ;等待發(fā)送完畢
cont: sjmp sta;重復發(fā)送
end

乙機查詢(xún)工作方式接收:

org 0000h
mov tmod,#20h ;設置通信波特率
mov tl1,#0FAh
mov th1,#0FAh
setb tr1
mov scon,#40h
clr ri
setb ren ;允許接收
wait: jbc ri,read;接收成功清標志
ajmp wait ;接收未完等待
read: mov a ,sbuf
mov p1,a;接收亮燈信號送P1口
sjmp $
end

乙機中斷工作方式接收
org 0000h
ajmp main
org 0023h
ajmp zd ;轉串口中斷程序
START: MOV TMOD,#20h
mov tl1,#0FAh
mov th1,#0FAh
setb tr1
mov scon,#50h
clr ri
mov ie,#90h;開(kāi)中斷

MAIN:sjmp $ 主程序
zd:clr ri ;清接收標志
;==============中斷程序還要再完善==============
mov a ,sbuf ;讀接收信號
mov p1,a
MOV R1,A ;將收到的信號送緩存
reti;中斷返回
end
點(diǎn)擊瀏覽下一頁(yè)
串口通訊原理圖>

采用方式2 通信,數據幀格式是11位的,TB8為奇偶校驗位,接收過(guò)程要求判斷RB8,若出錯置F0標志為1,正確則置F0標志為0,然后返回。發(fā)送波特率375kbps,晶振為12MHz,所以SMOD=l。由于傳送數據的波特率與定時(shí)器無(wú)關(guān),所以程序中無(wú)需對定時(shí)器編程. 以下程序出自http://www.51hei.com一位單片機大俠之手,借來(lái)用用,如果什么什么錯誤或者需要改進(jìn)的地方請大家指出,不過(guò)我這里基本測試通過(guò)了。
send:
MOVSCON,#80H;設置串行口為方式2
MOVPCON,#80H;SMOD=l
MOV R0,#50H;設數據塊指針
MOV R7,#20 ;設數據塊長(cháng)度
STA: MOVA,@R0;取數據給A
MOV C,P
MOV TB8,C ;奇偶位P送給TB8,
MOV SBUF,A ;啟動(dòng)發(fā)送
;====================================================
WAIT: JBCTI,CONT ;若發(fā)完一幀數據,清標志后發(fā)下一幀數據
AJMP WAIT ;未完等待
;=======================================================
CONT:INCR0 ;修改數據指針
DJNZ R7,STA;循環(huán)發(fā)送至結束
RET
;================
;乙機接收程序如下:
;在進(jìn)行通信時(shí),兩機應采用相同的工作方式和波特率。
;=============================================
MOVSCON,#90H;設置串行口為方式2,REN為1,允許接收
MOVPCON,#80H;SMOD=1
MOVR0,#50H;設置數據塊首址
MOVR7,#20;置數據塊長(cháng)度
;=========================================================
WAIT:JBCRI,READ;接收完一幀數據則RI清零并讀入數據
AJMP WAIT;未完等待
;==========================================
READ:MOV A,SBUF ;讀入數據
JNB PSW.0,PZ ;收到數為偶數則轉
JNB RB8,ERR;收到數為奇數,發(fā)端為偶數則通信出錯
SJMPRIGHT ;相符則正確
PZ:JB RB8,ERR ;收到數為偶數,發(fā)端為奇數則出錯
;========================================
RlGHT:MOV@R0,A ;通信正確,存放數據
INC R0;更改地址指針
DJNZR7,WAIT;數據塊接收完否,未完繼續
CLR PSW.5;通信正確,置F0為0
RET ;返回
ERROR:SETBPSW.5;通信出錯,置F0為l
RET ;返回


關(guān)鍵詞: 單片機 雙機 串口通信

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>