8255并口实验详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

xxxx大学计算机学院实验报告
一、实验内容与要求
1.1 实验内容
(1)8255方式0实验
从8255端口C输入数据,再从端口A输出
(2)8255方式1输出实验
编程实现每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断服务:依次输出01H,02H,04H,08H,10H,20H,40H,80H使L0~L7依次发光,中断8次结束。

(3)8255方式1输入实验
编程实现:每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。

1.2 实验要求
(1)8255方式0实验
实验预期效果:拨动逻辑开关,启动程序,开关打开的对应灯可以亮起。

改变开关的状态,灯的亮暗也随之改变。

(2)8255方式1输出实验
实验预期效果:按一次单脉冲按钮,L0亮起;以后每按一次,后面的灯依次会亮起。

中断8次结束。

(3)8255方式1输入实验
实验预期效果:每按一次单脉冲按钮读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。

二、实验原理与硬件连线
2.1 实验原理
CPU通过指令将控制字写入8255A的控制端口设置它的工作方式。

8255A有两个控制字:方式选择控制字和端口C置位/复位控制字,这两个控制字均写入同一个控制端口地址(端口选择
先A1A0=11)
8255A有3种工作方式:方式0——基本输入/输出方式;方式1——选通输入/输出方式;方式2——双向传输方式。

方向选择控制字用于设置各端口的工作方式。

方式0称为基本输入/输出方式。

该方式下,端口A、端口B、端口C的高4位和端口C的低4位均可独立地设为输入或输出数据端口。

在方式0时,8255A与CPU时间没有应答联络信号,可用于无条件传送或查询方式数据传送场合。

采用查询方式传送时,可以将端口A、端口B 作为数据端口,用端口C存放外部设备状态信息,用于CPU查询。

方式1称为选通输入/输出方式。

该方式下,端口A、端口B可作为数据传输口,而端口C 的一些引脚规定作为端口A、端口B的联络控制信号,有固定的搭配规定。

在方式1时,CPU和8255A之间有应答联络信号,所以采用中断方式或程序查询方式传送数据。

当端口A作为方式1输入时,端口C的PC3、PC4、PC5作为端口A的联络控制信号。

当端口A作为方式1输出时,端口C的PC7、PC6、PC3作为端口A的联络控制信号。

状态字通过读端口C获得。

需要强调,从端口C读出的状态字与端口C的外部引脚的状态无关。

2.2 硬件连线
(1)8255方式0实验1
连接实验电路,8255端口C接逻辑电平开关K0~K7,端口A接LED显示电路
L0~L7
U18 8255
K0 K1
K5
L0
L1
L2
L3
L4
L5
L6
L7图2-2-1 实验一接线
(2)8255方式1输出实验
变成实现每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断请求,让CPU进行一次中断服务:一次输出01H、02H、04H、08H、10H、20H、40H、80H使L0~L7依次发光,中断8次结束。

图2-2-2 8255方式1输出实验电路连接图
(3)8255方式1输入实验
每按一次按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,执行中断8次结束程序。

图2-2-3 8255方式1输入实验
三、设计思路、步骤和程序流程图
3.1 设计思路
芯片:8253A
(1)8255方式0实验
为了传递外部信息,可以把C口作为输入端,接逻辑电平开关,用控制逻辑电平开关的方法来改变输入的数据。

端口A作为数据的输出端,控制LED灯的亮暗。

高电平输出时,LED灯亮起;输出低电平时,LED灯暗灭。

每次循环判断键盘有无键按下,若有,结束程序;若没有,继续输入输出数据。

(2)8255方式1输出实验
用PC3、PC6作为端口A的联络信号,INTE的设置是通过端口C的置位/复位命令字来实现的。

将PC6置1,则INTEA置1,端口A允许发出中断请求信号。

PC3,PC6清0,则禁止中断。

为了实现LED灯依次发光的特效,可以这样控制数据端:对控制值每一次循环逻辑左移一位,表示该位置高电平,其余位置零。

送至相应端口,即可实现依次亮起LED灯的效果。

(3)8255方式1输入实验
INTE的设置是通过端口C的置位/复位命令字来实现的。

将PC4置1,则INTEA置1,端口
A允许发出中断请求信号。

PC4,PC2清0,则禁止中断。

中断服务程序:通过A口读取逻辑电平预置的二进制码,进行输出处理。

若该数大于9,则需除以10,输出高位后再输出低位。

若该数小于10,则可以直接输出(加30H)显示。

判断计数器的值,若为0,结束该程序。

若不是,中断返回。

3.2 实验步骤
(1)8255方式0实验
1.连接实验电路图。

8255端口C接逻辑电平开关K0~K7,端口A接LED显示电路L0~L7。

2.写方式控制字10001001B:A口方式0输出,C口输入
3.读取C口预置的数据,送A口输出
4.判断是否有键按下,若有,终止程序。

若无,继续。

