89C51單片機的I/O 口模擬串行通信實現(xiàn)
3.接口程序設計
軟件設計中,89C51 單片機的P1.0 和P1.1 口分別模擬串行通信的發(fā)送和接收,其接口程序主要由INPUT 發(fā)送子程序和OUTPUT接收子程序組成。通信速率1200 bit /s,幀格式為N.8.1。發(fā)送時,先發(fā)送一個起始位(低電平),接著按低位在先的順序發(fā)送8 位數(shù)據(jù),最后發(fā)送停止位。接收時,先判斷P1.1 接收端口是否有起始低電平出現(xiàn),其中軟件編寫要嚴格按照異步通信的時序進行,每bit 位傳送時間間隔按通信速率1200 bit /s計算為833μs。
其模擬串行通信程序清單見下,系統(tǒng)要求單片機晶振為6M。程序清單如下:
TXD EQU P1.0
RXD EQU P1.1 ;定義89C51 P1.0 為發(fā)送端,P1.1 為接收端
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: MOV A, #30H
MOV R5,#N
SETB RXD ;P1.0 置高
TX: LCALL INPUT ;調(diào)用發(fā)送子程序,將寄存器A 中內(nèi)容發(fā)給PC 機
;
SETB TXD ;P1.1 置高
MOV R0,#40H
RX: LCALL OUTPUT ;調(diào)用接收子程序,將接收的N 個數(shù)據(jù)存放在以40H開始的地址中
MOV @R0,A
INC R0
DJNZ R5, RX ;N 個數(shù)據(jù)接收結束,則等待,否則轉(zhuǎn)RX 繼續(xù)接收
3
AJMP $
;**************延時833μs 子程序*****
DEL833: MOV R7 ,#205
MS11: DJNZ R7,MS11
RET
; **********************************
;******** 89C51發(fā)送數(shù)據(jù)給PC 機子程序****
INPUT: CLR C
MOV TXD,C ;發(fā)送起始位
LCALL DEL833 ;延時
MOV R3,#8
REP: RRC A
MOV TXD ,C
LCALL DEL833
DJNZ R3,REP ;發(fā)送8 位數(shù)據(jù)
SETB C ;發(fā)送停止位
MOV TXD,C
LCALL DEL833
RET
;********從PC 機接收數(shù)據(jù)子程序********
OUTPUT: JB RXD, $ ; 判斷是否有起始位出現(xiàn)
LCALL DEL833
MOV R3,#8
OUT: MOV C ,RXD
RRC A
LCALL DEL833
DJNZ R3,OUT ; 接收8 位數(shù)據(jù)
JNB RXD ,$ ; 判斷是否有停止位出現(xiàn)
RET
本文介紹的用 89C51 單片機I/O 口模擬實現(xiàn)串行通信的方法,已成功地應用在某電壓數(shù)據(jù)采集系統(tǒng)中,這樣的進步,讓這項技術有了更加高的期待性,在社會上也有了很好的反應,這樣就讓這個研究成果有了很好的作用。
數(shù)字通信相關文章:數(shù)字通信原理
通信相關文章:通信原理
評論