上海大学微机实践报告实验一开关状态显示【实验目的】熟悉实验箱和软件开发平台的使用。了解基本I/O端口的操作方法和技巧,掌握编程和调试基本技能。【实验内容】利用74LS244作为输入口,读取开关状态,根据给定表格中开关状态对应的输出关系,通过74LS273驱动发光二极管显示出来。【实验区域电路连接图】参考上图连线:Y0~Y1接K1~K2(对应J1、J2);Q0~Q7接L1~L8(对应J3至J10);CS1接8000H孔(对应J12);CS2接9000H孔(对应J11);IOWR→IOWR;IORD→IORD;然后用数据排线连接JX7→JX17(BUS2)。【程序框图】【编程】CODESEGMENTASSUMECS:CODEORG1200HSTART:MOVDX,8000HINAL,DXTESTAL,01HJNZY1/测试AL是否等于01H,若不等于,则跳入循环Y1/TESTAL,02HJNZY2/测试AL是否等于02H,若不等于,则跳入循环Y2/MOVDX,9000HMOVAL,0FFH/点亮所有的灯/OUTDX,ALJMPSTARTY1:TESTAL,02HJNZY3/测试AL是否等于02H,若不等于,则跳入循环Y3/MOVDX,9000HMOVAL,0AAH/点亮奇数号灯/OUTDX,ALJMPSTARTY2:MOVDX,9000HMOVAL,55H/点亮偶数号灯/OUTDX,ALJMPSTARTY3:MOVDX,9000HMOVAL,00H/所有灯全灭/OUTDX,ALJMPSTARTCODEENDSENDSTART【问答题】1、I/O端口的寻址方式有哪2种?在x86系统中,采用哪一种?解:I/O端口的寻址方式有:一种是I/O地址与存储器地址统一编址,一种是I/O地址与存储器地址分别独立编址。在x86系统中,采用I/O地址与存储器地址分别独立编址。2、在输入/输出电路中,为什么常常要使用锁存器和缓冲器?解:输入/输出按方式分为程序控制和DMA两类,程序控制方式又分为同步方式、异步方式和中断方式。在程序控制方式中,同步方式的软件编程和硬件实现都十分简单,当需要时,就可以直接在需要输入/输出的地方写输入/输出指令。异步方式由于需要根据状态信息进行输入/输出操作,就需要增加必要的“握手”信号电路,程序设计也要包括对状态信息的判断,根据状态信息再决定是继续等待还是将信息读入或输出。中断方式在程序控制输入/输出方式中比较复杂,需要有中断控制器等硬件电路和接口芯片,程序也包括了中断处理程序来完成计算机输入、输出。DMA是另一类输入/输出方式,在进行输入/输出时,不需要CPU直接参加操作,而仅是将总线空出给DMA控制器使用。当然,DMA方式要求的硬件电路更加复杂。其优点是响应速度快,缺点是需要增加硬件电路。【心得体会】通过本次试验的操作,我熟悉了试验箱和软件开发平台的使用,也了解到了智能芯片接口8255的端口配置方法,掌握了编程和调试基本技能,加深了对课堂上理论知识的学习,将理论与实践动手相结合,更好的掌握了知识的全面性。实验二模拟交通灯实验【实验目的】1.学习在PC机系统中扩展简单I/O接口的方法。2.进一步学习编制数据输出程序的设计方法。3.学习模拟交通灯控制的方法。【实验内容】用8255做输出口,控制十二个发光管(4组红绿黄灯)的亮灭,模拟十字路口交通灯管理。【实验区域电路连接图】PC0→L3;PC1→L7;PC2→L11;PC3→L15;红灯PC4→L2;PC5→L6;PC6→L10;PC7→L14;绿灯PB4→L1;PB5→L5;PB6→L9;PB7→L13。黄灯8255数据、控制线内部已线连好。【程序框图】【编程】CODESEGMENTASSUMECS:CODEORG1200HPORTAEQU0FF28HPORTBEQU0FF29HPORTCEQU0FF2AHPORTCNEQU0FF2BHSTART:MOVDX,PORTCNMOVAL,80HOUTDX,ALMOVDX,PORTBMOVAL,0F0HOUTDX,AL/黄灯熄灭/MOVDX,PORTCMOVAL,0F0HOUTDX,AL/绿灯熄灭,红灯点亮/CALLDELAY1/延时1/MOVDX,PORTCMOVAL,0A5HOUTDX,AL/1、3路口绿灯亮,2、4路口红灯亮/CALLDELAY3/延时3/MOVDX,PORTCMOVAL,0F5HOUTDX,AL/1、3绿灯熄灭(2、4红灯亮)/MOVCX,8LOOP1:MOVDX,PORTBMOVAL,0A0HOUTDX,AL/1、3黄灯亮/MOVDX,PORTCMOVAL,0F5HOUTDX,AL/绿灯全灭,2、4红灯亮/CALLDELAY2/延时2/MOVDX,PORTBMOVAL,0FFHOUTDX,AL/黄灯全部灭/CALLDELAY2DECCXJNZLOOP1MOVDX,PORTBMOVAL,0F0HOUTDX,AL/黄灯全灭/MOVDX,PORTCMOVAL,0F0HOUTDX,AL/绿灯熄灭,红灯点亮/CALLDELAY1/延时1/MOVDX,PORTCMOVAL,5AHOUTDX,AL/1、3红灯亮,2、4绿灯亮/MOVDX,PORTBMOVAL,0F0HOUTDX,AL/黄灯全灭/CALLDELAY3/延时3/MOVDX,PORTCMOVAL,0FAHOUTDX,AL/2、4绿灯灭(1、3红灯亮)/MOVCX,8LOOP2:MOVDX,PORTBMOVAL,50HOUTDX,AL/2、4黄灯亮/MOVDX,PORTCMOVAL,0FAHOUTDX,AL/1、3红灯亮,绿灯全灭/CALLDELAY2/延时2/MOVDX,PORTBMOVAL,0FFHOUTDX,AL/黄灯全灭/CALLDELAY2DECCXJNZLOOP2JMPSTARTDELAY1:MOVAX,5HMOVBX,0HX:DECBXJNZXDECAXJNZXRETDELAY2:MOVAX,1HMOVBX,0HY:DECBXJNZYDECAXJNZYRETDELAY3:MOVAX,20HMOVBX,0HZ:DECBXJNZZDECAXJNZZRETCODEENDSENDSTART【问答题】1、8255A的哪个端口能实现位操作控制(按位置位/复位)?执行控制字写入操作的端口是哪个?解:8255A的C端口能实现位操作控制(按位置位/复位),执行控制字写入操作的端口是命令字端口。2、写出下图中Intel8255A占用的4个端口地址。解:FFF0H、FFF2H、FFF4H、FFF6H。【心得体会】本实验是模拟交通灯工作的实验,通过8255A控制发光二极管,PB4-PB7对应黄灯,PC0-PC3对应红灯,PC4-PC7对应绿灯,以模拟交通路灯的管理。在实验中不但要满足题目所提出的要求,更要结合实际,考虑到现实问题,比如说绿灯时间要比红灯时间长。通过本次实验,不仅再次熟悉了8255A,更是对自己编程技术一个很好的锻炼。