连接电路图
1)实验电路如图,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2)编程从8255C口输入数据,再从A口输出。 实验三:
连接电路图
静态显示:按图连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),
S0、dp接地(关闭)。编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。 程序框图: 实验一:
实验二:
实验三:
程序清单: 实验一:
;******************* ;* 8253分频 * ;*******************
IOPORT EQU 0C800H-0280H IO8253A EQU IOPORT+283H IO8253B EQU IOPORT+280H IO8253C EQU IOPORT+281H CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,IO8253A ;向8253写控制字 MOV AL,36H ;工作方式 OUT DX,AL
MOV AX,1000 ;写入循环计数初值1000
MOV DX,IO8253B
OUT DX,AL ;先写入低字节 MOV AL,AH
OUT DX,AL ;后写入高字节 MOV DX,IO8253A
MOV AL,76H ;设工作方式 OUT DX,AL
MOV AX,1000 ;写入循环计数初值1000 MOV DX,IO8253C
OUT DX,AL ;先写低字节 MOV AL,AH
OUT DX,AL ;后写高字节 MOV AH,4CH ;程序退出 INT 21H CODE ENDS
END START
实验二:
;*************************; ;* 8255A的基本输入输出 *; ;*************************;
IOPORT EQU 0C800H‐280H IO8255A EQU IOPORT+288H IO8255B EQU IOPORT+ 28BH IO8255C EQU IOPORT+28AH CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,IO8255B ;对 8255 进行设定,A 输出,C 输入 MOV AL,10001001B OUT DX,AL
INPUT: MOV DX,IO8255C ;从 C 输入 IN AL,DX
MOV DX,IO8255A ;从 A 输出 OUT DX,AL
MOV DL,0FFH ;判断是否有按键 MOV AH,06H INT 21H
JZ INPUT ;若无,则继续 C 输入,A 输出
MOV AH,4CH ;否则,返回 DOS INT 21H CODE ENDS
END START
实验三:
;************************************; ;*键盘输入数据(0-9)控制LED数码管显示*; ;************************************;
DATA SEGMENT
IOPORT EQU 0C800H-280H IO8255A EQU IOPORT+288H IO8255B EQU IOPORT+28BH IO8255C EQU IOPORT+28AH
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
MESG1 DB 0DH,0AH,'Input a num (0--9),other key is exit:',0DH,0AH,'$' DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
MOV DX,IO8255B ;使 8255 的A口为输出方式 MOV AX,10000000B OUT DX,AL
SSS: MOV DX,OFFSET MESG1 ;显示提示信息 MOV AH,09H INT 21H
MOV AH,01 ;从键盘接收字符 INT 21H
CMP AL,30H ;是否小于 0 JL EXIT ;若是则退出 CMP AL,39H ;是否大于9 JG EXIT ;若是则退出
SUB AL,30H ;将所得字符的 ASCII 码减 30H MOV BX,OFFSET LED ;BX为数码表的起始地址 XLAT ;求出相应的段码
MOV DX,IO8255A ;从 8255 的A口输出 OUT DX,AL
JMP SSS ;转 SSS EXIT: MOV AH,4CH ;返回 INT 21H CODE ENDS
END START ;
运行结果: