串列埠位址及暫存器功能詳細資料

2021-04-02 04:20:11 字數 4180 閱讀 4184

pc

機上,com1

和com2

的位址是

3f8~3ff

及2f8~2ff

,在這個範圍內的每個位址都有不同的功能,這些功能分別通過暫存器來實現,讀寫這些暫存器就可以執行與串列埠相關的功能。而所謂的暫存器就是暫時存放資訊的地方,這些被存放在此的資訊是以位的形式儲存,通常以

8個位(乙個位元組)作為乙個單位。讀寫這些暫存器位址的同時,也就是讀取這些代表的狀態或控制某些功能。

com1

com2

暫存器名稱

簡稱3f8

2f8波特率分頻器(低八位)

bdr3f9

2f9波特率分頻器(高八位)

bdr3f8

2f8傳送資訊

/接收資訊暫存器

dr3f9

2f9中斷啟動暫存器

ier3fa

2fa中斷辨識暫存器

iir3fb

2fb傳輸線控制暫存器

lcr3fc

2fc數據機控制暫存器

mcr3fd

2fd傳輸線狀態暫存器

lsr3fe

2fe數據機狀態暫存器

msr上表中,

3f8,

3f9及

2f8,

2f9分別有兩種功能,顯然還需要其他暫存器的訊號來加以區別。

在序列通訊中,這一點是通過使用傳輸線控制暫存器(

lcr)上的第

7位來實現的。這個位被稱為分頻器鎖存器訪問位(

divistor latch access bit,dlab),

當dlab為0

時,表示讀寫資訊暫存器和中斷啟動暫存器;當

dlab為1

時,表示讀寫波特率分頻器的內容。

以下是各暫存器的說明:

lbdr

:設定使用序列通訊的傳輸速度。

串列埠波特率和資料格式的設定:

首先向lcr

(傳輸線控制暫存器)的高位寫入1(即

dlab為1

),然後再設定波特率:在基位址和基位址

+1的地方寫入的資料為

1843200/

(16*

波特率)。然後設定

lcr,最後設定

modem

控制暫存器和中斷允許暫存器。波特率數值

=1843200/

(16*

波特率)(十進位制,可轉化為十六進製制)

outportb(0x3fb,0x80);

對lcr

的最高位置『

1',是說明以下為輸入波特率因子

outportb(0x3f8,0x0c); //outportb(0x3f8+0,0x0c)

輸入波特率因子的低8位

/9600

outportb(0x3f9,0x00); //outportb(0x3f8+1,0x00)

輸入波特率因子的高8位

ldr

先令dlab為0

,再讀取

3f8就等於讀取被傳送到

com1

的資訊。若將資訊寫入

3f8,則資訊會被放入傳送暫存器中,並被晶元內的移位暫存器一位接著一位地送出去。

lier

用來啟動晶元中的

4種中斷,該位為

1時表示該中斷被啟動。

bit0

:接收的資訊有效中斷啟動。

bit1

:傳送器保持暫存器已空中斷啟動

bit2

:接收器連線狀態中斷啟動

bit3

:數據機狀態中斷啟動

bit4

-bit7

:永遠為

0outportb(0x3f9,0x01); //

啟動中斷,接收資料有效

liir

通過讀取此暫存器可以知道中斷的產生是由誰所引發。

bit0:為0

時表示尚有中斷未處理;為

1時表示無中斷。

bit2

bit1

中斷**00

數據機狀態01

傳送器儲存暫存器空著10

接受資訊為有效11

連線控制狀態

bit3

~bit7

:永遠為

0outportb(0x3fa,0x07);//

表示處於連線控制狀態

llcr

此暫存器定義傳輸資訊的格式。各位的意義如下:

bit0

bit1意義0

0字元長度為5個位

01

字元長度為6個位

10

字元長度為7個位

11

字元長度為8個位

bit2

:終止位。設為

0表示使用

1個終止位;設為

1時有兩種情況,字元長度為

5時表示

1.5個終止位,而字元長度不是

5時則表示

2個終止位。

bit3

:奇偶校驗位啟動。設為

0時表示無奇偶校驗位,設為

1時表示使用奇偶校驗位。

bit4

:奇偶校驗方式選擇。設為

0時選擇奇校驗;設為

1時選擇偶校驗。

bit5

:指定奇偶校驗位的方式。設為

0時表示不限制;設為

1時,則選擇奇校驗時,奇偶校驗位為

1;選擇偶校驗時,奇偶校驗位為0。

bit6

:終止控制位。設為

0時表示正常輸出;設為

1時則強迫輸出0。

bit7

:除法器軒鎖位。設為

0時表示訪問資訊暫存器;設為

1時表示訪問波特率分頻器。

outportb(0x3fb,0x80); //

對lcr

的最高位置『

1',是說明以下**為輸入波特率因子

lmcr

用來控制數據機的介面訊號。

bit0

:設為1

時,dtr

腳位為low

;設為0

時,dtr

腳位為high

。bit1

:設為1

時,dts

腳位為low

;設為0

時,rts

腳位為high

bit2

,bit3

:用於控制晶元上的輸出,新型晶元現已不用。

bit4

::設為

1時,晶元內部作自我診斷。

其他位永遠為

0outportb(0x3fc,0x0b);//見上l

lsr

表示資訊傳送過程種的各種狀態。各位為

1時表示該狀態成立,為

0時不成立

bit0:

資料已接收完畢。(

data ready

)bit1

:資料溢位錯誤。(

overrun error

)bit2

:奇偶校驗位錯誤。(

parity error

)bit3

:資訊框錯誤。(

framing error

)bit4

:終止中斷。(

break interrupt

)bit5

:傳送器儲存暫存器空閒(

tran**itter holding register empty

)。bit6

:傳送移位暫存器空閒(

tran**itter shift register empty

)。bit7

:永遠為0l

msr

此暫存器高

4位為數據機控制線目前狀態;低

4位在數據機有訊號時被設為

1,在被讀取後會恢復為0。

bit0:1

時表示cts

訊號改變

bit1:1

時表示dsr

訊號改變

bit2:1

時表示ri

訊號改變

bit3:1

時表示dcd

訊號改變

bit4

:cts

訊號的補碼

bit5

:dsr

的補碼bit6:ri

訊號的補碼

bit7

:dcd

訊號的補碼。

串列埠位址及暫存器功能詳細資料

因為linux在初始化時間以後就初始化了tty,tty的初始過程包含了串列埠裝置 com1和com2 的初始化,為了理解其中內容,我從轉來了相關的說明。關於linux初始化這部分的分析,我應該在讀完這部分內容後一段時間寫出來,因為畢竟自己也是在邊讀 邊學習麼。雖然發揚愚公移山的精神,但是什麼時候才能...

省市區詳細位址分離及省市區詳細資料庫

資源包含省市區位址分離演算法和省市區位址資料,需要省市區位址資料的朋友,直接去adsmsq.php檔案中提取。getads new getads ar getads getalladdress 安徽省阜陽市潁上縣南照鎮六里村 var dump ar 輸出結果 array 4 exit 直接呼叫這個方...

點亮LED2資料手冊查閱及暫存器瀏覽

1 gpio概念的引入 gpio general purpose input output 通用輸入輸出 gpio就是晶元的引腳 晶元上的引腳有些不是gpio,只有一部分是 作為gpio的這類引腳,他的功能和特點是可以被程式設計控制它的工作模式,也可以程式設計控制它的電壓高低等。gpj0 3 gpj...