2.1 硬件原理圖
8086的輸入輸出控制是通過8255芯片控制的,用LED代表輸出的數據,按鍵代表輸入的數據,八個LED接在8255的PA端口上,八個按鍵接在PB端口上,通過8086控制8255A進行數字量的輸入與輸出。
2.2 8255A簡介
2.2.1 引腳圖
(1)片選信號CS:低電平有效,用于多片8255A連接時控制某一片8255;
(2)復位信號RESET:高電平有效,用于將8255A復位;
(3)讀數據信號RD:低電平有效,用于控制芯片進入讀取模式;
(4)寫數據信號WR:低電平有效,用于控制芯片進入寫入模式;
(5)兩個地址信號A0和A1:高電平有效,用于控制8255A內部的四個寄存器,通過這兩個地址信號,可以控制寫入的數據是給哪一個寄存器的;
(6)八位數據信號D0~D7:三態門輸入,用于和8086 CPU的數據總線相連,進行數據的傳輸;
(7)三組IO端口PA、PB、PC:三態門,用于外設數據的輸入與輸出,其中PC端口可以單獨分解為高四位與低四位分別控制。
2.2.2 內部結構框圖
2.2.3 8255A寄存器詳解
(1)方式控制字
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
標志位 | PA控制 | PA模式 | PC高4位 | PB控制 | PB模式 | PC低4位 |
D7:標志位,直接置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端口復位置位控制字
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
標志位 | 保留 | PC端口選擇 | 置/復位 |
D7:標志位,直接置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:置位復位選擇,寫0復位,寫1置位
2.2.4 8255A地址計算
8255A有三個引腳與地址有關,分別是片選CS和兩個地址線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相連,那么對應的地址分別是:
PA端口地址:1000 00000000 0000 B,即十六進制的8000 H
PB端口地址:1000 00000000 0001 B,即十六進制的8001 H
PC端口地址:1000 00000000 0010 B,即十六進制的8002 H
控制寄存器地址:1000 0000 0000 0011 B,即十六進制的8003 H
也就是說8255A的地址應該根據硬件連接決定,而不是唯一的。
2.2.5 8255A控制步驟
(1)8086 CPU在T1和T2狀態通過20根地址線輸出20位的地址,通過鎖存器鎖存地址
(2)8086 CPU在T3和T4狀態通過16根數據下輸出16位數據,通過地址總線傳送至8255A
(3)設置8255A端口為輸出模式
(4)給8255A寫輸出的數據
2.3 源代碼
例題1:利用8255的PA端口,控制8個LED循環點亮。
解析過程:由于原理圖中的CS直接接地,A0和A1接在8086地址的A1和A2上,所以,8255A的地址按照順序應該是PA->0000H;PB->0002H;PC->0004H;控制寄存器->0006H,由于LED接在PA端口上,所以需要8086首先發送地址0000H,然后由于是配置PA端口為輸出端口,所以控制字可以不用設置,默認為0即可。
代碼如下。
注:
(1)程序中使用的AL寄存器、DX寄存器和CX寄存器在8086CPU中有以下幾個特殊用途,如下表所示:
(2)移位指令比較
例題2:利用8255的PB端口的八個按鍵,控制PA端口8個LED。
解析過程:首先將PB端口配置為輸入模式,然后PA端口配置為輸出模式,而后將PB端口讀取的數據按位取反直接傳給PA即可,假設按鍵1按下的時候,PB端口讀取的數據是1111 1110,按位取反后變為0000 0001,剛好是第一個LED電亮。由于硬件與第一章的硬件完全一致,所以地址也一致,即PA->0000H;PB->0002H;PC->0004H;控制寄存器->0006H。程序如下。
-
led
+關注
關注
242文章
23385瀏覽量
663547 -
按鍵
+關注
關注
4文章
223瀏覽量
57673 -
8086
+關注
關注
1文章
30瀏覽量
18877
發布評論請先 登錄
相關推薦
請問f429i DMA訪問外擴SRAM是否與內置SRAM的設置相同?
請問如何在XST中有選擇地禁用IBUF/OBUF插入?
請問如何管理XDC文件和頂級中的生成時鐘?
單片機反相器_小白學單片機 :AT89S51單片機基本硬件結構認識(3)精選資料分享
HC32L072PTAT 的PA11、PA12腳我程序不能用作普通IO用
更高的帶寬! 說說筆記本的輸入輸出端口
MAX7313 16端口輸入/輸出擴展器
![MAX7313 16<b class='flag-5'>端口</b><b class='flag-5'>輸入</b>/<b class='flag-5'>輸出</b>擴展器](https://file1.elecfans.com//web2/M00/A5/F1/wKgZomUMOuuAfijnAAARiV1WBfM050.gif)
產品說明書之外的收獲—IBIS
![產品說明書之外的收獲—IBIS](https://file1.elecfans.com//web2/M00/A6/1C/wKgZomUMO8iAYx9gAAAPNw3VUzc104.jpg)
單片機反相器_小白學單片機 :AT89S51單片機基本硬件結構認識(3)
![單片機反相器_小白學單片機 :AT89S51單片機基本硬件結構認識(3)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
NAND閃存VDNF64G08xS50xx8V25-Ⅱ用戶手冊
![NAND閃存VDNF64G08xS50xx8V25-Ⅱ用戶手冊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何最好地實現精確的時間和同步
![如何最好地實現精確的時間和同步](https://file.elecfans.com/web2/M00/7C/C1/poYBAGN7KkKAANL-AAFJbZWwFnE300.png)
評論