在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 學(xué)習(xí)方法與實踐 > PC機(jī)與單片機(jī)的通訊

            PC機(jī)與單片機(jī)的通訊

            ——
            作者: 時間:2008-01-07 來源: 收藏
                    大多數(shù)的電腦設(shè)備都具有RS-232C接口,盡管它的性能指標(biāo)并非很好。在廣泛的市場支持下依然常勝不衰。

                    就使用而言,RS-232也確實有其優(yōu)勢:僅需3根線便可在兩個數(shù)字設(shè)備之間全雙工的傳送數(shù)據(jù)。不過,RS-232C的控制要比使用并行的打印機(jī)接口更難于控制。RS-232C使用了遠(yuǎn)較并行口更多的寄存器。這些寄存器用來實現(xiàn)串行數(shù)據(jù)的傳送及RS-232C設(shè)備之間的握手與流量控制。本文將分別描述機(jī)及MCS-51的串行的原理及具體的軟件設(shè)計。

                     RS-232C介紹與硬件 
                    使用查詢方法的串行程序設(shè)計 
                    使用中斷的串行通訊程序設(shè)計 
                    MCS-51串行通訊 


                    關(guān)于RS485 
                    (1)RS-232C介紹與硬件:
              

                    RS-232C使用-3到-25V表示數(shù)字“1”,使用3V到25V表示數(shù)字“0”,RS-232C在空閑時處于邏輯“1”狀態(tài),在開始傳送時,首先產(chǎn)生一起始位,起始位為一個寬度的邏輯“0”,緊隨其后為所要傳送的數(shù)據(jù),所要傳送的數(shù)據(jù)有最低位開始依此送出,并以一個結(jié)束位標(biāo)志該字節(jié)傳送結(jié)束,結(jié)束位為一個寬度的邏輯“1”狀態(tài)。
              

                    PC機(jī)一般使用8250或16550作為串行通訊的控制器,使用9針或25針的接插件將串行口的信號送出。

                    該插座的信號定義如下:
                    DB-25DB-9信號名稱方向含 義
                    23TXD輸出數(shù)據(jù)發(fā)送端
                    32RXD輸入數(shù)據(jù)接收端
                    47RTS輸出請求發(fā)送(計算機(jī)要求發(fā)送數(shù)據(jù))
                    58CTS輸入清除發(fā)送(MODEM準(zhǔn)備接收數(shù)據(jù))
                    66DSR輸入數(shù)據(jù)設(shè)備準(zhǔn)備就緒
                    75SG-信號地
                    81DCD輸入數(shù)據(jù)載波檢測
                    204DTR輸出數(shù)據(jù)終端準(zhǔn)備就緒(計算機(jī))
                    229RI輸入響鈴指示
              
            以上信號在通訊過程之中可能會被全部或部分使用,最簡單的通訊僅需TXD及RXD及SG即可完成,其他的握手信號可以做適當(dāng)處理或直接懸空,至于是否可以懸空這視乎你的通訊軟件。比如說,如果使用DOS所提供的BIOS通訊驅(qū)動程序,那么,這些握手信號則需要做如下處理,因為BIOS的通訊驅(qū)動使用了這些信號。如果使用自己編寫的串行驅(qū)動程序則可以完全不使用這些握手信號(詳見下面有關(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)識寄存器
                  2WriteFCRFIFO控制寄存器
                  3Read/WriteLCR線路控制寄存器
                  4Read/WriteMCRMODEM控制寄存器
                  5ReadLSR線路狀態(tài)寄存器
                  6ReadMSRMODEM狀態(tài)寄存器
                  7Read/Write-Scratch Register

                  PC機(jī)支持1-4個串行口,即COM1-COM4,其基地址在BIOS數(shù)據(jù)區(qū)0000:0400-0000:0406中描述,對應(yīng)地址分別為3F8/2F8/3E8/2E8,COM1及COM3使用PC機(jī)中斷4,COM2及COM4使用中斷3。
              

                  在上表中,8250共有12個寄存器,使用了8個地址,其中部分寄存器共用一個地址,由DLAB=0/1來區(qū)分,在DLAB=1用于設(shè)定通訊所需的波特率。常用的波特率參數(shù)見下表:
             
                  速率(BPS)波特率高八位波特率低八位
            5009h00h
            30001h80h
            60000hC0h
            240000h30h
            480000h18h
            960000h0Ch
            1920000h06h
            3840000h03h
            5760000h02h
            11520000h01h

              
              以下幾個表格為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ù)時產(chǎn)生中斷,Bit1置1時允許發(fā)送保持寄存器空時產(chǎn)生中斷,Bit2置1將在LSR變化時產(chǎn)生中斷,相應(yīng)的Bit3置位將在MSR變化時產(chǎn)生中斷。
              中斷識別寄存器(IIR):
            位注 釋
            Bit6:7=00無FIFO
            Bit6:7=01允許FIFO,但不可用
            Bit6:7=11允許FIFO
            Bit5允許64字節(jié)FIFO(16750)
            Bit4未使用
            Bit316550超時中斷
            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無中斷產(chǎn)生

              IIR為只讀寄存器,Bit6:7用來指示FIFO的狀態(tài),均為0時則無FIFO,此時為8250或16450芯片,為01時有FIFO但不可以使用,為11時FIFO有效并可以正常工作。Bit3用來指示超時中斷(16550/16750)。
              

                  Bit0用來指示是否有中斷發(fā)生,Bit1:2標(biāo)識具體的中斷類型,這些中斷具有不同的優(yōu)先級別,其中LSR中斷級別最高,其次是數(shù)據(jù)就緒中斷,然后是發(fā)送寄存器空中斷,而MSR中斷級別最低。
              FIFO控制寄存器(FCR):
            位注 釋
            Bit7:6=001Byte產(chǎn)生中斷
            Bit7:6=014Byte產(chǎn)生中斷
            Bit7:6=108Byte產(chǎn)生中斷
            Bit7:6=1114Byte產(chǎn)生中斷
            Bit5允許64字節(jié)FIFO
            Bit4未使用
            Bit3DMA模式選擇
            Bit2清除發(fā)送FIFO
            Bit1清除接收FIFO
            Bit0允許FIFO

              FCR可寫但不可以讀,該寄存器用來控制16550或16750的FIFO寄存器。Bit0置1將允許發(fā)送/接收的FIFO工作,Bit1和Bit2置1分別用來清除接收及發(fā)送FIFO。清除接收及發(fā)送FIFO并不影響移位寄存器。Bit1:2可自行復(fù)位,因此無需使用軟件對其清零。Bit6:7用來設(shè)定產(chǎn)生中斷的級別,發(fā)送/接收中斷將在發(fā)送/接收到對應(yīng)字節(jié)數(shù)時產(chǎn)生。
              線路控制寄存器(LCR):
            位注 釋
            Bit7=1允許訪問波特率因子寄存器
            Bit7=0允許訪問接收/發(fā)送及中斷允許寄存器
            Bit6設(shè)置間斷,0-禁止,1-設(shè)置
            Bit5:3=XX0無校驗
            Bit5:3=001奇校驗
            Bit5:3=011偶校驗
            Bit5:3=101奇偶保持為1
            Bit5:3=111奇偶保持為0
            Bit2=01位停止位
            Bit2=12位停止位(數(shù)據(jù)位6-8位),1.5位停止位(5位數(shù)據(jù)位)
            Bit1:0=005位數(shù)據(jù)位
            Bit1:0=016位數(shù)據(jù)位
            Bit1:0=107位數(shù)據(jù)位
            Bit1:0=118位數(shù)據(jù)位

              LCR用來設(shè)定通訊所需的一些基本參數(shù)。Bit7為1指定波特率因子寄存器有效,為0則指定發(fā)送/接收及IER有效。Bit6置1會將發(fā)送端置為0,這將會使接收端產(chǎn)生一個“間斷”。Bit3-5用來設(shè)定是否使用奇偶校驗以及奇偶校驗的類型,Bit3=1時使用校驗,Bit4為0則為奇校驗,1為偶校驗,而Bit5則強(qiáng)制校驗為1或0,并由Bit4決定具體為0或1。Bit2用來設(shè)定停止位的長度,0表示1位停止位,為1則根據(jù)數(shù)據(jù)長度的不同使用1.5-2位停止位。Bit0:1用來設(shè)定數(shù)據(jù)長度。
              MODEM控制寄存器(MCR):
            位注 釋
            Bit7未使用
            Bit6未使用
            Bit5自動流量控制(僅16750)
            Bit4環(huán)路測試
            Bit3輔助輸出2
            Bit2輔助輸出1
            Bit1設(shè)置RTS
            Bit0設(shè)置DSR

              MCR寄存器可讀可寫,Bit4=1進(jìn)入環(huán)路測試模式。Bit3-0用來控制對應(yīng)的管腳。
              線路狀態(tài)寄存器(LSR):
            位注 釋
            Bit7FIFO中接收數(shù)據(jù)錯誤
            Bit6發(fā)送移位寄存器空
            Bit5發(fā)送保持寄存器空
            Bit4間斷
            Bit3幀格式錯
            Bit2奇偶錯
            Bit1超越錯
            Bit0接收數(shù)據(jù)就緒

              LSR為只讀寄存器,當(dāng)發(fā)生錯誤時Bit7為1,Bit6為1時標(biāo)示發(fā)送保持及發(fā)送移位寄存器均空,Bit5為1時標(biāo)示僅發(fā)送保持寄存器空,此時,可以由軟件發(fā)送下一數(shù)據(jù)。當(dāng)線路狀態(tài)為0時Bit4置位為1,幀格式錯時Bit3置位為1,奇偶錯和超越錯分別將Bit2及Bit1置位為1。Bit0置位為1表示接收數(shù)據(jù)就緒。
              MODEM狀態(tài)寄存器(MSR):
            位注 釋
            Bit7載波檢測
            Bit6響鈴指示
            Bit5DSR準(zhǔn)備就緒
            Bit4CTS有效
            Bit3DCD已改變
            Bit2RI已改變
            Bit1DSR已改變
            Bit0CTS已改變

              MSR寄存器的高4位分別對應(yīng)MODEM的狀態(tài)線,低4位表示MODEM的狀態(tài)線是否發(fā)生了變化。


                   以上我們詳細(xì)介紹了PC機(jī)的串行通訊硬件環(huán)境,以下將分別給出使用查詢及中斷驅(qū)動的方法編寫的串行口驅(qū)動程序。這些程序僅使用RXD/TXD,無需硬件握手信號。


            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