微机接口8255并行接口实验_第1页
微机接口8255并行接口实验_第2页
微机接口8255并行接口实验_第3页
微机接口8255并行接口实验_第4页
微机接口8255并行接口实验_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、浙江工业大学计算机学院实 验 报 告实验名称 8255并行接口实验 姓 名 徐洁 学 号 201326810521 班 级 计科1301班 教 师 雷艳静 日 期 2015/12/31 18一、实验内容与要求1.1 实验内容8255方式0实验一:从8255端口C输入数据,再从端口A输出,即TPC-USB平台按逻辑电平开关K0K7通过编程使端口C接收,然后再通过端口A输出到LED显示电路L0L7,这样逻辑电平开关的值就可以通过8255芯片显示在LED显示电路上。 8255方式1输出实验:编程实现每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断,让CPU进行一次中断服务:依次输出

2、01H、02H、04H、08H、10H、20H、40H、80H使LED显示电路L0L7依次发光,中断8次结束。 8255方式1输入实验:编程实现每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务,读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。1.2 实验要求(1) 具有一定的汇编编程的基础,能编写一些基本语句来实现实验。实验前根据实验流程图,写出对应代码; (2) 要了解8255A并行接口芯片内部结构和外部引脚,理解8255芯片的工作方式和程序设计方法; (3) 熟悉实验

3、平台TPC-USB了解各个接口的名称与功能,进行实验时能快速并正确地连接好实验电路; (4) 8255方式0实验一:连接PC与TPC-USB平台,用微机实验软件运行程序,用TPC-USB平台上的逻辑电平开关与LED显示电路观察,LED显示的值与逻辑电平开关设的值对应; (5) 8255方式1输出实验:连接PC与TPC-USB平台,用微机实验软件运行程序,手按单脉冲按钮,观察LED显示电路能依次发光,按8次后,中断结束,程序结束; (6) 8255方式1输入实验:连接PC与TPC-USB平台,用微机实验软件运行程序,用TPC-USB平台

4、的逻辑电平开关设置一个ASCII码,按一次单脉冲,屏幕就能显示该ASCII码对应的字符,变更逻辑电平的开关,按一次单脉冲,屏幕就会显示变更的ASCII码对应的字符。这样操作N次之后,中断结束,程序结束。二、实验原理与硬件连线2.1 实验原理1、8255A的内部结构:图1 8255A内部结构图(1)数据端口:端口A:内含一个8位的输入、输出锁存器/缓冲器,用作输入或输出时,其数据均可得到锁存。端口B:内含一个8位的输出锁存器/缓冲器和一个8位的输入缓冲器(输入无锁存)。端口C:内含一个8位的输出锁存器/缓冲器和一个8位的输入缓冲器(输入无锁存)。l 可作为一个独立的8位端口,也可分成两个4位端口

5、。l 可用作数据输入/输出端口,也可作为控制/状态端口(联络信号),配合A、B端口一起工作。l 具有按位置位/复位功能。(2)端口的输入/输出及其工作方式:8255A可通过软件编程来分别设定每个端口的输入/输出及其工作方式。A口:有3种工作方式:方式0(基本输入/输出)、方式1(选通输入/输出)、方式2(双向输入/输出)。B口:有2种工作方式:方式0、方式1C口:可设置为并口或按位置位/复位工作方式。(3)A 组和B 组控制逻辑:A口和C口的高4位构成A组,由A组控制逻辑控制 。B口与C口的低4位构成B组,由B组控制逻辑控制。A、B两组控制电路内部均有控制寄存器,用来接收CPU发来的读/写控制

6、信号和控制字,并按控制字确定各端口的工作方式。(4)数据总线缓冲器:8位三态双向缓冲器,与系统数据总线相连,用于CPU与8255A之间传送数据、命令和状态信息。(5)读/写控制逻辑:接收CPU发来的地址信号和控制信号,转变为各种命令送到A、B组控制逻辑,对端口进行相应的操作。2、8255A的工作方式:(1)方式0基本输入/输出:A口、B口、C口的高4位和低4位均可独立地被设置为输入或输出。8255A与CPU之间没有固定的应答联络信号,可用于无条件传送或查询方式传送。单向I/O:一次初始化只能指定端口作为输入或作为输出,不能指定其同时既作为输入又作为输出。 采用查询方式传送时,可以将端口A、端口

7、B作为数据端口,用端口C存放外部设备状态信息,用于CPU查询。(2)方式1输入:当端口A作为方式1输入时,端口C的PC3、PC4、PC5作为端口A的联络控制信号。当端口B作为方式1输入时,端口C的PC0、PC1、PC2作为端口B的联络控制信号。PC6、PC7则可作为输入/输出数据口使用,如图2所示。各控制信号的定义如下。注意:方式1下C口复位/置位功能与PC口引脚的功能无任何关系。图2 方式1输入时,端口对应的控制信号STB:输入选通信号。有效时,可将数据从外设输入到A口或B口的锁存器中。IBF:输入缓冲器满信号,是对STB的响应。有效时,对CPU:表示8255端口有数据,通知CPU进行读取。

