8086 8255A proteus仿真实验


实验内容

数码管循环显示0123456789abcdef-

电路图

电路分析

端口地址和控制字地址主要看电路图,片选信号由译码器的\(\overline{IO1}\)引脚给出,即\(A_{12}-A_9\)为0001B时,片选信号有效。

地址线\(A_2A_1\)送给8255,选择芯片上的寄存器。8255A上有4个寄存器,其中,\(A_2A_1\)为00时选择端口A,\(A_2A_1\)为01时选择端口B,\(A_2A_1\)为10时选择端口C,\(A_2A_1\)为11时选择控制寄存器。
针对这题,为讨论方便,设其他地址线都为0。

端口A地址:\(A_{19}-A_0:0000 0000 0001 0000 0000B = 200H\)
端口B地址:\(A_{19}-A_0:0000 0000 0001 0000 0010B = 202H\)
端口C地址:\(A_{19}-A_0:0000 0000 0001 0000 0100B = 204H\)
控制字地址:\(A_{19}-A_0:0000 0000 0001 0000 0110B = 206H\)

代码

DATA SEGMENT
    PORTD EQU 0206H
    PORTA EQU 0200H
    REGIS EQU 10000000B ;A OUT A工作方式0
    LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH
DATA ENDS

STACK SEGMENT
    DW 128 DUP(0)
STACK ENDS

CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:
    MOV AX,DATA
    MOV DS,AX
    
    ;设置8255工作方式
    MOV DX,PORTD
    MOV AL,REGIS
    OUT DX,AL
    
    ;设置输出端口为端口A
    MOV DX,PORTA

G1:    
    ;取LED数组的首地址
    MOV SI,OFFSET LED 
G2:
    MOV AL,[SI]
    OUT DX,AL;输出显示
    
    ;延时操作 
    CALL DELAY
    
    ;如果当前值等于数组最后一个数的值则从头开始
    CMP AL,0BFH
    JE G1
    
    ;地址加一
    INC SI
   
    ;跳转到G2 
    JMP G2
    
    MOV AH,4CH
    INT 21H

;延时函数    
DELAY PROC NEAR
    PUSH BX
    PUSH CX
    MOV BX,200H
    FOR1:MOV CX,200H
    FOR2:LOOP FOR2
    DEC BX
    JNZ FOR1
    POP CX
    POP BX
    RET
DELAY ENDP

CODE ENDS
END  START


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM