51單片機的串行口擴展方法設計
Intel8251具有獨立的接收/發(fā)送器。在異步方式下,用于產生8251內部時序的時鐘CLK輸入至少應為發(fā)送或接收時鐘的4.5倍。接收/發(fā)送(RXC/TXC)時鐘應為波特率的1倍、16倍或64倍(由8251的工作方式字設定)。
圖(2)是用Intel8251擴展一個串行通道的電路原理,圖中,11.0592MHZ晶振經ALE6分頻后于 、組合,產生1.8432MHZ的時鐘頻率,分別作為8251與8253的時鐘輸入,若設定8251通信波特率為9600bps,波特率因子為16,則需要 153.6KHZ的接收/發(fā)送時鐘頻率,該頻率可由8253的OUT0產生。
下面的A51程序段說明了如何設置8253使其產生153.6KHZ的方波,以及如何用8251收/發(fā)數據:
;設置8253的程序段:
MOV A,#36H ; 計數器0輸出方波控制字
MOV DPTR,#0FFFFH ; 指向控制字寄存器
MOVX @DPTR,A
MOV DPTR,#0FFFCH ; 指向0計數器地址
MOV A,#0DH
MOVX @DPTR,A
MOV A,#0
MOVX DPTR,A
SETB P1.0
;操作8251的程序段:
…
START: MOV DPTR,#7FFFH ;8251控制、命令口地址
MOV A,#5EH ;一個停止位,奇校驗,8位數據,異步*16
MOVX @DPTR,A ;寫入方式字
MOV A,#15H
MOVX @DPTR,A ;命令字,啟動發(fā)送和接收器
…
LOOP: SJMP LOOP ;等待8251中斷
8251_INT: ;現(xiàn)場保護
MOV DPTR,#7FFFH
MOV A,@DPTR
JB ACC.0,TX_INT
JB ACC.1,RX_INT
INT_EXIT: ;恢復現(xiàn)場
RETI
;發(fā)送數據
TX_INT: MOV DPTR,#7FFEH ;8251數據口地址
MOV A,20H
MOVX @DPTR,A
…
AJMP INT_EXIT
;接收數據
RX_INT: MOV DPTR,#7FFEH
MOVX A,@DPTR
MOV 30H,A
…
AJMP INI_EXIT
3 結束語
以單片機為核心的多級分布式系統(tǒng)的應用越來越廣泛,上面討論的兩種串行口的擴展方法為此類多串口應用領域提供了一個良好的解決方案。筆者在實際中采用基于SP2538的擴展方法,設計了采場瓦斯積聚模擬試驗臺的多級分布式采控系統(tǒng),效果良好。
參考文獻
[1] 孫和平,楊寧,白晶 單片微機原理與接口技術 冶金工業(yè)出版社 2003.1
[2] 胡漢才 單片機原理及其接口技術 清華大學出版社 1996.7
[3] SP2538數據手冊 成都視普科技有限公司 2003.2.12
評論