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