摘 要:通用異步接收發(fā)送器MAX 3100,是一種最適合基于微型控 制器的小型系統(tǒng)用器件,特別是在串行紅外與RS-232數(shù)據(jù)轉(zhuǎn)換中,配上適當(dāng)?shù)某绦?,可?硬件結(jié)構(gòu)非常簡(jiǎn)單,體積更小。它還可廣泛應(yīng)用于手持儀器等小體積系統(tǒng)中。
關(guān)鍵詞:MAX3100,轉(zhuǎn)換器,紅外數(shù)據(jù)
IR Data to RS-232 Converter with MAX 3100
Abstract:The MAX 3100 universal async-hronous receive r/transmitter is the first UART specifically optimized for small microcontrolle r -based system. The MAX 3100 CAN easily interface to IR data & RS-232 smallest conver ter with a short program. It can be use to small system such as hand-held instru ments.
Key words:MAX 3100,converter,IR data
1 引言
通用異步接收發(fā)送器MAX3100,特別適用于RS-232、RS-485、紅外及光耦數(shù)據(jù)的連接,在關(guān)機(jī)狀態(tài)下也能接收信號(hào),執(zhí)行中斷。在基于微型控制器的小型系統(tǒng)中使用MAX3100,可使系統(tǒng)結(jié)構(gòu)更為緊湊、小型化。這種器件還可應(yīng)用于手持儀器、智能化儀器、SPI系統(tǒng)中的異步接收發(fā)送器、RS-232/RS-485直接光耦驅(qū)動(dòng),同時(shí)能用于計(jì)算機(jī)/外圍設(shè)備的低耗紅外數(shù)據(jù)聯(lián)接,且可在較寬的溫度范圍中使用。MAX3100目前已實(shí)現(xiàn)商業(yè)化。
2 MAX3100工作原理
在MAX3100中組合了一個(gè)簡(jiǎn)單的UART、一個(gè)帶有SPI接口的波特率發(fā)生器及一個(gè)中斷發(fā)生器。通過(guò)將一個(gè)長(zhǎng)度為16位的字寫(xiě)入到寫(xiě)狀態(tài)寄存器中形成一個(gè)通用異步接收發(fā)送器。該字節(jié)中包含了波特率(位B0~B3)、數(shù)據(jù)字節(jié)長(zhǎng)度、校驗(yàn)設(shè)定、8字節(jié)接收FIFO、普通UART與IRdata時(shí)基選擇、關(guān)機(jī)控制及4個(gè)中斷屏蔽位。通過(guò)寫(xiě)一個(gè)16位字到一個(gè)寫(xiě)數(shù)據(jù)寄存器中發(fā)送數(shù)據(jù),其中最后的7(校驗(yàn)位未設(shè)定)或8位(校驗(yàn)位被設(shè)定)是實(shí)際上被發(fā)送的數(shù)據(jù)。該寄存器控制著RTS輸出端的狀態(tài)。當(dāng)接收中斷被設(shè)定時(shí),在接收到數(shù)據(jù)時(shí)就會(huì)產(chǎn)生一個(gè)中斷。根據(jù)接收到的校驗(yàn)數(shù)據(jù)及CTS腳輸入的邏輯電平,從一個(gè)16位的寄存器中依據(jù)先進(jìn)先出原理讀取數(shù)據(jù)。該寄存器同樣還包含有用于普通操作出錯(cuò)及關(guān)機(jī)狀態(tài)中的接收顯示。
當(dāng)振蕩器選用1.8432MHz或3.6864MHz晶振時(shí),波特率可達(dá)300~230kbit/s。
3 應(yīng)用硬件與軟件
該電路接收/發(fā)送IRdata,發(fā)送/接收標(biāo)準(zhǔn)的RS-232數(shù)據(jù)。盡管8051包含了一個(gè)內(nèi)部的UART,但它不支持IRdata或高速通信。MAX3100能夠很方便地與8051相接,以支持高性能的通信模式。8051沒(méi)有SPI接口,所以要使用帶有輸入/輸出口的MAX3100以及一個(gè)簡(jiǎn)短的程序來(lái)實(shí)現(xiàn)通信功能。
MAX 3100接收完數(shù)據(jù)后,向8051請(qǐng)求中斷,8051響應(yīng)中斷通過(guò)串行輸出口將MAX 3100輸入的數(shù)據(jù)傳至MAX 3221。最終MAX 3221以標(biāo)準(zhǔn)的RS-232碼輸出數(shù)據(jù)。在MAX 3221接收到RS-232數(shù)據(jù)時(shí),8051通過(guò)串行輸入口讀入數(shù)據(jù),并經(jīng)MAX 3100 TX端口發(fā)出紅外信號(hào),程序如下:
;MAX 3100用于UART-8051 IR data
;…………………………………………………
PCON EQU 87H
DOUT BIT P1.0 ?。粩?shù)據(jù)從UART輸出
DIN BIT P1.1 ??;數(shù)據(jù)從UART輸入
SCLK BIT P1.2 ;串行時(shí)鐘
CS BIT P1.3 ;片選一低電平激活
IRQ BIT P3.2 ?。恢袛嘈盘?hào)
;RAM區(qū)域
TX1 EQU 10H ;發(fā)送緩沖器
TX2 EQU 11H
RX1 EQU 12H ;接收緩沖器
RX2 EQU 13H
;………………………………………………………
ORGOH ;開(kāi)始
BEGIN: MOVSP,#70H??;初始化設(shè)置堆棧
CLRSCLK ??;時(shí)鐘清零
;8051內(nèi)部UART初始化
MOVTMOD,#20H ;T1計(jì)數(shù)方式
MOVTH1,#253 ;波特率9600(晶振5.5MHz)
MOVSCON,#50H;8051串行口控制
MOVPCON,#80H;波特率加倍
MOVTCON,#40H;T1計(jì)數(shù)控制
;設(shè)置紅外通信波特率為9600
MOVTX1,#0E4H
MOVTX2,#0CAH
ACALLUTLK ;發(fā)送至UART寫(xiě)寄存器
;………………………主程序…………………………
LOOP; JNBIRQ,URCV ;有信號(hào)來(lái)自3100?
NRECV: JBCR1,RCV51 ;有信號(hào)來(lái)自3221?
AJMPLOOP
;從3100接收至8051
URCV: MOVTX1,#0 ;紅外有請(qǐng)求,清發(fā)送緩沖器MOVTX2,#0
ACALLUTLK ;接收紅外端數(shù)據(jù)
MOVA,RX2
MOVSBUF,A ;以9600波特率RS-232方式送出 AJMPLOOP
;8051從RS-232接收數(shù)據(jù),并不從3100發(fā)出紅外信號(hào)
RCV51: MOVA,SBUF;數(shù)據(jù)來(lái)自8051UARTMOVTX1,#80H;發(fā)送數(shù)據(jù)
MOVTX2,A ;待發(fā)數(shù)據(jù)送至發(fā)送緩沖器ACALLUTLK;以紅外方式送出
AJMPLOOP
;………………………………………………………………
;子程序1:將TX1、TX2緩沖器內(nèi)容發(fā)出,并接收16位信號(hào)至RX1、RX2
UTLK: CLRCS
MOVA,TX1
ACALLBYT8
MOVRX1,A
MOVEA,TX2
ACALLBYTB
MOVRX2,A
SETBCS
RET
;………………………………………………………………
;子程序2:送8位時(shí)鐘信號(hào),累加器A循環(huán)送出、同時(shí)讀入8位數(shù)據(jù)
BYT8: MOVR4,#8
SETBDIN
B8LP: RLCA
MOVDOUT,C
SETBSCLK
MOVC,DIN
CLRSCLK
MOVACC.0,C
DJNZR4,B8LP
RET
END
;………………………………………………………………
該程序是通過(guò)端口發(fā)送與接收數(shù)據(jù)的核心,與MAX3100組合在8051中模擬一個(gè)SPI口。這項(xiàng)技術(shù)對(duì)于任何一種8051基于MAX3100的應(yīng)用來(lái)說(shuō)都是非常有用的。■
作者單位:王魯南(南京電子網(wǎng)板有限公司 南京210028)
參考文獻(xiàn):
[1]何立民.MCS51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)、系統(tǒng)配置與接口技術(shù).北京:北京航空航天大學(xué)出版社,1989