PC機(jī)與單片機(jī)的通訊
發(fā)布時(shí)間:2008/8/19 0:00:00 訪問(wèn)次數(shù):719
大多數(shù)的電腦設(shè)備都具有rs-232c接口,盡管它的性能指標(biāo)并非很好。在廣泛的市場(chǎng)支持下依然常勝不衰。
就使用而言,rs-232也確實(shí)有其優(yōu)勢(shì):僅需3根線便可在兩個(gè)數(shù)字設(shè)備之間全雙工的傳送數(shù)據(jù)。不過(guò),rs-232c的控制要比使用并行通訊的打印機(jī)接口更難于控制。rs-232c使用了遠(yuǎn)較并行口更多的寄存器。這些寄存器用來(lái)實(shí)現(xiàn)串行數(shù)據(jù)的傳送及rs-232c設(shè)備之間的握手與流量控制。本文將分別描述pc機(jī)及單片機(jī)mcs-51的串行通訊的原理及具體的軟件設(shè)計(jì)。
rs-232c介紹與pc硬件
使用查詢方法的串行通訊程序設(shè)計(jì)
使用中斷的串行通訊程序設(shè)計(jì)
mcs-51串行通訊
關(guān)于rs485
。1)rs-232c介紹與pc硬件:
rs-232c使用-3到-25v表示數(shù)字“1”,使用3v到25v表示數(shù)字“0”,rs-232c在空閑時(shí)處于邏輯“1”狀態(tài),在開(kāi)始傳送時(shí),首先產(chǎn)生一起始位,起始位為一個(gè)寬度的邏輯“0”,緊隨其后為所要傳送的數(shù)據(jù),所要傳送的數(shù)據(jù)有最低位開(kāi)始依此送出,并以一個(gè)結(jié)束位標(biāo)志該字節(jié)傳送結(jié)束,結(jié)束位為一個(gè)寬度的邏輯“1”狀態(tài)。
pc機(jī)一般使用8250或16550作為串行通訊的控制器,使用9針或25針的接插件將串行口的信號(hào)送出。
該插座的信號(hào)定義如下:
db-25db-9信號(hào)名稱方向含 義
23txd輸出數(shù)據(jù)發(fā)送端
32rxd輸入數(shù)據(jù)接收端
47rts輸出請(qǐng)求發(fā)送(計(jì)算機(jī)要求發(fā)送數(shù)據(jù))
58cts輸入清除發(fā)送(modem準(zhǔn)備接收數(shù)據(jù))
66dsr輸入數(shù)據(jù)設(shè)備準(zhǔn)備就緒
75sg-信號(hào)地
81dcd輸入數(shù)據(jù)載波檢測(cè)
204dtr輸出數(shù)據(jù)終端準(zhǔn)備就緒(計(jì)算機(jī))
229ri輸入響鈴指示
以上信號(hào)在通訊過(guò)程之中可能會(huì)被全部或部分使用,最簡(jiǎn)單的通訊僅需txd及rxd及sg即可完成,其他的握手信號(hào)可以做適當(dāng)處理或直接懸空,至于是否可以懸空這視乎你的通訊軟件。比如說(shuō),如果使用dos所提供的bios通訊驅(qū)動(dòng)程序,那么,這些握手信號(hào)則需要做如下處理,因?yàn)閎ios的通訊驅(qū)動(dòng)使用了這些信號(hào)。如果使用自己編寫的串行驅(qū)動(dòng)程序則可以完全不使用這些握手信號(hào)(詳見(jiàn)下面有關(guān)章節(jié))。
pc機(jī)一般使用8250或16550的作為串行通訊控制器,8250及16550的管腳排列如下:
8250(16550)的寄存器如下表所示:
基地址讀/寫寄存器縮寫注 釋
0write-發(fā)送保持寄存器(dlab=0)
0read-接收數(shù)據(jù)寄存器(dlab=0)
0read/write-波特率低八位(dlab=1)
1read/writeier中斷允許寄存器
1read/write-波特率高八位(dlab=1)
2readiir中斷標(biāo)識(shí)寄存器
2writefcrfifo控制寄存器
3read/writelcr線路控制寄存器
4read/writemcrmodem控制寄存器
5readlsr線路狀態(tài)寄存器
6readmsrmodem狀態(tài)寄存器
7read/write-scratch register
pc機(jī)支持1-4個(gè)串行口,即com1-com4,其基地址在bios數(shù)據(jù)區(qū)0000:0400-0000:0406中描述,對(duì)應(yīng)地址分別為3f8/2f8/3e8/2e8,com1及com3使用pc機(jī)中斷4,com2及com4使用中斷3。
在上表中,8250共有12個(gè)寄存器,使用了8個(gè)地址,其中部分寄存器共用一個(gè)地址,由dlab=0/1來(lái)區(qū)分,在dlab=1用于設(shè)定通訊所需的波特率。常用的波特率參數(shù)見(jiàn)下表:
速率(bps)波特率高八位波特率低八位
5009h00h
30001h80h
60000hc0h
240000h30h
480000h18h
960000h0ch
1920000h06h
3840000h03h
5760000h02h
11520000h01h
以下幾個(gè)表格為8250的寄存器的功能描述:
中斷允許寄存器(ier):
位注 釋
7未使用
6未使用
5進(jìn)入低功耗模式(16750)
4進(jìn)入睡眠模式(16750)
3允許modem狀態(tài)中斷
2允許接收線路狀態(tài)中斷
1允許發(fā)送保持器空中斷
0允許接收數(shù)據(jù)就緒中斷
bit0置1將允許接收到數(shù)據(jù)時(shí)產(chǎn)生中斷,bit1置1時(shí)允許發(fā)送保持寄存器空時(shí)產(chǎn)生中斷,bit2置1將在lsr變化時(shí)產(chǎn)生中斷,相應(yīng)的bit3置位將在msr變化時(shí)產(chǎn)生中斷。
中斷識(shí)別寄存器(iir):
位注 釋
bit6:7=00無(wú)fifo
bit6:7=01允許fifo,但不可用
bit6:7=11允許fifo
bit5允許64字節(jié)fifo(16750)
bit4未使用
bit316550超時(shí)中斷
bit2:1=00modem狀態(tài)中斷(cts/ri/dtr/dcd)
bit2:1=01發(fā)送保持寄存器空中斷
bit2:1=10接收數(shù)據(jù)就緒中斷
bit2:1=11接收線路狀態(tài)中斷
bit0=0有中斷產(chǎn)生
bit0=1無(wú)中斷產(chǎn)生
iir為只讀寄存器,bit6:7用來(lái)指示fifo的狀態(tài),均為0時(shí)則無(wú)fifo,此時(shí)為8250或16450芯片,為01時(shí)有fifo但不可以使用,為11時(shí)fifo有效并可以正常工作。bit3用來(lái)指示超時(shí)中斷(16550/16750)。
bit0用來(lái)指示是否有中斷發(fā)生,bit1:2標(biāo)識(shí)具體的中斷類型,這些中斷具有不同的優(yōu)先級(jí)別,其中l(wèi)sr中
大多數(shù)的電腦設(shè)備都具有rs-232c接口,盡管它的性能指標(biāo)并非很好。在廣泛的市場(chǎng)支持下依然常勝不衰。
就使用而言,rs-232也確實(shí)有其優(yōu)勢(shì):僅需3根線便可在兩個(gè)數(shù)字設(shè)備之間全雙工的傳送數(shù)據(jù)。不過(guò),rs-232c的控制要比使用并行通訊的打印機(jī)接口更難于控制。rs-232c使用了遠(yuǎn)較并行口更多的寄存器。這些寄存器用來(lái)實(shí)現(xiàn)串行數(shù)據(jù)的傳送及rs-232c設(shè)備之間的握手與流量控制。本文將分別描述pc機(jī)及單片機(jī)mcs-51的串行通訊的原理及具體的軟件設(shè)計(jì)。
rs-232c介紹與pc硬件
使用查詢方法的串行通訊程序設(shè)計(jì)
使用中斷的串行通訊程序設(shè)計(jì)
mcs-51串行通訊
關(guān)于rs485
。1)rs-232c介紹與pc硬件:
rs-232c使用-3到-25v表示數(shù)字“1”,使用3v到25v表示數(shù)字“0”,rs-232c在空閑時(shí)處于邏輯“1”狀態(tài),在開(kāi)始傳送時(shí),首先產(chǎn)生一起始位,起始位為一個(gè)寬度的邏輯“0”,緊隨其后為所要傳送的數(shù)據(jù),所要傳送的數(shù)據(jù)有最低位開(kāi)始依此送出,并以一個(gè)結(jié)束位標(biāo)志該字節(jié)傳送結(jié)束,結(jié)束位為一個(gè)寬度的邏輯“1”狀態(tài)。
pc機(jī)一般使用8250或16550作為串行通訊的控制器,使用9針或25針的接插件將串行口的信號(hào)送出。
該插座的信號(hào)定義如下:
db-25db-9信號(hào)名稱方向含 義
23txd輸出數(shù)據(jù)發(fā)送端
32rxd輸入數(shù)據(jù)接收端
47rts輸出請(qǐng)求發(fā)送(計(jì)算機(jī)要求發(fā)送數(shù)據(jù))
58cts輸入清除發(fā)送(modem準(zhǔn)備接收數(shù)據(jù))
66dsr輸入數(shù)據(jù)設(shè)備準(zhǔn)備就緒
75sg-信號(hào)地
81dcd輸入數(shù)據(jù)載波檢測(cè)
204dtr輸出數(shù)據(jù)終端準(zhǔn)備就緒(計(jì)算機(jī))
229ri輸入響鈴指示
以上信號(hào)在通訊過(guò)程之中可能會(huì)被全部或部分使用,最簡(jiǎn)單的通訊僅需txd及rxd及sg即可完成,其他的握手信號(hào)可以做適當(dāng)處理或直接懸空,至于是否可以懸空這視乎你的通訊軟件。比如說(shuō),如果使用dos所提供的bios通訊驅(qū)動(dòng)程序,那么,這些握手信號(hào)則需要做如下處理,因?yàn)閎ios的通訊驅(qū)動(dòng)使用了這些信號(hào)。如果使用自己編寫的串行驅(qū)動(dòng)程序則可以完全不使用這些握手信號(hào)(詳見(jiàn)下面有關(guān)章節(jié))。
pc機(jī)一般使用8250或16550的作為串行通訊控制器,8250及16550的管腳排列如下:
8250(16550)的寄存器如下表所示:
基地址讀/寫寄存器縮寫注 釋
0write-發(fā)送保持寄存器(dlab=0)
0read-接收數(shù)據(jù)寄存器(dlab=0)
0read/write-波特率低八位(dlab=1)
1read/writeier中斷允許寄存器
1read/write-波特率高八位(dlab=1)
2readiir中斷標(biāo)識(shí)寄存器
2writefcrfifo控制寄存器
3read/writelcr線路控制寄存器
4read/writemcrmodem控制寄存器
5readlsr線路狀態(tài)寄存器
6readmsrmodem狀態(tài)寄存器
7read/write-scratch register
pc機(jī)支持1-4個(gè)串行口,即com1-com4,其基地址在bios數(shù)據(jù)區(qū)0000:0400-0000:0406中描述,對(duì)應(yīng)地址分別為3f8/2f8/3e8/2e8,com1及com3使用pc機(jī)中斷4,com2及com4使用中斷3。
在上表中,8250共有12個(gè)寄存器,使用了8個(gè)地址,其中部分寄存器共用一個(gè)地址,由dlab=0/1來(lái)區(qū)分,在dlab=1用于設(shè)定通訊所需的波特率。常用的波特率參數(shù)見(jiàn)下表:
速率(bps)波特率高八位波特率低八位
5009h00h
30001h80h
60000hc0h
240000h30h
480000h18h
960000h0ch
1920000h06h
3840000h03h
5760000h02h
11520000h01h
以下幾個(gè)表格為8250的寄存器的功能描述:
中斷允許寄存器(ier):
位注 釋
7未使用
6未使用
5進(jìn)入低功耗模式(16750)
4進(jìn)入睡眠模式(16750)
3允許modem狀態(tài)中斷
2允許接收線路狀態(tài)中斷
1允許發(fā)送保持器空中斷
0允許接收數(shù)據(jù)就緒中斷
bit0置1將允許接收到數(shù)據(jù)時(shí)產(chǎn)生中斷,bit1置1時(shí)允許發(fā)送保持寄存器空時(shí)產(chǎn)生中斷,bit2置1將在lsr變化時(shí)產(chǎn)生中斷,相應(yīng)的bit3置位將在msr變化時(shí)產(chǎn)生中斷。
中斷識(shí)別寄存器(iir):
位注 釋
bit6:7=00無(wú)fifo
bit6:7=01允許fifo,但不可用
bit6:7=11允許fifo
bit5允許64字節(jié)fifo(16750)
bit4未使用
bit316550超時(shí)中斷
bit2:1=00modem狀態(tài)中斷(cts/ri/dtr/dcd)
bit2:1=01發(fā)送保持寄存器空中斷
bit2:1=10接收數(shù)據(jù)就緒中斷
bit2:1=11接收線路狀態(tài)中斷
bit0=0有中斷產(chǎn)生
bit0=1無(wú)中斷產(chǎn)生
iir為只讀寄存器,bit6:7用來(lái)指示fifo的狀態(tài),均為0時(shí)則無(wú)fifo,此時(shí)為8250或16450芯片,為01時(shí)有fifo但不可以使用,為11時(shí)fifo有效并可以正常工作。bit3用來(lái)指示超時(shí)中斷(16550/16750)。
bit0用來(lái)指示是否有中斷發(fā)生,bit1:2標(biāo)識(shí)具體的中斷類型,這些中斷具有不同的優(yōu)先級(jí)別,其中l(wèi)sr中
熱門點(diǎn)擊
- 用于ATmega128的軟件UART范例程序
- 單片機(jī)驅(qū)動(dòng)蜂鳴器原理與設(shè)計(jì)
- 51單片機(jī)8*8點(diǎn)陣LED顯示原理及程序
- PIC單片機(jī)CRC校驗(yàn)程序
- 80C51原始IP核內(nèi)部RAM的擴(kuò)展方案
- 單片機(jī)的圖形化編程方法探討
- 用AT89S51單片機(jī)來(lái)制作的手動(dòng)計(jì)數(shù)器
- Proteus在單片機(jī)系統(tǒng)設(shè)計(jì)中的應(yīng)用
- TEA5767收音機(jī)模塊的C51控制程序
- pic單片機(jī)的模擬I2C通信
推薦技術(shù)資料
- 硬盤式MP3播放器終級(jí)改
- 一次偶然的機(jī)會(huì)我結(jié)識(shí)了NE0 2511,那是一個(gè)遠(yuǎn)方的... [詳細(xì)]
- 電源管理 IC (PMIC)&
- I2C 接口和 PmBUS 以及 OTP/M
- MOSFET 和柵極驅(qū)動(dòng)器單
- 數(shù)字恒定導(dǎo)通時(shí)間控制模式(CO
- Power Management Buck/
- 反激變換器傳導(dǎo)和輻射電磁干擾分析和抑制技術(shù)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究