8、对外设:表示CPU还未取走数据,阻止外设发新数据。INTE:中断允许信号。INTE=1时允许8255向CPU发中断请求。PC4 =1允许A口中断;PC2 =1允许B口中断。该信号通过C口置位/复位来实现。INTR:中断请求信号。INTR=1时,CPU可从端口读取数据。读取后INTR自动清除。(3)方式1输出:当端口A作为方式1输出时,端口C的PC3、PC7、PC6作为端口A的联络控制信号。当端口B作为方式1输出时,端口C的PC0、PC1、PC2作为端口B的联络控制信号。PC4、PC5则可作为输入/输出数据口使用,如图3所示。各控制信号的定义如下。图3 方式1输出时,端口对应的控制信号OBF:输

9、出缓冲器满。有效时,表CPU已把数据输出到8255。对外设:通知外设取走数据。对CPU:阻止CPU发新数据。ACK:外设的应答信号。外设取走数据后,向8255发应答信号,并使OBF无效,此时CPU可发新数据。INTE:中断允许信号。为1时允许8255向CPU发中断请求。PC6 =1允许A口中断;PC2 =1允许B口中断。该信号通过C口置位/复位来实现。INTR:中断请求信号。为1时请求CPU向8255发数据。3、8255A的编程:(1)方式选择控制字:实验时:方式0:端口C输入,端口A输出 对应的控制字为:10001011B=8bH;方式1输出:端口A方式1输出 对应的控制字为:1010000

10、0B=0a0H;方式1输入:端口A方式1输入 对应的控制字为:10111000B=0b8H;(2)端口C置位/复位控制字:注意:尽管该控制字针对C口进行操作,但必须写入控制端口,而不是写入C口对应的地址。实验时:PC6置位:对应的控制字:00001101B=0dH;PC4置位:对应的控制字:00001001B=09H;(3)8255A初始化编程:向8255A的控制端口写入方式选择控制字后即可完成初始化,然后CPU就可以访问A、B、C数据端口,进行数据输入/输出。2.2 硬件连线(1)8255方式0实验一: 8255端口C接逻辑电平开关K0K7,端口A连接LED显示电路L0L7。连接实验电路如图

11、4所示。图4 TPC-USB平台8255方式0实验一连接图(2)8255方式1输出实验:端口A连接LED显示电路L0L7,连接实验电路如图5所示。图5 TPC-USB平台8255方式1输出实验电路连接图(3)8255方式1输入实验:端口A接逻辑电平开关K0K7。连接实验电路如图6所示。图6 TPC-USB平台8255方式1输入实验电路连接图三、设计思路、步骤和程序流程图3.1 设计思路本次实验做的是丙型接口实验,需要用到8255并行接口芯片,了解芯片的内部结构后,理解芯片的工作原理,8255芯片的工作方式有多种,所做的实验是方式0和方式1,理解了工作方式后,便可根据8255芯片的初始化编程步骤

12、画出程序流程图,再根据流程图,写出实验程序。根据实验连接图连接好电路,运行程序,便可达到并行传送的目的。实验一:通过mov dx,28ah  in  al,dx读入C端口的字,即读入C端口的开关预置的值,又通过mov dx,288H    out dx,al 把从C端口读入的字送到A端口,所以A端口相应的灯会亮。实验二:每按一次单脉冲按钮,产生一次中断请求,通过mov al,bl   mov dx,288h 

13、0; out dx,al将bl的值从8255的A口输出,由于bl初始化为01H,每一次中断以后执行shl bl,1  将bl左移一位,即01H变成02H,依次变成04H、08H、10H.所以L0L7会依次发光。实验三:每按一次单脉冲按钮,产生一次中断请求,通过mov dx,288h  in al,dx自8255端口A读入实验平台逻辑电平处的数据,又通过mov dl,al   mov ah,02h   int 21h&

14、#160;将数据在屏幕上输出。bl初始化为8,每执行一次中断bl减1,所以N次以后退出。3.2 实验步骤(1) 连接实验电路如图4所示,8255端口C接逻辑电平开关K0K7,端口A连接LED显示电路L0L7; (2) 根据图7所示的流程图,编程,运行,观察开关的值与LED的值是否对应; (3) 连接实验电路如图5所示; (4) 根据图8所示的流程图,编程,运行,观察LED的亮灭情况; (5) 连接实验电路如图6所示; (6) 根据图9所示的流程图,编程,运行,观察逻辑开关的值和屏幕上显

