微机实验报告书
学 号: XXXXX 姓名: XXXXX 班 级: XXXXX 同组名单: XXXXXXXXX 实验日期: 2012.12.25
实验题目: 8255可编程并行接口
实验目标: 1、掌握8255方式0的工作原理及使用方法。
2、进一步掌握中断处理程序的编写。
3、掌握数码管显示数字的基本原理。
4、了解微机化竞赛抢答器的基本原理。
实验步骤:
实验一、 8255A的基本输入输出
图1. 8255A的基本输入输出接线图
实验步骤如下:
(1)实验电路如图1,8255A的C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
(2)编程从8255A的C口输入数据,再从A口输出。
实验二、七段数码管
图2. 七段数码管接线图
实验步骤如下:
(1)静态显示:按图2(a)连接好电路,将8255A的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dP接地(关闭)。编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
(2)动态显示:按图2(b)连接好电路,七段数码管段码连接不变,位码驱动输入端S1接+5V(选中),S0接8255A的C口的PC1。编程在两个数码管上显示“56”。
实验三、竞赛抢答器
图3. 竞赛抢答器电路图
实验步骤如下:
图3位竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当于某组抢答按钮按下。在七段数码管上将其组号(0~7)显示出来。
程序框图:
实验一:
实验二:
实验三:
程序清单:
;*************************;
;* 8255A的基本输入输出 *;
;*************************;
IOPORT EQU 0E400H-280H
IO8255A EQU IOPORT+288H
IO8255B EQU IOPORT+289H
IO8255C EQU IOPORT+28AH
IO8255K EQU IOPORT+28BH
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,IO8255K ;对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 0E400H-280H
IO8255A EQU IOPORT+288H
IO8255B EQU IOPORT+289H
IO8255C EQU IOPORT+28AH
IO8255K EQU IOPORT+28BH
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,IO8255K ;使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,'0' ;是否小于0
JL EXIT ;若是则退出
CMP AL,'9' ;是否大于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
;******************************;
;* LED数码管实验动态显示“56”*;
;******************************;
DATA SEGMENT
IOPORT EQU 0E400H-280H
IO8255A EQU IOPORT+288H
IO8255B EQU IOPORT+289H
IO8255C EQU IOPORT+28AH
IO8255K EQU IOPORT+28BH
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段码
BUFFER1 DB 6,5 ;存放要显示的个位和十位
BZ DW ? ;位码
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,IO8255K ;将8255设为A口输出
MOV AL,80H
OUT DX,AL
MOV DI,OFFSET BUFFER1 ;设di为显示缓冲区
LOOP2: MOV BH,02
LLL: MOV BYTE PTR BZ,BH
PUSH DI
DEC DI
ADD DI, BZ
MOV BL,[DI] ;bl为要显示的数
POP DI
MOV AL,0
MOV DX,IO8255C
OUT DX,AL
MOV BH,0
MOV SI,OFFSET LED ;置led数码表偏移地址为SI
ADD SI,BX ;求出对应的led数码
MOV AL,BYTE PTR [SI]
MOV DX,IO8255A ;自8255A的口输出
OUT DX,AL
MOV AL,BYTE PTR BZ ;使相应的数码管亮
MOV DX,IO8255C
OUT DX,AL
MOV CX,3000
DELAY: LOOP DELAY ;延时
MOV BH,BYTE PTR BZ
SHR BH,1
JNZ LLL
MOV DX,0FFH
MOV AH,06
INT 21H
JE LOOP2 ;有键按下则退出
MOV DX,IO8255C
MOV AL,0 ;关掉数码管显示
OUT DX,AL
MOV AH,4CH ;返回
INT 21H
CODE ENDS
END START
;***************;
;* 模拟抢答器 *;
;***************;
DATA SEGMENT
IOPORT EQU 0E400H-280H
IO8255A EQU IOPORT+288H
IO8255B EQU IOPORT+289H
IO8255C EQU IOPORT+28AH
IO8255K EQU IOPORT+28BH
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;数码表
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,IO8255K ;设8255为A口输出,C口输入
MOV AL,10001001B
OUT DX,AL
MOV BX,OFFSET LED ;使BX指向段码管首址
SSS: MOV DX,IO8255C
IN AL,DX ;从8255的C口输入数据
OR AL,AL ;比较是否为0
JE SSS ;若为0,则表明无键按下,转sss
MOV CL,0FFH ;cl作计数器,初值为-1
RR: SHR AL,1
INC CL
JNC RR
MOV AL,CL
XLAT
MOV DX,IO8255A
OUT DX,AL
MOV DL,7 ;响铃 ASCII码为07
MOV AH,2
INT 21H
WAI: MOV AH,1
INT 21H
CMP AL,20H ;是否为空格
JNE EEE ;不是,转eee
MOV AL,0 ;是,关灭灯
MOV DX,IO8255A
OUT DX,AL
JMP SSS
EEE: MOV AH,4CH ;返回
INT 21H
CODE ENDS
END START
运行结果:
实验一:当逻辑开关K0~K7中的一个或几个打开时,对应的LED灯就会亮起来,即利用8255A实现了基本的输入输出控制。
实验二:(1)静态显示:当从键盘输入0~9任一数字时,七段数码管上便会显示相应的数字,按下其他按键则退出程序。(2)动态显示:运行程序后,七段数码管上两个数码管显示“56”,有按键按下时,则退出程序。
实验三:逻辑开关K0~K7中某个置“1”时,则七段数码管上将其数字号显示出来,表示该组抢答成功。按下任意键则退出程序。
小结(体会和收获):
通过本次实验,我进一步掌握了8255A的原理以及其应用方法,学习了七段数码管显示数字的原理,以及竞赛抢答器的原理。
另外,通过本次实验我知道:做实验时讲究细心、耐心,遇到问题时不要慌张,在理解理论的基础上对故障进行分析并逐步解决,才能获得最后的实验成功。
第二篇:微机原理8255实验报告
微机原理与接口技术实验报告