(2)8255方式1输出实验
1.按照电路图连线。

2.设置中断向量,写中断屏蔽字,PC6置1,开中断。

3.设置方式控制字10100000B:设置A口方式1输出
4.等待硬中断。

A口中断输出,BL左移一位。

5.判断CF是否位1。

若是,关中断,结束程序。

若不是,中断返回。

(3)8255方式1输入实验
1.按照电路图连线。

2. 设置中断向量,写中断屏蔽字,PC4置1,开中断
3.设置方式控制字10110000B ;设置A口方式1输入
4.等待硬中断。

A口中断输入,送输出处理
5.判断。

若数据大于10,除以10后,输出高位再输出低位。

否则,直接输出。

6.判断。

计数器若大于0,中断返回。

否则,关中断,结束程序。

3.3 程序流程图
图3-3-1 8255方式0实验
图3-3-2 8255方式1输出实验(主程序)
图3-3-3 8255方式1输出实验(中断服务程序)
图3-3-4 8255方式1输入实验(主程序)
图3-3-5 8255方式1输入实验(中断服务程序)
四、程序清单与执行结果
4.1 程序清单
(1)8255方式0实验
DA TA SEGMENT
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV DX,28BH
MOV AL,10001001B ;A口方式0输出,C口输入OUT DX,AL ;方式字送控制端口LIGHT:
MOV AH,6
MOV DL,0FFH
INT 21H
MOV DX,28AH
IN AL,DX ;读取C口数据
MOV DX,288H
OUT DX,AL ;输出数据至A口
JMP LIGHT
CODE ENDS
END START
(2)8255方式1输出实验
DA TAS SEGMENT
DA TAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DA TAS,SS:STACKS
START:
CLI
MOV AX,SEG LIGHT ;设置中断向量段地址
MOV DS,AX
MOV DX,OFFSET LIGHT ;设置中断向量偏移地址
MOV AX,250BH ;中断入口地址送中断向量表INT 21H
IN AL,21H ;读中断屏蔽字
AND AL,0F7H ;开放8259A的IR3中断
OUT 21H,AL
MOV AL,10100000B ;设置A口方式1输出
MOV DX,28BH
OUT DX,AL
MOV AL,0DH ;置位使PC6=1
OUT DX,AL
MOV BL,1
STI ;开中断
WIN:
JMP WIN ;等待硬中断LIGHT:
MOV DX,288H
MOV AL,BL
OUT DX,AL ;将A口的数据输出MOV AL,20H ;关中断
OUT 20H,AL
SHL BL,1 ;计数器左移
JNC NEXT ;未进位就继续中断IN AL,21H ;关闭中断
OR AL,0F7H
OUT 21H,AL
MOV AH,4CH
INT 21
NEXT:
IRET
CODES ENDS
END START
(3)8255方式1输入实验
DA TAS SEGMENT
DA TAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DA TAS,SS:STACKS START:
CLI
MOV AX,SEG LIGHT ;设置中断向量段地址
MOV DS,AX
MOV DX,OFFSET LIGHT ;设置中断向量偏移地址
MOV AX,250BH ;中断入口地址送中断向量表INT 21H
IN AL,21H ;读中断屏蔽字
AND AL,0F7H ;开放8259A的IR3中断
OUT 21H,AL
MOV AL,10110000B ;设置A口方式1输入
MOV DX,28BH
OUT DX,AL
MOV AL,09 ;置位使PC4=1
OUT DX,AL
MOV CX,8
STI ;开中断
WIN:
JMP WIN ;等待硬中断
LIGHT:
MOV DX,288H
IN AL,DX ;将A口的数据输入
MOV DL,AL
MOV AH,2
INT 21H
MOV AH,2
MOV DL,0AH
INT 21H
MOV AH,2
MOV DL,0DH
INT 21H
MOV AL,20H ;关中断
OUT 20H,AL
DEC CX ;计数器减一
JNZ NEXT ;不为零就继续
IN AL,21H ;关闭中断
OR AL,8
OUT 21H,AL
MOV DX,28BH
OUT DX,AL
MOV AH,4CH
INT 21H
NEXT:
IRET
CODES ENDS
END START
4.2 执行结果
(1)8255方式0实验
拨动逻辑开关,启动程序,开关打开的对应灯可以亮起。

改变开关的状态,灯的亮暗也随之改变。

图4-1 8255方式0实验连线图
(2)8255方式1输出实验
按一次单脉冲按钮,L0亮起;以后每按一次,后面的灯依次会亮起。

中断8次结束。

图4-2-1 8255方式1输出实验连线图
(3)8255方式1输入实验
每按一次单脉冲按钮读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。

图4-3-1 8255方式1输入实验连线图
图4-3-2 屏幕输出结果
五、程序调试说明和实验感想
5.1 调试说明
5.2 实验感想与收获
5.3 实验特色
5.4 展望。

相关文档
最新文档