『壹』 8255a的初始化問題 匯編語言
8255A有四個口,分別為PA、PB、PC和控制口,其對應的地址題中已告知,即0FFE0H-0FFE3H,也就是說8255A控制口的地址為0FFE3H。在對8255A晶元初始化時需先送控制字(規定PA、PB、PC的工作方式用),而在送控制字時是必須通過控制口進行操作,故程序中需用MOV DX , 0FFE3H 和 OUT DX,AL來完成晶元初始化任務。
『貳』 8255A初始化題目
地址范圍 8CH~8FH
控制字為 10110011B=B3H
初始化程序 MOV DX,8FH
MOV AL,B3H
OUT DX,AL
『叄』 8255A的初始化編程問題
在單片機里編程,通過控制8255的地址達到效果,例如
#define PA XBYTE[0xFF7C],
之後你對PA的操作就相當於對單片機 IO口的操作,當然你還要寫控制字,8255是沒法直接燒程序的,沒有FLASH.
『肆』 8255A初始化
兩步走:
1:根據題目要求寫控制字;
2:給相應埠送初值。
每個埠都得有這兩步。
『伍』 8255晶元的初始化字
D7 D6 D5 D4 D3 D2 D1 D0
D7:特徵位 D6D5:A組方式00=方式0 ,01=方式1,1X=方式2
D4: A口0=輸出,1=輸入 D3:C口C7~C4 0=輸出,1=輸入D2:B組方式0=方式0,1=方式1
D1: B口0=輸出,1=輸入D0:C口C3~C0 0=輸出,1=輸入
D7位為「1」時,為方式選擇控制字的標識位。
D6、D5位決定A埠的工作方式。
D4位決定A埠工作在輸入還是輸出方式。
D3位決定C埠高4位PC7~PC4是作為輸入埠,還是作為輸出埠。
D2位用來選擇B埠的工作方式。
D1位決定B埠作為輸入還是輸出埠。
D0位決定C埠低4位PC3~PC0作出為輸入,還是輸出。 在8255A晶元初始化時,C埠置1/置0控制字可以單獨設置C埠的某一位為0或某一位為1。控制字的D7位為「0」時,是C埠置1/置0控制字中的標識位,這個控制字只對C口起作用,任何一位都可以通過按位置位/復位控制字來設置。
注意:對C口的置位/復位控制不是把控制字送到C口,而是由控制口決定各位的狀態,是把控制字送到控制口 3種工作方式可用軟體編程對控制口設置來指定。三種基本的工作方式為: 方式0-基本的輸入輸出,方式1-選通輸入輸出方式, 方式2-雙向傳送方式。
1) 工作方式0(基本輸入輸出方式)
功能:方式0不使用聯絡信號,也不使用中斷,A口和B口可定義為輸入或輸出口,C口分成兩個部分(高四位和低四位),C口的兩個部分也可分別定義為輸入或輸出。在方式0,所有口輸出均有鎖存,輸入只有緩沖,無鎖存,C口還具有按位將其各位清0或置1的功能。常用於與外設無條件的數據傳送或接收外設的數據。
2) 工作方式1(選通輸入輸出方式)
A口借用C口的一些信號線用作控制和狀態信號,組成A組,B口借用C口的一些信號線用作控制和狀態信號,組成B組。在方式1下,C口的某些位被佔用。
方式1的輸出:當A口工作於方式1且用作輸出口時,C口的PC7線用作輸出緩沖器滿OBF信號,PC6用作外設收到數據後的響應信號ACK,PC3用作中斷請求輸出信號線INTR。
當B口工作於方式l且用作輸出口時,C口的PC1線用作輸出緩沖器滿OBF信號,PC2用作外設收到數據後的響應信號ACK,PC0用作中斷請求輸出信號線INTR。
3) 工作方式2 (雙向輸入輸出方式)
功能:方式2是A組獨有的工作方式。外設既能在A口的8條引線上發送數據,又能接收數據。此方式也是借用C口的5條信號線作控制和狀態線,A口的輸入和輸出均帶有鎖存。
『陸』 試編寫初始化程序,設8255A的埠A工作在方式0輸入,B口工作在方式0輸出,使PC5端
編寫初始化程序,要先寫控制字,所以先假設8255A的埠A、埠B和控制字寄存器的埠地址分別為20H、21H和22H,那麼初始化程序為:MOV DX,023H;MOV AL,10010000B;OUT DX,AL······(其中控制字為:10010000B,PC端多為輸出端)。
8255A的A,B,C三個埠的工作方式是在初始化編程時,通過向8255A的控制埠寫入控制字來設定的。8255A由編程寫入的控制字有兩個:方式控制字和置位/復位控制字。
其中,方式控制字用於設置埠A,B,C的工作方式和數據傳送方向,置位/復位控制字用於設置C口的PC7~PC0中某一條口線PCi(i=0~7)的電平,兩個控制字公用一個埠地址。
8255A具有3種基本的工作方式,在對8255A進行初始化編程時,應向控制字寄存器 寫入方式選擇控制字,用來規定8255A各埠的工作方式。
這3種基本工作方式是:
1、方式0——基本輸入輸出方式:適用於不需要用應答信號的簡單輸入輸出場合,這種方式埠A和B可作為8位的埠,埠C的高4位和低4位可作為兩個4位的埠;
2、方式1——選通輸入輸出方式:埠A和B作為數據口,均可工作於輸入或輸出方式,埠C的6根線用來產生或接受聯絡信號。
3、方式2——雙向匯流排I/O方式:只有埠A可以工作於這種方式,埠A工作於方式2 時,埠C的5位(PC3~PC7)作A口的聯絡控制信號。
參考資料來源:網路-8255A晶元
『柒』 怎樣編寫8255A的初始化 (用C語言)請指教!
#include "reg51.h"
#include "absacc.h"
#define COM XBYTE[0x7FFF] //8255A 控制口地址
#define PA XBYTE[0x7CFF] //8255A A口地址
#define PB XBYTE[0x7DFF] //8255A B口地址
上面就是初始化 後面比如 你要在pa口 輸出0x80那就
PA=0x80;
那個地址的演算法
假設P0口連接D7~D0,P2.1、P2.0連接A1A0,P2.7連接
,那地址就應該是:
A口:0111110011111111 即7CFF
B口:0111110111111111 即7DFF
C口:0111111011111111 即7EFF
控制寄存器:0111111111111111 即7FFF
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
這是對應的地址
『捌』 假定8255A的地址為 0060H~0063H.試編寫下列情況的初始化程序,
#include <reg52.h>
#include <absacc.h>
#define a8255_PA XBYTE[0x0060] /*PA口地址*/
#define a8255_PB XBYTE[0x0061] /*PB口地址*/
#define a8255_PC XBYTE[0x0062] /*PC口地址*/
#define a8255_CON XBYTE[0x0063] /*控制字地址*/
main()
{
for(i=0;i<1000;i++); 延時
a8255_CON=0x80;PA,PB,PC全為輸出,
}
我只是給你舉個例子,8255的控制字你看看說明書把0x80改成你需要的就行了,提醒你得是PC 如果作為輸入輸出口來用是不可以定義某個位為輸入或輸出的,PC口只是可以使某個位置一而不影響其他位,比如你想讓pc.7輸出1,那你要先把PC設為輸出,再操作控制字讓。7置一。
}
『玖』 8255可編程介面晶元怎麼初始化
舉例說明如下:
設8255A-5晶元的埠地址為200H~203H,,需設置A埠是輸入口,埠B是輸出口,埠C為輸出口。分析說明A口B口的工作方式並編寫初始化程序。
答:
方式控制字 =1001000B,
A口方式0輸入,B口方式0輸出,C口方式0輸出
初始化程序:
MOV DX, 203H ;8255控制口地址送入DX
MOV AL,101000B ;方式控制字送入AL
OUT DX, AL ;方式控制字從AL輸出到8255控制口
『拾』 8255A的埠地址為260H~263H,編寫對8255A初始化的程序段
8255方式控制字:
D7 D6 D5 D4 D3 D2 D1 D0
1 0 1 1 1 1 0 1 b = 0BDh
;;8255A初始化80x86微機匯編序:
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
START: MOV AL, 0BDh ;AL←方式控制字
MOV DX, 263h ;DX←8255控制口地址
OUT DX, AL ;方式控制字→8255控制口
......
CODE ENDS
END START