基于Proteus8.9的8086+8255A

利用一片 8255A控制4个数码管。因为段码只有8位,所以可用 8255A 的一个端口作为段控制端口。8255A 的另外两个端口共16 位,可以作为位控制端口。所以,采用动态显示术时,一片 8255A 最多可以控制 16 个数码管。

A_PORT EQU 200H
B_PORT EQU 202H
C_PoRt EQU 204H 
CRTL_PORT EQU 206H 
DATA SEGMENT 

   OUTBUFF DB 2,0,1,5    ;显示值

 LEDTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH         ;段码表
 DATA  ENDS 
 CODE SEGMENT 

ASSUME CS:CODE,DS:DATA 
START: MOV AX,DATA
     MOV DS,AX
     MOV AL,80H          ;8255A初始化 
     MOV DX,CRTL_PORT
     OUT DX,AL
LOP1: CALL DISP
      JMP LOP1
      DISP PROC NEAR ;数码管动态显示子程序 

AGAIN: MOV CL,0F7H 
       LEA SI,OUTBUFF 
LEDDISP:MOV AL,CL ;输出位码 
        MOV DX,C_PORT 
        OUT DX,AL 
        LEA BX,LEDTAB 
        MOV AL,[SI] 
        XLAT
        MOV DX,A_PORT ;输出段码 
        OUT DX,AL
        CALL DELAY_1S 
        MOV AL,0H
        MOV DX,A_PORT ;清屏 
        OUT DX,AL 
        CMP CL,0FEH 
        JZ NEXT 
        INC SI 
        ROR CL,1
        JMP LEDDISP
NEXT: RET 
DISP ENDP
DELAY_1S PROC           ;延时子程序 
        PUSH CX
        PUSH BX
        MOV BX,01H
D1:     MOV CX,0FH 
D2:     LOOP D2 
        DEC BX 
        JNZ D1 
        POP BX 
        POP CX
	RET
DELAY_1S ENDP
CODE ENDS 
        END START

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值