您好,欢迎访问三七文档
实验一I/O地址译码与交通灯控制实验一、实验目的1、掌握并行接口8253的基本原理2、掌握8253的编程方法二、实验内容如图所示,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通变化规律燃灭。三、编程分析1、8255地址分析:控制寄存器地址:0C40BHA口地址:04C408HC口地址:04C40AH2、十字路口交通灯的变化规律要求(1)南北路口的绿灯、东西路口的红灯同时亮三秒;(2)南北路口的黄灯闪烁三次,同时东西路口的红灯继续亮;(3)南北路口的红灯、东西路口的绿灯同时亮三秒;(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁三次;(5)转(1)重复。3、C口置数分析由于发光二极管是共阴极相连,所以若要其发亮应给高电平;黄灯闪烁是让其不断交替亮灭来实现;同时分析可知只要有绿灯亮,灯就会持续亮三秒,黄灯亮就会闪微机原理与接口技术实验报告2开始返回DOS设置8255C口输出南北路口的绿灯、东西路口的红灯亮长延时南北路口的黄灯闪烁,东西路口红灯亮南北路口的红灯、东西路口的绿灯亮长延时南北路口红灯亮、东西路口黄灯亮闪烁有键按下吗?YN烁三次。4、程序设计流程图四、汇编语言程序STACK1SEGMENTSTACKDB100DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,SS:STACK1DYPROCNEAR微机原理与接口技术实验报告3PUSHAXPUSHCXMOVAX,0FFFFH;延时程序MOVCX,02FFFHL0:DECAXJNZL0LOOPL0POPCXPOPAXRETDYENDPSTART:MOVDX,0C40BHMOVAL,10000000BOUTDX,ALMOVDX,0C40AHMOVBL,6H;设置延迟3秒L1:MOVAL,00100100B;南北绿灯亮,东西红灯亮OUTDX,ALCALLDY;调用延迟子程序DECBLJNZL1MOVBL,4H;设置第二次闪烁3次L2:MOVDX,0C40AHMOVAL,01000100B;南北黄灯亮,东西红灯亮OUTDX,ALCALLDYMOVAL,00000100B;南北黄灯灭,东西红灯亮,实现要求闪的功能OUTDX,ALCALLDY微机原理与接口技术实验报告4DECBLJNZL2MOVBL,6H;第三次设置亮灭时间为3秒L3:MOVAL,10000001B;南北黄灯亮,东西红灯亮OUTDX,ALCALLDYDECBLJNZL3MOVBL,4HL4:MOVAL,10000010B;南北红灯亮,东西黄灯亮OUTDX,ALCALLDYMOVAL,10000000B;南北红灯亮,东西黄灯灭,实现闪的功能OUTDX,ALCALLDYDECBLJNZL4MOVDL,0FFH;判断是否有键按下,结束程序MOVAH,06HINT21HJZSTART;没有键按下,进入下一次循环MOVAH,4CHINT21HCODEENDSENDSTART五、实验现象:红黄绿灯变化规律如下:微机原理与接口技术实验报告5南北路口的绿灯、东西路口的红灯同时亮3秒左右;南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮;南北路口的红灯、东西路口的绿灯同时亮3秒左右;南北路口的红灯继续亮,同时东西路口的黄灯闪烁若干次;依次重复。六、实验感想这是第一次微机实验,总体感觉挺难的。虽然课前进行了预习准备,但在调试时还是遇到了灯不亮的情况。仔细检查程序后没有发现什么问题,所以就换了一个实验箱,并得到了理想的效果。我觉得这个实验的关键是设置延时子程序DY,在每一次灯亮后,都要调用这个延时程序,并跳转到下一次灯亮。微机原理与接口技术实验报告6实验二可编程定时器/计数器(8253)一、实验目的1、掌握并行接口8253的基本工作原理;2、掌握8253的编程方法。二、实验内容1、按图虚线连接电路,将计数器0设置为工作方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0遍高电平)。2、按图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)。微机原理与接口技术实验报告7三、编程分析1、8253控制寄存器地址:0C403H计数器0地址:0C400H计数器1地址:0C401HCLK0连接时钟:1MHz。2、程序参考流程图四、汇编语言程序(1):CODESEGMENTASSUMECS:CODESTART:MOVDX,0C403H;计数器0,方式0MOVAL,010H开始设置计数器0为工作方式0送计数器初值读计数器值显示计数值结束结束开始设计数器1为工作方式3向计数器1送初值1000先送低字节后送高字节向计数器0送初值1000先送低字节后送高字节计数器0位工作方式3有键按下吗?调用延时子程序YN(1)(2)微机原理与接口技术实验报告8OUTDX,ALMOVDX,0C400HMOVAL,06H;送初值6OUTDX,ALMOVCL,1READ:INCCL;自加1CMPCL,0JZSTARTMOVDX,0C400H;读计数器0口INAL,DXMOVDL,ALMOVCL,ALCMPAL,9JGBIGADDDL,30H;0到9,数字ASCII偏移30HMOVAH,02HINT21H;显示ASCII数字MOVDL,0DHINT21HJMPRETURNBIG:ADDDL,37H;大于9,转换大写字母ASCII码MOVAH,02HINT21H;显示ASCII字母MOVDL,0DHINT21HJMPRETURNRETURN:MOVDL,0FFHMOVAH,06HINT21HJZREAD;有键按下回DOS,没有则继续执行微机原理与接口技术实验报告9MOVAH,4CHINT21HCODEENDSENDSTART(2):CODESEGMENTASSUMECS:CODESTART:MOVDX,0C403H;计数器0方式3控制字写入MOVAL,00110110BOUTDX,ALMOVAX,1000;计数器0置入初值1000,先送低字节后送高字节MOVDX,0C400HOUTDX,ALMOVAL,AHOUTDX,ALMOVDX,0C403H;计数器1初始化方式3控制字写入MOVAL,01110110BOUTDX,ALMOVAX,1000;计数器1置入初值1000,先送低字节后送高字节MOVDX,0C401HOUTDX,ALMOVAL,AHOUTDX,ALMOVAH,4CHINT21H;返回操作系统CODEENDSENDSTART微机原理与接口技术实验报告10五、实验现象实验1,用手动逐个输入单脉冲,在屏幕上从计数器初值开始显示,此时逻辑笔显示为低电平,单脉冲每输入一个,计数器值将会减1,进行自减计数。同时在屏幕上显示,当计数器值减到0时,逻辑笔显示为高电平,红灯亮。因为方式0计数不会重新装入计数值,所以如果要重新计数,需要重新启动程序。实验2,红灯绿灯交替变化,表示输出是矩形脉冲。六、实验感想这次实验做得挺不顺畅的,一开始我做第一个小实验时,没有实现最后判断是否有健按下,并跳出程序的功能。后来问了同学以后,在RETURN返回子程序里加了一个DOS6号功能调用,并加入一个控制转移指令JZREAD,就实现了有键按下返回操作系统,无键按下继续执行的功能。总之在这次实验中我收获了很多。微机原理与接口技术实验报告11实验三中断实验(纯DOS)一、实验目的1、掌握PC机中断处理系统的基本原理2、学会编写中断服务程序二、实验原理与内容1、实验原理PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理,中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。IBMPC/XT机内有一片8259中断控制器对外可以提供8个中断源,如表6-1所示。表6-1中断源中断源中断类型号中断功能IRQ008H时钟IRQ109H键盘IRQ20AH保留IRQ30BH串行口2IRQ40CH串行口1IRQ50DH硬盘IRQ60EH软盘IRQ70FH并行打印机8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为边沿触发、普通结束方式,对于IBMPC/AT及80286以上微机,系统又扩展了一片8259中断控制器,主片的IRQ2用于两片8259之间级连,对外可以提供16个中断源,如表6-2所示。表6-2中断源中断源中断类型号中断功能IRQ8070H实时时钟IRQ9071H用户中断IRQ10072H保留IRQ11073H保留微机原理与接口技术实验报告12IRQ12074H保留IRQ13075H协处理器IRQ14076H硬盘IRQ15077H保留PCI总线中的中断线只有四根:INTA#,INTB#,INTC#,INTD#。它们需要通过P&P的设置来和某一根中断相连接才能进行中断申请。如图6-1所示,虚线为实验中需要连的线。IRQ+5R11R10图6-1实验电路图2、实验内容实验电路如图6-1所示直接用手动产生单脉冲作为中断请求信号,只需连接一根导线,要求每按一次开关产生一次中断,在屏幕上显示一次“TPCpcicardInterrupt”,中断10次后程序退出。三、编程分析1、由于9054的驱动程序影响直写9054芯片的控制寄存器,中断实验需要在纯DOS的环境中才能正常运行。2、由于TPC卡使用PCI总线,所以分配的中断号在每台微机可能都不同,编程时需要了解当前的微机使用哪个中断号并进行设置。获取方法是在纯DOS环境中,运行一个读PCI配置空间的程序“PORTR.EXE”,该程序能够获得本机TPC板卡或所有PCI板卡的硬件资源,如IO、内存、中断占用情况。然后根据获得的中断请求号码来修改程序中的中断向量、中断掩码的参数,并重新编译链接后即可。微机原理与接口技术实验报告1393CS56EEPROMPLX9054驱动MAX7128CPLDTestHeaderTestHeader晶振阻排50芯ISA总线图6-2PCI卡的结构3、由于TPC卡使用9054芯片连接微机,如图6-2所示,9054通过中断控制/状态寄存器(INTCSR)激活/禁用中断源,所以在编程时,使用微机中断前需要使用9054的中断功能,所以要先对中断控制/状态寄存器(INTCSR)设置,代码如下:MOVDX,IOPORT_CENT+68H;设置tpc卡中9054芯片io口,使能中断INAX,DXORAX,0900HOUTDX,AX其中IOPORT_CENT是9054芯片寄存器组的I/O起始地址,每台微机可能都不同,编程时需要了解当前的微机使用哪段并进行设置,获取方法请参看汇编程序使用方法的介绍。中断使能寄存器(INTCSR)的偏移地址是+68H,设置含义如表6-3所示:表6-3BITS功能81:使能产生PCI中断0:禁止产生PCI中断111:使能LOCAL端输入的中断送到PCI端0:禁止LOCAL端输入的中断送到PCI端其它位为零即可,更多内容参考9054芯片数据手册程序退出前还要关闭9054的中断,代码如下:MOVDX,IOPORT_CENT+68H;设置TPC卡中9054芯片IO口,关闭中断INAX,DXANDAX,0F7FFH微机原理与接口技术实验报告14OUTDX,AX4、PC机中断控制器8259的地址为20H、21H,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器IMR对应位要清零(允许中断),中断服务结束返回前要使用中断结束命令:MOVAL,20HOUT20H,AL中断结束返回DOS时应将IMR对应位置1,以关闭中断。四、参考流程图开始关中断设置TPC卡中断使能保存原中断向量设置新中断向量设置中断掩码显示提示信息开中断计数器为0?按任意键?YYNN恢复中断掩码恢复原中断向量设置TPC卡中断关闭结束返回中断开始关中断计数器减一显示提示信息发
本文标题:微机实验报告
链接地址:https://www.777doc.com/doc-6212009 .html