本科实验报告实验名称:8255A可编程并行接口实验课程名称:计算机原理与应用实验实验时间:任课教师:实验地点:10号楼102实验教师:实验类型:□原理验证√综合设计□自主创新学生姓名:学号/班级:组号:学院:信息与电子学院同组搭档:专业:信息工程成绩:实验一8255A可编程并行接口实验1.实验目的1)掌握并行接口芯片8255A和微机接口的连接方法;2)掌握并行接口芯片8255A的工作方式及其编程方法;3)掌握小键盘的工作原理及接口技术;4)利用8255A并行接口芯片与小键盘的接口电路,实现并行接口实验。2.实验原理和内容1)8255A芯片原理8255A是可编程并行接口芯片,双列直插式封装,用+5V单电源供电,如图3-1是8255A的逻辑框图,内部有3个8位I/O端口:A口、B口、C口;也可以分为各有12位的两组:图3-18255A芯片管脚示意图A和B组,A组包含A口8位和C口的高四位,B组包含B口8位和C口的低4位。A组控制和B组控制用于实现方式选择操作;读写控制逻辑用于控制芯片内寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。由于8255A数据总线缓冲器是双向三态8位驱动器,因此可以直接和8088系统数据总线相连。2)8255A端口地址A1A0/RD/WR/CS操作类型操作方向001010000111000PA→数据总线PB→数据总线PC→数据总线输入(读)00110101111100000000数据总线→PA数据总线→PB数据总线→PC数据总线→控制字输出(写)×1××1××01×11100数据总线三态非法状态数据总线三态断开图3-28255A端口地址3)8255A工作方式8255A芯片有三种工作方式:方式0、方式1、方式2。它通过对控制寄存器写入不同的控制字来决定其三种不同的工作方式。方式0:基本输入/输出该方式下的A口8位和B口8位可以由输入的控制字决定为输入或输出,C口分成高4位(PC7~PC4)和低4位(PC3~PC0)两组,也有控制字决定其输入或输出。需注意的是:该方式下,只能将C口其中一组的四位全部置为输入或输出。方式1:选通输入/输出该方式又叫单向输入输出方式,它分为A、B两组,A组由数据口A和控制口C的高4位组成,B组由数据口B和控制口C的低4位组成。数据口的输入/输出都是锁存的,与方式0不同,由控制字来决定它作输入还是输出。C口的相应位用于寄存数据传送中所需的状态信号和控制信息。方式2:双向输入输出本方式只有A组可以使用,此时A口为输入输出双向口,C口中的5位(PC3~PC7)作为A口的控制位。4)8255A基本控制字5)端口C复位/复位控制字1=置位,0=复位选择000~111置位/复位标志:0=有效6)8255A与小键盘连接示意图键盘阵列由8255芯片控制,用行列连接方式到8255芯片A口,B口,同时连接8255芯片的片选到Y1/IO地址(288H~28FH),以使键盘阵列由8255芯片控制。如图3-3所示。76543210×××无关位76543210PC3~0:1=输入,0=输出PB口:1=输入,0=输出B组方式选择:0=方式0,1=方式1PC7~4:1=输入,0=输出PA口:1=输入,0=输出方式选择:00=方式0A组01=方式1方式标志:1=有效图3-38255A与小键盘连接示意图3.编程提示小键盘按键处理有:行扫描法和行反转法。1)行扫描法•首先判断小键盘是否有某键按下;•其次判断哪一个键被按下,并显示其结果。编程流程图如图3-4所示。2)行反转法•首先判断小键盘是否有某键按下;•其次行线输出,列线输入;•再次列线输出,行线输入;•最后判断哪一个键被按下,并显示其结果。编程流程图如图3-5所示。图3-4行扫描法编程流程图图3-5行反转法原理示意图3)实验硬件连接方法键盘矩阵由8255A芯片控制,并将PA0-PA3、PB0-PB3与键盘连接到8255A的A口和C口,同时片选地址288H-28FH,以便键盘矩阵由8255A控制。•8255A的PA0-PA3连接小键盘的行0-行3;•8255A的PB0-PB7连接小键盘的列0-行3;•8255A的CS连接实验箱Y1/IO地址。从288H-28FH选择。4)程序设计流程图编写程序,按下小键盘任意键后,要求在用2号调用在计算机屏幕显示结果。图3-6小键盘显示设计流程图4.实验结果1)实验程序datasegmenttab1DB'F','E','D','C'tab2DB'B','A','9','8'tab3DB'7','6','5','4'tab4DB'3','2','1','0'kbDB00eh,00dh,00bh,007hportequ288hdataendsstacksegmentstadb256dup(?)topequsizestastackendscodesegmentassumecs:code,ds:data,ss:stackmainprocfarmovax,datamovds,axmovax,stackmovss,axmovsp,top;初始化8255movdx,port+3moval,10000010boutdx,albegin:moval,0movdx,portoutdx,almovdx,port+1inal,dxandal,0fhcmpal,0fhjebegin;若有键按下,按列查找哪个键moval,00001110bmovdx,portoutdx,almovdx,port+1inal,dxleabx,tab1cmpal,0fhjnedisplaymoval,00001101bmovdx,portoutdx,almovdx,port+1inal,dxleabx,tab2cmpal,0fhjnedisplaymoval,00001011bmovdx,portoutdx,almovdx,port+1inal,dxleabx,tab3cmpal,0fhjnedisplaymoval,00000111bmovdx,portoutdx,almovdx,port+1inal,dxleabx,tab4cmpal,0fhjnedisplaynopjmpbegin;查找按下的键,并显示display:movdi,bxleasi,kb;存小键盘扫描码next:cmpal,[si];查键盘扫描码表jeshow;找到了,转去显示incsi;否则继续incdijmpnextshow:;显示键入字符movah,2movdl,[di]int21hcmpdl,'F';若是'F'则退出jeovercalldelayjmpbegin;重新开始查询over:movah,4chint21hmainendpdelayprocnear;延时循环100*65536次pushdipushcxmovcx,0fhmovdi,0again:nopdecdijnzagaindeccxjnzagainpopcxpopdiretdelayendpcodeendsendmain2)实验结果运行程序时,在小键盘上按键可显示相应的数字,可多次输入,并设置退出键退出程序。5.实验体会本课程实验须在虚拟机中运行,同时连接实验硬件,准备阶段就比较复杂,但是老师给了详细的安装及连接教程,我们很快就完成了准备工作。程序方面我们有上学期汇编的基础,老师也给我们作了详细的讲解,我们在第一节课打下了良好的基础。本次实验帮助我熟悉了8255A-5芯片的工作方式,了解了并行接口芯片8255A和微机接口的连接方法,熟悉了编程的过程,进一步加深了对本课程的理解。