8255并行输入/输出接口芯片拓展应用实验

题目:初始时请将开关全拨向后(为“0”),此时实验箱扩展板上8位8段LED显示器全显示“H”。当开关K8~K1状态为“00010000”时,最左边两位LED显示器上同时从a段到dp段轮流点亮,并重复;当开关K8~K1状态为“10010000”时,8位8段LED显示器从左到右显示“56565656”。当只有开关K2拨向前时,8位8段LED显示器的右边4位同时显示“L”(左边四位不显示),程序结束。
硬件连线:扩展实验板上8255的片选信号接CS2,B口接开关,C口接扩展实验板上八段LED的段选,A口接扩展实验板上八段LED的位选。
 

实验器材:

1.PD-32实验箱

2.DeChangTS调试环境

代码实现:

.486
;定义端口地址
PORTA	EQU	320H
PORTB	EQU	324H
PORTC	EQU 328H
CTRL	EQU 32CH

CODE	SEGMENT	USE16
	ASSUME	CS:CODE
	ORG	1000H
	JMP	START
DISMEM	DB	0,1,2,3,4,5,6,7,8,9 
		DB	10,11,12,13,14,15,16,17,18
SEGPT	DB	3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH  
		DB	6DH,7DH,6DH,7DH,6DH,7DH,6DH,7DH		;SI+9
START:
 	MOV	DX,CTRL			;写入控制字
	MOV	AL,10000010B	;B口开关输入,A口输出位选,C口输出段选
	OUT	DX,AL			;初始化程序

DEFAULT:				;设置数码管默认显示数值 H 
	MOV DX,PORTC		
    MOV AL,76H			;0111 0110B 显示H
    OUT DX,AL
    MOV DX,PORTA
    MOV AL,0FFH			;1111 11111B
    OUT DX,AL
	
RD:	MOV	DX,PORTB
	IN	AL,DX			;读取开关状态
	
	CMP	AL,00010000B	;开关K4打开则跳转
	JZ	STATE1
	CMP	AL,10010000B	;开关K4和K7打开则跳转
	JZ	STATE2
	CMP	AL,00000010B	;开关K1打开则跳转
	JZ	STATE3
	JMP	DEFAULT	

STATE1:				;8位数码管高二位同时由段a~dp循环显示
    MOV DX,PORTC
    MOV AL,01H
    OUT DX,AL
    MOV BL,AL
    MOV DX,PORTA
    MOV AL,0C0H		;1100 0000 数码管位选同时打开高2位
    OUT DX,AL   
    T1:				;类似流水灯循环
    CALL DELAY
    MOV DX,PORTB
    IN  AL,DX
    CMP AL,10H		;判断开关是否还位于当前状态
    JNZ RD
    MOV DX,PORTC
    ROL BL,1
    MOV AL,BL
    OUT DX,AL
    MOV DX,PORTA
    MOV AL,0C0H
    OUT DX,AL
    JMP T1
    
STATE2:				;8位数码管从左到右显示56565656
	L1:		
	MOV	AH,80H	;1000 0000 = ds1
	LEA	SI,DISMEM
	LEA	BX,SEGPT
	L2:	
	MOV	AL,[SI+9]
	XLAT   
	MOV	DX,PORTC	;seg
	OUT	DX,AL
	MOV	DX,PORTA	;ds
	MOV	AL,AH
	OUT	DX,AL
	MOV	CX,400	;delay
	LP:	
	LOOP	LP
	MOV DX,PORTB
	IN AL,DX
	CMP AL,10010000B	;判断开关是否还位于当前状态
	JNZ RD
	INC	SI		;SI+1
	SHR	AH,1	;ds+1
	JNZ	L2
	JMP	L1

STATE3:			;低4位数码管显示L,程序停止
	MOV DX,PORTC
	MOV AL,38H;00111000
	OUT DX,AL
 	MOV DX,PORTA
	MOV AL,0FH;00001111
	OUT DX,AL
	JMP WT
	
WT:	JMP	WT

DELAY	PROC
	PUSH	ECX
	MOV	ECX,2FFFFH
DELAY_A:NOP
	LOOPD	DELAY_A
	POP	ECX
	RET
DELAY	ENDP
CODE	ENDS
	END START

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值