2.1 硬件原理圖
8086的輸入輸出控制是通過8255芯片控制的,用LED代表輸出的數(shù)據(jù),按鍵代表輸入的數(shù)據(jù),八個(gè)LED接在8255的PA端口上,八個(gè)按鍵接在PB端口上,通過8086控制8255A進(jìn)行數(shù)字量的輸入與輸出。
2.2 8255A簡(jiǎn)介
2.2.1 引腳圖
(1)片選信號(hào)CS:低電平有效,用于多片8255A連接時(shí)控制某一片8255;
(2)復(fù)位信號(hào)RESET:高電平有效,用于將8255A復(fù)位;
(3)讀數(shù)據(jù)信號(hào)RD:低電平有效,用于控制芯片進(jìn)入讀取模式;
(4)寫數(shù)據(jù)信號(hào)WR:低電平有效,用于控制芯片進(jìn)入寫入模式;
(5)兩個(gè)地址信號(hào)A0和A1:高電平有效,用于控制8255A內(nèi)部的四個(gè)寄存器,通過這兩個(gè)地址信號(hào),可以控制寫入的數(shù)據(jù)是給哪一個(gè)寄存器的;
(6)八位數(shù)據(jù)信號(hào)D0~D7:三態(tài)門輸入,用于和8086 CPU的數(shù)據(jù)總線相連,進(jìn)行數(shù)據(jù)的傳輸;
(7)三組IO端口PA、PB、PC:三態(tài)門,用于外設(shè)數(shù)據(jù)的輸入與輸出,其中PC端口可以單獨(dú)分解為高四位與低四位分別控制。
2.2.2 內(nèi)部結(jié)構(gòu)框圖
2.2.3 8255A寄存器詳解
(1)方式控制字
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
標(biāo)志位 | PA控制 | PA模式 | PC高4位 | PB控制 | PB模式 | PC低4位 |
D7:標(biāo)志位,直接置1即可
D6~D5:A組工作方式選擇
D6 | D5 | 工作方式 |
---|---|---|
0 | 0 | PA端口與PC端口高4位工作在方式0 |
0 | 1 | PA端口與PC端口高4位工作在方式1 |
1 | 0 | PA端口工作在方式2 |
1 | 1 |
D4:PA端口輸入輸出控制
0:PA端口配置為輸出模式
1:PA端口配置為輸入模式
D3:PC端口高四位輸入輸出控制
0:PC端口高四位配置為輸出模式
1:PC端口高四位配置為輸入模式
D2:B組工作方式選擇
0:PB端口與PC端口低四位工作在方式0
1:PB端口與PC端口低四位工作在方式1
D1:PB端口輸入輸出控制
0:PB端口配置為輸出模式
1:PB端口配置為輸入模式
D0:PC端口低四位輸入輸出控制
0:PC端口低四位配置為輸出模式
1:PC端口低四位配置為輸入模式
(2)PC端口復(fù)位置位控制字
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
標(biāo)志位 | 保留 | PC端口選擇 | 置/復(fù)位 |
D7:標(biāo)志位,直接置0即可
D3~D1:PC端口選擇
D3 | D2 | D1 | PC端口 |
---|---|---|---|
0 | 0 | 0 | 選擇PC0 |
0 | 0 | 1 | 選擇PC1 |
0 | 1 | 0 | 選擇PC2 |
0 | 1 | 1 | 選擇PC3 |
1 | 0 | 0 | 選擇PC4 |
1 | 0 | 1 | 選擇PC5 |
1 | 1 | 0 | 選擇PC6 |
1 | 1 | 1 | 選擇PC7 |
D0:置位復(fù)位選擇,寫0復(fù)位,寫1置位
2.2.4 8255A地址計(jì)算
8255A有三個(gè)引腳與地址有關(guān),分別是片選CS和兩個(gè)地址線A0、A1,其中A0和A1的組合方式有四種,如下表所示:
A1 | A0 | 描述 |
---|---|---|
0 | 0 | 選擇PA端口 |
0 | 1 | 選擇PB端口 |
1 | 0 | 選擇PC端口 |
1 | 1 | 方式字選擇 |
如果CS通過反相器與8086 CPU的A15連接,A0和A1與8086 CPU的A0,A1相連,那么對(duì)應(yīng)的地址分別是:
PA端口地址:1000 00000000 0000 B,即十六進(jìn)制的8000 H
PB端口地址:1000 00000000 0001 B,即十六進(jìn)制的8001 H
PC端口地址:1000 00000000 0010 B,即十六進(jìn)制的8002 H
控制寄存器地址:1000 0000 0000 0011 B,即十六進(jìn)制的8003 H
也就是說8255A的地址應(yīng)該根據(jù)硬件連接決定,而不是唯一的。
2.2.5 8255A控制步驟
(1)8086 CPU在T1和T2狀態(tài)通過20根地址線輸出20位的地址,通過鎖存器鎖存地址
(2)8086 CPU在T3和T4狀態(tài)通過16根數(shù)據(jù)下輸出16位數(shù)據(jù),通過地址總線傳送至8255A
(3)設(shè)置8255A端口為輸出模式
(4)給8255A寫輸出的數(shù)據(jù)
2.3 源代碼
例題1:利用8255的PA端口,控制8個(gè)LED循環(huán)點(diǎn)亮。
解析過程:由于原理圖中的CS直接接地,A0和A1接在8086地址的A1和A2上,所以,8255A的地址按照順序應(yīng)該是PA->0000H;PB->0002H;PC->0004H;控制寄存器->0006H,由于LED接在PA端口上,所以需要8086首先發(fā)送地址0000H,然后由于是配置PA端口為輸出端口,所以控制字可以不用設(shè)置,默認(rèn)為0即可。
代碼如下。
注:
(1)程序中使用的AL寄存器、DX寄存器和CX寄存器在8086CPU中有以下幾個(gè)特殊用途,如下表所示:
(2)移位指令比較
例題2:利用8255的PB端口的八個(gè)按鍵,控制PA端口8個(gè)LED。
解析過程:首先將PB端口配置為輸入模式,然后PA端口配置為輸出模式,而后將PB端口讀取的數(shù)據(jù)按位取反直接傳給PA即可,假設(shè)按鍵1按下的時(shí)候,PB端口讀取的數(shù)據(jù)是1111 1110,按位取反后變?yōu)?000 0001,剛好是第一個(gè)LED電亮。由于硬件與第一章的硬件完全一致,所以地址也一致,即PA->0000H;PB->0002H;PC->0004H;控制寄存器->0006H。程序如下。
-
led
+關(guān)注
關(guān)注
242文章
23252瀏覽量
660553 -
按鍵
+關(guān)注
關(guān)注
4文章
223瀏覽量
57595 -
8086
+關(guān)注
關(guān)注
1文章
30瀏覽量
18821
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論