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...