單片機的MODEM通訊
MOV DPTR,#LCR ;除數鎖定允許
MOV A,#80H
MOVX @DPTR, A
MOV DPTR,#LSB ;波特率為9600baud
MOV A,#0CH
MOVX @DPTR, A
INC DPTR
CLR A
MOVX @DPTR, A
圖 1為GM16C550與RS232接線(xiàn)圖。
圖1 GM16C550與RS232接線(xiàn)圖
(2) 接收緩沖寄存器和發(fā)送保持寄存器(transmit and receive holding register)
當LCR.7=0,且A2A1A0=000時(shí),讀操作單片機訪(fǎng)問(wèn)接收緩沖寄存器(RHR),寫(xiě)操作單片機訪(fǎng)問(wèn)發(fā)送保持寄存器(THR)。
(3) 中斷允許寄存器(interrupt enable register)
當LCR.7=0,且A2A1A0=001時(shí),單片機訪(fǎng)問(wèn)中斷允許寄存器(IER)。
豹IER.0=1,允許接收器數據就緒中斷。
豹IER.1=1,允許發(fā)送保持寄存器為空時(shí)中斷。即當從發(fā)送保持寄存器把一個(gè)字節移到移位寄存器時(shí),產(chǎn)生一個(gè)中斷,使發(fā)送保持寄存器能夠接收下一個(gè)字節。
豹IER.2=1,表示允許接收有錯信息或間斷條件中斷。
豹IER.3=1,MODEM狀態(tài)變化中斷。
豹IER.4~7,沒(méi)有使用,設置為零。
MOV DPTR,#IER
MOV A,#01H
MOVX @DPTR,A
(4) FIFO控制寄存器(FIFO control register)
數據發(fā)送和接收模式的選擇。GM16C550提供了兩種模式:FIFO和DMA。其中DMA又有兩種模式DMA的模式0、DMA的模式1可供選擇。我的舉例采用默認的DMA的模式0。感興趣的朋友可試一試其它模式,這里不再說(shuō)明。
(5) 中斷狀態(tài)寄存器(interrupt status register)
前面介紹了幾種中斷,它們在各自的條件下產(chǎn)生中斷,UART都會(huì )輸出一個(gè)高電平的中斷請求信號,觸發(fā)同一個(gè)中斷請求。為了具體判斷是哪一種中斷,還應該檢測ISR,如表3所列。
表3 中斷狀態(tài)寄存器
評論