15、示的字符。3.3 程序流程图图7 TPC-USB平台8255方式0实验一的程序流程图 (a)输出主程序 (b)输出中断服务程序图8 TPC-USB平台8255方式1输出实验的程序流程图(a)主程序 (b)输入中断服务程序图9 TPC-USB平台8255方式1输入实验的程序流程图四、程序清单与执行结果4.1 程序清单(1)8255方式0实验一代码:CODE SEGMENT ASSUME CS:CODESTART: MOV DX,28BH ;设8255为C口输入,A口输出 MOV AL,8BH OUT DX,ALIN_OUT: MOV DX,28AH ;从C口输入一数据 IN AL,DX MOV

16、DX,288H ;从A口输出刚才自C口所输入的数据 OUT DX,AL MOV DL,0FFH ;判断是否有按键 MOV AH,06H INT 21H JZ IN_OUT ;若无,则继续自C口输入,A口输出 MOV AH,4CH ;否则返回DOS INT 21HCODE ENDSEND START(2)8255方式1输出实验代码:CODE SEGMENT ASSUME CS:CODESTART: MOV AX,SEG IRQ3_INT ;中断程序入口地址送中断向量表 MOV DS,AX MOV DX,OFFSET IRQ3_INT MOV AX,250BH ;设置中断向量程序 INT 21H

17、IN AL,21H ;读取中断屏蔽字 AND AL,0F7H ;开放IRQ3中断 OUT 21H,AL MOV DX,28BH ;设置8255端口A方式1输出 MOV AL,0A0H OUT DX,AL MOV AL,0DH ;将8255的PC6置位 OUT DX,AL MOV BL,01H ;BL赋初值1 WIN:JMP WIN ;循环等待IRQ3_INT: ;中断服务程序 MOV AL,BL ;将BL中的数从端口A输出 MOV DX,288H OUT DX,AL MOV AL,20H ;发中断结束命令 OUT 20H,AL SHL BL,1 ;BL左移一位 JNC NEXT ;JNC对进位

18、位进行判断,若CF!=1,跳转 IN AL,21H ;恢复屏蔽字 OR AL,08H ;禁止IRQ3中断 OUT 21H,AL STI ;STI 允许中断发生 CLI 禁止中断发生 MOV AH,4CH ;返回DOS INT 21H NEXT:IRET ;中断返回 CODE ENDS END START(3)8255方式1输入实验代码:CODE SEGMENT ASSUME CS:CODESTART: MOV AX,SEG IRQ3_INT ;中断程序入口地址送中断向量表 MOV DS,AX MOV DX,OFFSET IRQ3_INT MOV AX,250BH ;设置中断向量程序 INT 2

19、1H IN AL,21H ;读取中断屏蔽字 AND AL,0F7H ;开放IRQ3中断 OUT 21H,AL MOV DX,28BH ;设置8255端口A方式1输入 MOV AL,0B8H OUT DX,AL MOV AL,09H ;将8255的PC4置位 OUT DX,AL MOV BL,20 ;设置中断次数 WIN:JMP WIN ;循环等待IRQ3_INT: ;中断服务程序 MOV DX,288H ;从A端口输入数据 IN AL,DX MOV DL,AL MOV AH,02H ;输出DL中的字符到屏幕 INT 21H MOV DL,0DH ;回车 INT 21H MOV DL,0AH ;

20、换行 INT 21H MOV AL,20H ;中断结束命令 OUT 20H,AL DEC BL JNZ NEXT IN AL,21H ; N次中断已到,恢复屏蔽字 OR AL,08H ;禁止IRQ3中断 OUT 21H,AL STI ;开中断 MOV AH,4CH ;返回dos系统 INT 21H NEXT:IRET ;中断返回 CODE ENDS END START4.2 执行结果(1)8255方式0实验一:注:LED灯的亮灭取决于逻辑电平开关,当开关置1时,灯亮;当开关置0时,灯灭(2)8255方式1输出实验:注:当程序刚运行时,只有最右边的灯L0亮,之后按一次单脉冲按钮,L1亮,接着L2

21、亮,这样往左移动,直到L7亮,程序结束。(3)8255方式1输入实验:注:逻辑电平开关设置一个值,屏幕上显示该值对应的ASCII码,比如现在设置的是31H,则屏幕上显示1。之后每按一次单脉冲按钮,屏幕上显示一次逻辑电平设置的值对应的ASCII码,直到中断次数结束。五、程序调试说明和实验感想5.1 调试说明(1)在做8255方式1输出实验时,在代码完成编译之后,每次一运行程序,都未能像原定的那样只有L0亮,而是无规则的亮,我刚开始以为是我代码在运行过程中有对BL进行重新赋值之类的操作,导致数据出错,但在我将程序重新从头到尾看了一遍之后,我发现问题应该不是出现在代码上,但实验设备在进行8255方式0实验一的实验时,又是可以正常工作的,说明实验设备也没问题。两边都没问题,我实在想不出哪里还有可能出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论