匯編(8255A的方式0)


方式0也叫做基本輸入/輸出方式,PA口和PB口可以通過方式控制線規定輸入口或輸出口,PC口分為兩個4位端口,高4位為一個端口,低4位為一個端口。

 

 

1、程序解析:

(1)MOV AL,81H

 

 這是8255A的工作方式控制字:即把PA口設置為方式0,輸出,PC口上半部分定義為輸出,PB口指定為方式0,輸出,PC口下半部分指定為輸入。

(2)MOV AL 0FH 

 

 0有效,D4、D5、D6屬於無效字段沒有實際意義置零,D3、D2、D1全為1,代表選擇PC7,PC7位置高,使STB=1,置位為1。

2、匯編程序:

(1)先初始化:控制口地址(303H)、工作方式控制字、置位/復位控制字(拉低或拉高PC7即STRB),內存首地址、字符個數

(2)兩個循環:小循環讀取設備的狀態,設備空閑后開始讀取數據,然后拉低STB(初始為高),因為負脈沖數據使得能夠輸出,然后再將STB置高,只要沒輸入結束,繼續循環。

  ORG 100H    
    MOV DX,303H    ;8255A的控制口地址,這里設8255A的控制口地址為303H 
    
    MOV AL,81H    ;工作方式控制字(初始化)
    OUT DX,AL    ;送到控制口
    
    MOV AL 0FH  ;按位置位/復位控制字,PC7位置高,使STB=1(控制線),
    OUT DX,AL    
    
    MOV SI,OFFSET BUF ;打印字符的內存首址,SI為源變址寄存器
    MOV CX,OFFH    ;打印字符個數

  L:MOV DX,302H
    IN Al,DX  ;讀取狀態
    AND AL,04H
    JNZ L    ;忙則等待,不忙則向PA口送數
    
    MOV DX 300H    ;PA口地址 
    MOV AL,[SI]    ;從內存取數字 
    OUT DX,AL    ;送數到 PA口 
    
    MOV DX,303H    ;8255A的控制口,這里設8255A的控制口地址為303H 
    MOV AL,0EH    ;PC7位置低,使STB=0(控制線)
    OUT DX,Al
    NOP    ;延時 
    NOP
    
    MOV AL,0FH    ;PC7位置高,使STB=1(控制線)
    OUT DX,Al
    INC SI
    DEC CX
    JNZ L
    MOV AL,4CH
    INT 21H
    BUF DB   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM