8255并口控制器应用实验
一、实验目的
1. 掌握 8255 的工作方式及应用编程。
2. 掌握 8255 典型应用电路的接法。
二、实验内容
1. 基本输入输出实验。编写程序,使 8255 的 A 口为输出, B 口为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。
2.流水灯显示实验。编写程序,使 8255 的 A 口和 B 口均为输出,数据灯D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。
四、实验原理与步骤
实验步骤
(1)基本输入输出实验
实验说明:
本实验使 8255的端口A作为输出口工作在方式0,端口 B 作为输入口工作在方式0。用一组开关信号接入端口B,端口A 输出线接至一组数据灯上,然后通过对8255 芯片编程来实现输入输出功能。
图3-2 8255基本输入输出实验参考接线图
实验步骤如下:
①实验接线图如图3-2所示,按图连接实验线路图。
②运行Tdpit 集成操作软件,根据实验内容,调用程序代码(T8255-1.ASM),填写程序代码中的空缺处,编译、链接。
③运行程序,改变拨动开关,同时观察LED 显示,验证程序功能。
实验代码如下:
IOY0 EQU 9860H ;片选IOY0对应的端口始地址
MY8255_A EQU 9860H ;8255的A口地址
MY8255_B EQU 9861H ;8255的B口地址
MY8255_C EQU 9862H ;8255的C口地址
MY8255_MODE EQU 9863H ;8255的控制寄存器地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,MY8255_MODE ;初始化8255工作方式
MOV AL, 82H ;工作方式0,A口输出,B口输入
OUT DX,AL
LOOP1: MOV DX,MY8255_B ;读B口
IN AL,DX
MOV DX,MY8255_A ;写A口
OUT DX,AL
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ LOOP1 ;无按键则跳回继续循环,有则退出
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
CODE ENDS
END START
(代码结束)
(2)流水灯显示实验
实验说明:
使8255 的A 口和B 口均为输出,数据灯D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。参考实验程序流程如图3-3所示。
图3-3流水灯显示参考程序流程图
实验步骤如下:
①实验接线图如图3-4所示,按图连接实验线路图。
②运行Tdpit 集成操作软件,根据实验内容,调用程序代码(T8255-2.ASM),填写程序代码中的空缺处,编译、链接。
③运行程序,观察LED 灯的显示,验证程序功能。
④自己设计流水灯的流动模式,编写程序并实现。
图3-4 8255流水灯显示参考接线图
实验代码如下:
IOY0 EQU 9860H ;片选IOY0对应的端口始地址
MY8255_A EQU IOY0+00H ;8255的A口地址
MY8255_B EQU IOY0+01H ;8255的B口地址
MY8255_C EQU IOY0+02H ;8255的C口地址
MY8255_MODE EQU IOY0+03H ;8255的控制寄存器地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
DATA SEGMENT
LA DB ? ;定义数据变量
LB DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,MY8255_MODE ;定义8255工作方式
MOV AL, 80H ;工作方式0,A口和B口为输出
OUT DX,AL
MOV DX,MY8255_A ;写A口发出的起始数据
MOV AL, 80H
OUT DX,AL
MOV LA,AL
MOV DX,MY8255_B ;写B口发出的起始数据
MOV AL, 01H
OUT DX,AL
MOV LB,AL
LOOP1: CALL DALLY
MOV AL,LA ;将A口起始数据右移再写入A口
ROR AL,1
MOV LA,AL
MOV DX,MY8255_A
OUT DX,AL
MOV AL,LB ;将B口起始数据左移再写入B口
ROL AL,1
MOV LB,AL
MOV DX,MY8255_B
OUT DX,AL
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ LOOP1 ;无按键则跳回继续循环,有则退出
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
DALLY PROC NEAR ;软件延时子程序
PUSH CX
PUSH AX
MOV CX,0FFFH
D1: MOV AX,0FFFFH
D2: DEC AX
JNZ D2
LOOP D1
POP AX
POP CX
RET
DALLY ENDP
CODE ENDS
END START
(代码结束)
8254定时/计数器应用实验内容
计数应用实验。编写程序,应用8254的计数功能,用开关模拟计数,使每当按动KKI+五次后,产生一次计数中断,并在屏幕上显示一个字符‘5’。
实验步骤
计数应用实验
实验说明:
编写程序,将8254的计数器0设置为方式0,计数值为5,用微动开关KKl+作为CLK0时钟,OUT0连接INTR,每当KKl+按动5次后产生中断请求,在屏幕上显示字符“5”。
实验步骤如下:
①实验接线如图4-1所示,按图接线。
②运行Tdpit 集成操作软件,根据实验内容,调用程序代码(T8254-1.ASM),填写程序代码中的空缺处,编译、链接。
③运行程序,按动KK1+产生单次脉冲,观察实验现象。
④改变计数值,验证8254的计数功能。
实验代码如下:
INTR_IVADD EQU 01C8H ;INTR对应的中断矢量地址
INTR_OCW1 EQU 0A1H ;INTR对应PC机内部8259的OCW1地址
INTR_OCW2 EQU 0A0H ;INTR对应PC机内部8259的OCW2地址
INTR_IM EQU 0FBH ;INTR对应的中断屏蔽字
IOY0 EQU 3000H ;片选IOY0对应的端口始地址
MY8254_COUNT0 EQU IOY0+00H*4 ;8254计数器0端口地址
MY8254_COUNT1 EQU IOY0+01H*4 ;8254计数器1端口地址
MY8254_COUNT2 EQU IOY0+02H*4 ;8254计数器2端口地址
MY8254_MODE EQU IOY0+03H*4 ;8254控制寄存器端口地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
DATA SEGMENT
CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量
IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量
IM_BAK DB ? ;保存INTR原中断屏蔽字的变量
STR1 DB 'COUNT: $' ;显示的字符串
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
CLI
MOV AX,0000H ;替换INTR的中断矢量
MOV ES,AX
MOV DI,INTR_IVADD
MOV AX,ES:[DI]
MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址
MOV AX,OFFSET MYISR
MOV ES:[DI],AX ;设置当前中断处理程序入口偏移地址
ADD DI,2
MOV AX,ES:[DI]
MOV CS_BAK,AX ;保存INTR原中断处理程序入口段地址
MOV AX,SEG MYISR
MOV ES:[DI],AX ;设置当前中断处理程序入口段地址
MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR屏蔽位
IN AL,DX
MOV IM_BAK,AL ;保存INTR原中断屏蔽字
AND AL,INTR_IM
OUT DX,AL
STI
MOV DX,OFFSET STR1 ;显示字符串
MOV AH,9
INT 21H
MOV DX,MY8254_MODE ;初始化8254工作方式
MOV AL,10H ;计数器0,方式0
OUT DX,AL
MOV DX,MY8254_COUNT0 ;装入计数初值
MOV AL,4
OUT DX,AL
WAIT1: MOV AH,1 ;判断是否有按键按下
INT 16H
JZ WAIT1 ;无按键则跳回继续等待,有则退出
QUIT: CLI
MOV AX,0000H ;恢复INTR原中断矢量
MOV ES,AX
MOV DI,INTR_IVADD
MOV AX,IP_BAK ;恢复INTR原中断处理程序入口偏移地址
MOV ES:[DI],AX
ADD DI,2
MOV AX,CS_BAK ;恢复INTR原中断处理程序入口段地址
MOV ES:[DI],AX
MOV DX,INTR_OCW1 ;恢复INTR原中断屏蔽寄存器的屏蔽字
MOV AL,IM_BAK
OUT DX,AL
STI
MOV AX,4C00H ;返回到DOS
INT 21H
MYISR PROC NEAR ;中断处理程序MYISR
PUSH AX
MOV AL,35H
MOV AH,0EH
INT 10H
MOV AL,20H
INT 10H
MOV DX,MY8254_COUNT0 ;重装计数初值
MOV AL,4
OUT DX,AL
OVER: MOV DX,INTR_OCW2 ;向PC机内部8259发送中断结束命令
MOV AL,20H
OUT DX,AL
MOV AL,20H
OUT 20H,AL
POP AX
IRET
MYISR ENDP
CODE ENDS
END START
(代码结束)
第二篇:微机接口实验报告-8255并口控制器实验 (1)-基本输入输出实验
【实验目的】
掌握8255 的工作方式及应用编程。
掌握8255的典型应用电路接法。
【试验设备】
PC微机一台、TD-PIT+实验系统一套。
【实验内容】
基本输入输出实验。编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。
【实验原理】
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图8-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图8-2所示。
图8-1 8255的内部结构及引脚
【实验说明及步骤】
本实验使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。用一组开关信号接入端口B,端口A输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。参考程序流程如图8-3所示。
实验步骤如下。
1.确认从PC机引出的两根扁平电缆已经连接在实验平台上。
2.参考图8-4所示连接实验线路。
3.首先运行CHECK程序,查看I/O空间始地址。
4.利用查出的地址编写程序,然后编译链接。
5.运行程序,拨动开关,看数据灯显示是否正确。
(a)工作方式控制字 (b)C口按位置位/复位控制字
8-2 8255控制字格式
图8-3 8255并口应用实验(1)参考程序流程图
图8-4 8255并口应用实验(1)参考接线图
【汇编源程序】
CODE SEGMENT
ASSUEM CS:CODE
START:
MOV DX,0DC0CH
MOV AL,10000010B
OUT DX,AL
PP:
MOV DX,0DC04H
IN AL,DX
MOV DX,0DC00H
OUT DX,AL
MOV AH,1
INT 16H
JZ PP
QUIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
【实验结果】
在基本的输入输出实验中,A口的工作方式作为输入,接到开关上作为控制输入信号,而B口作为输出端连接到LED灯上可以通过灯的点亮和熄灭来判断输出信号。从实验中可以明显的看到,当key开关拨动后,经过8255处理后的输出信号端相对应的LED灯就会被点亮。具体图像如下(由于条件的限制,图像不是很清晰):
【实验总结】
可以通过对8255工作方式控制的设置,可以实现对对不同的端口设置其输入输出功能,从而实现输入与输出数据的处理功能。
【思考题】
任意设定一组开关状态(1或0):K7K6K5K4K3K2K1K0为 11010010 ,运行程序后,从B口读入到AL的值为 11010010 ,A口输出数据后,LED数据灯显示D7D6D5D4D3DD1D0 为 11010010(1表示灯亮,0表示灯不亮) 。
提示:可使DEBUG查看输入的数据:
E:\TANGDU \PIT-ASM>DEBUG 程序名.EXE(必须是EXE文件)
-U ;反汇编
-T ;用T命令单步运行,观察AL,特别是执行IN指令后AL的值。
例如,8255A初始化前AX=0000H;8255初始化后,AX=0082H(AL为控制字82H);执行IN指令后,AL的值即为从B口读入开关量。