一、实验目的及要求:目的:通过本次综合实验,使学生综合运用《计算机接口与通信技术》、汇编语言以及电子技术等课程的内容,为以后从事计算机检测与控制工作奠定一定的基础。要求:1.主要掌握并行I/O接口芯片8253、8255A、中断控制芯片8259A等可编程器件的使用。2.学会用汇编语言编写一个较完整的实用程序。3.了解微机接口应用开发过程:分析需求、设计原理图、编程、调试、撰写报告等。二、实验内容:利用《计算机接口与通信技术》课程中所学的主要可编程接口芯片8253、8255A和微机内部的中断控制器8259A设计并实现一个模拟的电子时钟,通过小键盘控制在LED数码管上显示时间。功能要求:1.采用8253定时功能进行计时,每秒钟通过8259A向CPU发一次中断请求;2.用6个LED数码管分别显示时间的分和秒,如0点0分显示为00――00;3.设计一个小键盘来进行控制:C键:清除,显示00――00;G键:启动,开始计时;D键:停止,时钟显示值保持不变;E键:终止程序;P键:设置分、秒的初始值。三、实验连线:1.8255A连线1)将8255A的CS端与218~21F插孔相连2.8253连线(构成一个方波发生器或分频器)1)将分频器74LS393的B端与8MHz信号相连2)将分频器74LS393的A端接+5V3)将8253的CLK0与8MHz分频得到的250KHz信号(74LS393的Q4端)相连4)将8253的OUT0和CLK1相连5)将8253的GATE0、GATEl接+5V6)将8253的CS插孔接200~2073.8259A连线1)8253的OUT1和62芯总线槽IRQ2(B4)连接4.LED连线1)将数码显示器左边的CS端(在U27和U28之间)接210~2175.总连线图见附录图1程序连线图四、程序设计:1.流程图:见附录图2程序主流程图、图3键盘识别流程图2.源程序:见附录源程序《计算机接口与通信技术》综合实验报告2五、实验方法及步骤:1.按照实验连线要求完成实验硬件连线2.运用x86汇编语言知识,进行软件编程,实现各按键功能的汇编程序1)编辑8255A的程序来实现实验板小键盘的输入识别。2)编辑8253的程序将定时器0设为模式3(方波发生器),定时器1设为模式2(分频器),定时器0的输出脉冲作为定时器1的时钟输入。3)编辑8259A的程序,中断请求通过62芯总线的IRQ2端输入,用8253做中断源,并把8253的OUT1和62芯总线槽IRQ2(B4)连接好。4)编辑LED的程序,实现7段数码管显示,位选锁存器(PORTBLT)地址为210H,段选锁存器(PORTSEG)地址为211H。3.在DOS环境下完成软件程序的编译(TASM)、连接(LINK)1)将编辑好的程序存放在含TASM、LINK可执行文件的目录下。2)使用TASM*.ASM编译源文件形成*.OBJ。3)使用LINK*.OBJ连接形成可执行文件*。4.执行程序可执行文件,在实验板上进行相应的测试操作1)运行可执行文件*。2)观察实验板LED显示情况。3)对C,D,G,E,P及各数字键进行测试。六、实验结果:经过对实验结果的分析,总结如下:1)程序刚启动时LED自动从00--00开始计时2)使用C键LED显示清零3)使用P键可逐位设置电子时钟初始时间4)使用G键可依据设置的初始时间开始计时5)使用D键电子时钟计时暂停,可用G键继续执行6)使用E键可退出程序本次实验所要求的各项功能均经过测试且显示无误。七、小组分工:罗江:完成最终实验程序整合及机器调试,程序流程图及操作设计。刘晨莹:完成最终实验连线及最终实验操作,连线图设计。梁颖薇:完成4个基础实验程序调试及操作,实验报告整合。赖宝亮:完成4个基础实验程序整合及连线,实验报告整合。《计算机接口与通信技术》综合实验报告3附录:连线图图1程序连线图200-207210-217218-21FCSOUT1OUT0GATE1GATE0CLK1CLK08253ABLS3938259IR2+5V8MHz8255CSPB2PA0小键盘6个LEDCS。。。。。。。Q4《计算机接口与通信技术》综合实验报告4流程图开始结束程序初始化,设置默认初始时间按下C键吗?按下G键吗?按下D键吗?按下E键吗?按下P键吗?进入清空子程序进入继续执行子程序进入中断暂停子程序进入退出子程序进入时间设置子程序执行显示程序及键码扫描程序是是是是是否否否否否图2程序主流程图《计算机接口与通信技术》综合实验报告5图3键盘识别流程图NNNYYY开始置8255A控制字,A口为输出,B口为输入A口全输出低电平,从B口读入数据KKKKK保存列值,延时取抖动列线全为高电平吗置8255控制字,A口为输入,B口为输出往B口输出保存的列值从A口读入行值和键表比较是否找到匹配键显示输入的字符置8255A控制字,A口为输出,B口为输入A口全输出低电平,从B口读入返回键释放了吗?《计算机接口与通信技术》综合实验报告6源程序datasegmentmin1db0min2db0gap1db10gap2db10sec1db0sec2db0countdw0count2dw0tempdb0temp2db?flagdb1flag2db0code1db0LEDdb3fh,6,5bh,4fh,66h,6dh,7dh,7,7fh,6fh,40hmes2db'Pressanykeycanreturntodos!',0ah,0dh,'$'table1db'cdefba9845673210wxysrpmg'dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axcli;interruptoffmovtemp,0movdx,0dc03hmoval,36houtdx,almovdx,0dc00hmoval,8outdx,almoval,0outdx,almovdx,0dc03hmoval,74houtdx,almovdx,0dc01hmoval,160outdx,almoval,0outdx,al;counter0andcounter1initialization100*50--250000/5000;50interruptionspersecondmovah,35hmoval,72hint21hpushespushbx;storeformerinterruptvectorpushdsmovdx,seginterrupmovds,dx《计算机接口与通信技术》综合实验报告7leadx,interrupmovah,25hmoval,72hint21h;newinterruptvectorpopdsinal,21h;master8259interruptenableandal,11111011b;76543210out21h,alinal,0a1handal,11111011b;76543210out0a1h,al;slavery8259interruptenableleadx,mes2movah,9int21hmovdx,0d468hinax,dxorax,0900houtdx,ax;9054interruptenable;interruptenableagn:inal,21horal,100bout21h,almovcode1,0movdx,0dc1bhmoval,10000010b;pa:out,pb:in76543210outdx,almoval,0movdl,18houtdx,alincdxinal,dx;readportBandal,7cmpal,7jzyzjcallmotheryzj:inal,21handal,11111011bout21h,alcmpflag2,1jzoutsidemovcx,1000yzj2:movah,1int16hloopyzj2jzagn《计算机接口与通信技术》综合实验报告8outside:movdx,0d468hinax,dxandax,0f6ffhoutdx,ax;9054interruptdisableinal,21horal,100bout21h,al;master8259interruptdisableinal,0a1horal,100bout0a1h,al;slavery8259interruptdisablepopdxpopdsmoval,72hmovah,25hint21hmovax,4c00hint21h;缺省执行子程序motherprocmovcx,3agn2:shral,1jncout1addcode1,8loopagn2out1:movdx,0dc1bhmoval,10010000b;pb:out,pa:in,76543210outdx,almovdx,0dc18hinal,dx;readportAcmpal,0ffhjzexitmovcx,8agn3:shral,1jncout2inccode1loopagn3out2:movbx,offsettable1moval,code1xlatcallfatherexit:retmotherendp;按键判断子程序fatherproc《计算机接口与通信技术》综合实验报告9cmpal,'c'jnzmm1callwifecjmpexit1mm1:cmpal,'g'jnzmm2callwifegjmpexit1mm2:cmpal,'d'jnzmm3callwifedjmpexit1mm3:cmpal,'e'jnzmm4callwifeejmpexit1mm4:cmpal,'p'jnzexit1callwifepexit1:retfatherendp;清空子程序wifecprocmovmin1,0movmin2,0movsec1,0movsec2,0movflag,0retwifecendp;继续执行子程序wifegprocmovflag,1retwifegendp;中断暂停子程序wifedprocmovflag,0retwifedendp;退出子程序wifeeprocmovflag2,1retwifeeendp;时间设置子程序wifepprocmovdx,0dc10hmoval,1movtemp2,aloutdx,alsyq1:callreadkeycmpal,'6'《计算机接口与通信技术》综合实验报告10jlsyq2callerrorjmpsyq1syq2:subal,30hmovmin1,almovdx,0dc10hmoval,2movtemp2,aloutdx,alsyq3:callreadkeycmpal,':'jlsyq4callerrorjmpsyq3syq4:subal,30hmovmin2,almovdx,0dc10hmoval,16movtemp2,aloutdx,alsyq5:callreadkeycmpal,'6'jlsyq6callerrorjmpsyq5syq6:subal,30hmovsec1,almovdx,0dc10hmoval,32movtemp2,aloutdx,alsyq7:callreadkeycmpal,':'jlsyq8callerrorjmpsyq7syq8:subal,30hmovsec2,almovflag,0retwifependp;出错子程序errorprocpushaxpushbxpushcxpushdxmovdx,0dc11hmoval,11111111boutdx,almovdx,0dc10hmoval,0ffhoutdx,al《计算机接口与通信技术》综合实验报告11movcx,6uuu:calldelay2loopuuumoval,temp2outdx,alpopdxpopcxpopbxpopaxreterrorendp;读实验板小键盘子程序readkeyprocbegin1:movcode1,0movdx,0dc1bhmoval,10000010b;76543210