测试反应时间模拟系统_第1页
测试反应时间模拟系统_第2页
测试反应时间模拟系统_第3页
测试反应时间模拟系统_第4页
测试反应时间模拟系统_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

测试反应时间模拟系统摘要随着电子技术的飞速发展,微型计算机已经全面渗透了人类生活各领域,并革命性地改变着人们的生活。因此,可以说了解微型计算机的基本工作原理对于每个人都十分必要。而对于即将从事电子行业的工作者来说,熟悉掌握微机原理并在其上进行软硬件的开发设计则是一项必须掌握的基本技能。为此,在学习微型计算机技术以及其应用的过程中,我设计了一个能测试人体反应时间的模拟系统。该系统以8088微处理器为核心,结合8255可编程并行通信接口、8253可编程定时/计数器、8259中断控制器等芯片以及LED等辅助电路,来测试人的反应时间,并将其反映在数码管上。通过此仪器不仅能够真实地测试出人的反应时间,而且还可以锻炼和提高个人对外界突发事件的处理能力。关键词:反应时间、8086/8088、汇编、8255simulationsystemoftestingreactiontimeAbstractWiththerapiddevelopmentofelectronictechnology,themicro-computerhasimpactedonalmosteveryareaofhumanlifeandmakesthepeople’sliveschangingrevolutionary.So,it’sverynecessarytounderstandthebaseworkingprincipleofmicro-computer.Computerprincipleandhowtodosomehardwareandsoftwaredevelopmentonthecomputershouldbemasteredbythepeoplethatwillworkinthefieldofelectronicsindustry.Forthisreason,duringstudyingmicro-computertechnologyanditsapplication,asystemusedtotestaperson’sreactiontimeisdeveloped.Thesystemtakesthe8088microprocessorasacoreandcombinesIntegratedCircuitssuchas8255ProgrammableParallelInterface,8253ProgrammableIntervalTimer,8259AProgrammableInterruptControllerandetc,whichteststhereactiontimeanddisplaysitontheLED.Thisequipmentcannotonlytestthereactiontimecorrectly,butalsoimprovethehandlingcapacityofsuddeneventsoftheoutsideworldbytraining.Keywords:reactiontime;8086/8088、assemblelanguage、8255目录摘要………………IAbstract………………………II跨目录长……………甘……………介……………身……………仔……………棚……………红……………资III施1.瓣前言采……………誓……………棉……………牲……………永……………垦……………芬……………倚1谜2.设计方低案论证慎……………夏……………洋……………机……………什……………择……………拉…来2喜2.1概框述牢……………恢……………之…君……………密……………大……………排……………丈……沾2惯2.2本拾设计使用的胸设备介绍言……………叉……………危……………波……………五……………求2怒浸TDN8仿6/88+驴系统简介责……………恰……………集……………屈……………涨……………马2设2.3设国计原理和方冠法袄……………积……………战……………判……………锄……………此………陵3碌榨设计原理层……………丈……………寇……………怖……………仪……………侄…………喜3概荷设计方法惧……………盗……………狭……………柿……………稿……………伸…………记4剪姑程序流程脆图及其问题碧……………盗……锦……………魂……………霜……………挂……耍4及3.本设计珠中各芯片的拳工作原理及澡编程吧……………条……………凑……………哑……………绒…嫩13捷3.1本崇设计中82社55A芯片祝的工作原理补……………店……………已……………活……………打13牲酿8255麦A的内部结歌构且……………描……………切……………悠……………诵……………诉13探逆8255衰A的控制字纯及工作方式器……………怠……………恐……………巩……………俊…果14架唇本设计中隶8255A馒的应用编程跑……………振……………灯……………代……………总…形14消3.2本敞设计中82迷59A芯片块的编程结构访和应用编程协……………趟……………收……………挎…杯15该柏8259踩A的编程结谱构胆……………抚……………舌……………幻……………爪……………国15锤厚8259测A初始化流柏程图提……………哑……………云……………趋……………摧…………瞧16凯挣本设计中冲8259A妖的应用编程慕……………乔……………罗……………债……………复…因17劝3.3本蹄设计中82旗53A芯片耍的工作方式伪和应用编程苹……………暗……………裕……………棒…惊18帖眨8253负的工作方式屑……………屈……………捕……………伞……………僻……………嘴…塘18初魔本设计中袭8253的妹应用编程蒙……………律……………撇……………刊……………萌…庸19菊4.调试过解程与总结甘……………纪……………谅……………乎……………独……………款…………羽20掌4.1程挤序的调试过洁程各……………木……………券……………绑……………闻……………际……驳20季4.2硬裹件的调试过做程允……………脆……………史……………晨……………压……………时……凑28皇4.3总输结厘……………白……………墓……………继……………熄……………堪……………章……竖29宾致谢西……………拒……………队……………华……………咽……………葱……………果……………岭30予参考资料节……………六……………返……………殿………糕……………取……………若……………签31浓附录一:测捐试反应时间护模拟系统总施电路图死……………钟……………铃……………耐……………姑32厘附录二:测迫试反应时间艰模拟系统程慧序宵……………崭……………瘦……………突……………罩……校33祸附录三:硬至件实物图及仁实物与TD今N86/8户8+系统的膜连接图定……………专……………室…………浙451.前言理近几十年来月,微型计算炎机的应用已疯经全面渗透视进人类生活辱的各个角落微,大到航空畏航天领域,水小至嵌入式冤家庭用器,俱无处不见其橡踪影,无处刑不让人深刻呜感受到其对拿人类生活的施革命性变革栗。体本每设计抓是跪一个能测试触人体反应时浅间的系统,冈该系统可以车应用于体育殖训练、医疗般和娱乐等领谊域蓬。叮2响.白设计方案论组证2.1概述畅本设计采用脑808狮8微处理器季,贝结合辜8255A乳可编程并行偿通信接口尝、该8259中丛断控制熄器、验8253殖定时泉/计时器醋以及键盘等饰部分外设驰电路伐,院利用文汇编乱为程序设计能语言慎实现宿一个能测试告人体反应时暮间的模拟系绢统傍。何具体滨任务顽:支设计一贪个能测试人猪的反应(响蜻应)时间的避仪器。按启怕动钮,测试凳开始,一旦仓看到灯亮,图立即按测试耀钮,崭用4位属八段码显示插从看到灯亮冰到按下测试斯钮的场反应时间x指x.xx秒找。嚼具有以下重功能干:今(1)起编制捷一旧个随机数产浸生子程序,闭由随机数决贡定从按启动练钮到止四训个LED亮割的时间(如煌在3秒~1反5秒之间内饱任意变动)采,使被测试孝者对LED而亮的时间无良法预见,以鸟确保测试结特果的可信;双够(2)凳必须在见到厕LED亮后浙按测试钮才乌有效,即一威直按着按钮庸或提前按下引按钮无效;胃顽(3)铲反应时间显朴示xx.横xx秒,准坏确到百分之犯一秒。挨(4)狐修改以上设哥计使进一步谨能测试人对信不同事物的宁反应(响应独)时间。如烧功能为:按做启动钮,测福试开始,一乓旦红灯亮,爱立即按红灯蜓测试钮,一现旦绿灯亮,革立即按绿测气试钮,八段匪码显示反应由时间焰xx.xx岭秒。若按错除钮,则显示格出错并响“樱嘟”一声。蜘要求坦编制决二呀个随机数产念生子程序,剩一震个决定从按检启动钮到L筒ED亮的时当间,另一个弯决定亮何种漠颜色灯浮;壁同样要求在葬见到LE恐D亮时按测眉试钮才有效恳。益2.2础本设计使用宪的设备介绍脱为研究方便灯,裁本设计久采用山TDN86绕/88+微析机实验系统怪来堵辅助至开发此系统愚,价即首先将程豆序在雅该烫系统上调试奖,调试完成移后再将最终档的程序加载纪到所设计的骡硬件违系统秋上。另外,偶硬件方面还忍需用到之普通PC机芝一台庄,用来作为不开发主机触,以提供界榴面编辑、编哈译程序,并绑将程序加载洗到目标系统副中味。湖腰TDN8很6/88+雹系统简介臣(1康)辞系统总线肤系统总线信纤号定义如表桨2-1翅所示脱。州表2-1旁8088微梢机系统总线巾定义勒信号线吩说明求信号线逃说明他XA0-X见A7普系统地址总邮线虏XIOR闻I/O读(赢输出)信号笨线铜XA8-X染A15骑XMER继存储器读(详输出)信号幸线幻XA16-薄XA19悔XMEW午存储器写(民输出)信号钻线物OPCLK挣时钟信号线反(1.19咐3MHz)物HOLD项总线请求(孔输入)信号割线骄PCLK高时钟信号线静(2.38狠6MHz)奥HLDA社总线请求应顿答(输出)思信号线耗(糟2灭)蛮系统内存分蹲配情况枣系统内存分掏配如下图所使示研:大图寺2借-萌1虹系统内存分两配情况迷本设计需要葵用到825道5、825惧3、825武9等芯片,持它们各自的或端口地址堪如下表派所示活:迷表2-2拳输入/输出玉接口编码表摘电路名称铲信号线锄寄存器斜编址舒电路名称岸信号线午寄存器松编址惊8253犯IOY2毙0#计数器男40H居8255寇IOY3窗A口号60H轨1#计数器收41H夹B口桑61H公2#计数器喝42H威C口怨62H浪3#计数器既43H箱控制口无63H帽8259耳IOY1盆-蜜20H史-能21H陵2.3设谜计原理和方谅法萍偷设计原理瑞本设计中可谈以划分为键胳盘扫描和键临命令的识别尼和处理部分垮。从宏观上私看,这两部兼分程序应当矩不停地并行纪、在地在执行,油这样才能保伙证既使LE尽D的数字显副示稳定,又闯不遗漏对闭广合键的识别侧和处理。味旱设计方法宅设计中采用沃的方案是将破键盘扫描程容序、键命令凑的识别和处炉理程序及L池ED提显盾示程序钩等败作为主程序驶,而将显示塞程序、延时露程序以及随塑机数产生程冲序等作为子醋程序调用。四在主程序中养,对羊8255A但、8259记进行初始化努,接着检测敲启动键的信哨号,在启动枕信号到来后滋产生随机数艇,再初始化训8253,时使它工作在嚷方式隆2,绞每10ms样产生一己上升沿作为屡中断请求信傲号给825皇9,使得程厘序每10m良s便进入中壤断处理子程呆序,从而实龄现时间上的纤累加。促设计的总框兄图如下图所塞示。碌图2-2赵设计总框图敞大致工作过备程为:80行88微处理禾器答根据RAM央中的程序羞不断探测启木动键是否按冬下,若启动味键按下,则磁产生一随机马时间给82画53进行延慢时处理,钱使8253细完成3~1桨5秒的工作丧。望延时结束后胖,通过RA变M的随机数协产生子程序捷产生一随机已数,以决定增亮8个LE效D中的哪个垦LED。货此后程序对博键盘进行扫等描,若按错擦键则响蜂鸣续器,若按下煤正确的键则届将利用82疼55B口狱所连接的四渣位数码管显短示时间的数呢据。衰侧程序流程椒图清及唇其察问题召(1)程序国流程图权基于以上设遮计任务可以宁画出震图抖2负-3杰所示的简易橡流程图。郑(2)程序名流程图里的夫相关问题窗当按着流程蛾图去试着写由程序,会遇戚到以下几个谨问题:甜1)胸长时间延时怀为解决这个缓问题,应首蓄先了解82猾53定时/砍计数器的内馅部结构及工淹作原理。有Intel之8253涉是NMO笔S工艺制成豪的可编程定势时虹/计数器芒,最高速率烛为2.6M舱Hz腾。它既可以家用来定时,丢也可以用来溪计数。其实铜,定时功能勤也是通过计丛数钢来替完成的聚,因为当计辉数器用作定暴时器时,其崇输入的时钟需信号为周期吓性脉冲信号有,而对周期液性域信肥号的计数即馋实现了延时呜的目的喇,延时时间伸为输入时钟怒信号的周期壤与计数初值酷N荒的乘积杰。梦8睬253的编涂程结构框图罢如蔽图2-4所残示。栽图便2甩-3阳简易流程图趟图2互-4脉8253定叉时/计数器腊编程结构图佳8253内再部有三个连计数器洒,分别称为令计数器0、迈计数器1和圆计数器2,去它们的结构仔完全相同。涌每个的输入链和输出都决弯定于设置在仿控制寄存器坊中的控制字湿,互相之间件工作完全独霸立。每个通幸过三个引脚舒和外部联系桶,一个为时谷钟输入端C烂LK,一个好为门控信号录输入端GA买TE,另一佣个为输出端冰OUT。每航个内部有一福个8位的控眠制寄存器,券还有一个1甩6位的初值驰寄存器CR顾、一个执行里部件CE和喘一个输出锁央存器OL。潜赚执行部件实撑际上是一个野16位的减探法顶计数器娇,它的起始毛值就是初值社寄存器的值陶,而初值寄警存器的值是驻通过程序设梅置的。输出区锁存器OL聋用来锁存执武行部件CE末的内容,从手而使CPU短可以对此进引行读操作。低因此,如果椒在系统时钟像为1.19运3MHz的优情况下,需节要利用82闭53定时/剧计数器延时舟0.01秒见,只需将初乡始值119溉30赋给初胆值寄存器,渠再将825怀3的相应C萌LK端接上组系统时钟引天脚即可。送至于控制寄链存器,它的要格式如下表教所示:火表岸2-3压8253音控制寄存器猎格式帆SC1趣SC0蜓RL1胀RL0抄M2口M1拥M0距BCD荒各位所表示闷的意义简要怨解释如下:态SC1,S嗓C0却:牲通道选择位顶。为余00悔、千0想1锄、拐10渗分别表示选幼择计数器拿0轮、份1责、桥2服。恰RL1,R肾L漂0:唇读聪/舞写操作位。摄00霸表示锁存数肆据拆,缩可随时读取垦计数器中的骗计数值会;01名表示只读夺/唐写低奸8厚位碰,喊高监8遣位自动置为察0;10贝表示只读插/桂写高鹅8叠位碑,四低董8株位自动置为章0;11势表示读故/爸写休16企位数据辅,便先低仰8厚位低,拾后高誉8驻位。甘M2,M1拢,M0舰:更工作方式选钥择位。具体平选择关系如免下表:追表碌2-4宰工作方式维选择关系表梢0肚0里0卫模式稀0锐0剥0蛮1俩模式1倦X卧1酷0吵模式2辽X吧1证1扔模式3狂1刻0义0舰模式洗4唇1浴0自1哭模式深5应BCD:吨用来设置计亭数值格式。额为1时表示励计数值为B脂CD码格式购;为0时表感示为二进制乳格式。区另外,82然53定时/备计数器里各具计数器都有票六种工作方惊式,分别为各方式0至方姓式5,在这皇里为方便编万程先说明一位下方式2。滋方式割2锄又称频率发鹊生器工作方侮式。当程序届将工作方式窝控制字写入宁控制字寄存民器时泡,牺计数器的输竖出端浴OUT升立即变为高肺电平。在写爸入计数初值右后菌,石计数器对输磨入时钟据CLK志计数。在计饿数过程中霞OUT滴保持不变政,描直到计数器汤从初值减为浅1穴时焦,己输出僻OUT器将变低敞,叛再经过一个孔CLK姜周期寸,OUT挑恢复为高电艇平烫,蝶并按已设定缠的计数初值之重新开始计斑数。温其贝时序图如下简图所示伟:佳图遍2-5额8253廊方式2时序迎图注由时序图可浅见,每当种计数器拐计数完成时窑便迈在输出端难输出一负脉荒冲纺。根由于825枝3衣定时/计数偿器是16位里的,畏而歪系统总线中咱的陈时钟信号只丛有氏两种:陷1.193谎M纪Hz和2.妻386MH血z。这意味倚着单纯的1饭6位计数器禽最多只能只缎时计时65巴535/1世.193M荒S介=0.05院49S。勿那么,如何跑来实现长达雷3~15秒扁的延时呢?顷其实,可以咽通过计数器登的串联来解淘决这个问题巷。例如,可册以将系统时虏钟接到CL草K0上,使次GATE0习有效(高电乐平)并将O狱UT0输出嫩接到CLK田1上作为计袭数器1的计再数时钟,并泄使GATE池1为高电平凤。这就使得蠢计数器0和夸计数器1串依联在一起。存可使计数器真0工作在方阅式2或方式低3,使其输授出连续的脉探冲;使计数脑器1工作在漠方式0。计位数值方面可捏使计数器0餐为1193弦0,计数器胀1为150晴0,这样就交可使得总计叶数值为11谱930*1每500,即欧实现了延时尿15秒的目蹲的。宰但由于系统辞中计数器0亡和计数器1男已作其它用叫途,故只能填采用计数器成2来实现长岗时间延时的再目的。为了辱实现单个计尤数器延时长消时间的目的麻,须想办法漠实现计时时稀间的累加。宋本设计采用疏计时器结合躺中断的方法御来解决这个借问题。醉即将825攻3的工作方都式设置为方栗式2,计数臭初值设为1仗1930,蔬此时每过0足.01秒便咱在8253纠的OUT2概引脚上输出温一上升沿作铺为8259抵的中断请求沾信号,而C玉PU通过接仅收中断类型胀码进入中断蛙处理子程序左,并在此子梅程序里的对腾某一计数变万量加1从而沙实现时间的络累加,达到淹长时间延时删的目的。滴8259A殖是Inte崇l融系列的可编扣程中断控制羊器。铜中断控制器脊的功能就是洁在有多个中臣断源的系统抗中,接收外习部的中断请范求,并进行膜判断,选中船当前优先级迷最高的中断藏请求,再将役此请求送到腐CPU的I装NTR端;台当CPU响梅应中断并进其入中断子程痰序的处理过乒程后,中断俘控制器仍然观负责对外部跌中断请求的监管理。寇8259觉编程结构滋图吧2-6帅所示。覆由图可见,腔8259乎A甚内部由两大掌部分组成,慕上半部分包识括中断请求朗寄存器和IRR替,优先级别太器配PR逃和中断服务渠寄存器雨ISR吩,它们构成枣8259A太的中断处理锐部分称为处孕理部件。这劝部分的功能极是接收和处欲理从匆IR1捡~手IR屠0举引脚进入的妄外部中断,关其工作过程往体现了习8259A另本身的工作黎原理。即接颈收中断请求笛,进行中断清判优,记录喘当前正在处判理的中断优专先级,实现秒中断嵌套,公向恩CPU昌发出中断申伟请,当巩CPU再响应中断时逼,接收硬CPU燕的两个连续预中断响应信附号将控制转寺移到中断服铁务程序中去耐。算图立2-6帝8259A律的编程结构故综上所述,已如果要求实侦现时间的累秒加,可以树将8253私定时/计数抄器的OUT质输出端接到霜8259中秆断控制器的胶I孔R说i端,他并通过车相应的男程序代码雁编程实现秒。窗MOVC里X,100度筛称;延时时间鞭由CX值决俩定晚MOVA逐L,0B4勇H盯溜;初始化8寸253,计耳时0.01里S缎OUT4市3H,AL潜MOVA化X,BX怜甜令;BX存放威计数初值赢OUT4浑2H,AL袭酿验;先写三计数值存低8位默MOV荐AL晌,AH下OUT4龟2H,AL继纺司;再写木计数值丹高8位…朽IRQ7:猪DECC订X肃登;中断处理宇子程序牙MOVA造L,20H迁胜棍;中断结束姓处理忌OUT2应0H,ALIRET嚷以上程序代便码的第二条破和第三条序两条指令表港示婚选择定时/拉计数器2;蕉给计数器赋讲初值时先读配写低8位,蜜再读写高8东位;工作方永式选择方滑式2。冒第四至七行葬用于对初值守寄存器赋初窜值城,而后面的钓语句则为中嘉断处理子程攻序颗。程序中,想方式2表示床每经过CL海K2判上的一个时贞钟脉冲便对分计数值减一继,直至细计数值减至赖1时在OU焰T2输出端四一负脉冲赶并再次实现久初值的陶自动伞重装工作。载而输出的负欣脉冲将作为金8259的许中断请求信而号从引脚I听R7引入,睛若此时82炉59未屏蔽境该引脚上的候中断请求班,则825姜9将仙向CPU发安出中断请求伞。殖此后程序进柴入中断处理匪子程序进行食中断处理。彻由于草每次计数结卷束时便列进入晚中断处理过贞程中对CX拉减一,慨相当于实现策了统计负脉虽冲个数的功无能,因而药实现了时间仁的累加。券解决了长时孝间延时的问孤题后,接着肠考虑如何延嚼时3~15艇秒内的一个姜随机时间。傲假设计时器册T位数足够钥多,可以赋遍任意大的初蜡值,那么对逮于1.19篮3MHz的庸系统时钟来洋说,要延时数3秒,则应糕对其赋的初够值为119熔30*30弓0;要延时冷15秒,则遭应赋的初值拨为1193亿0*150场0但。所以,以柜上问题实际屈上要解决的虹是泼如何产生一隆个300~妙1500踩内的随机数勉。号2)夸随机数的产泡生缘如何产生一侮个随机数,风以便亮一个即随机LED惹?获对于这个问燥题,一般是锁通过读取微共机上的时间两信息来实现贴的。柴通过查阅参纤考文献[4料]可知,喘在普通的P贼C机中,有蜂一个由主板爽电池供电的粱CMOS望RAM芯片朽,一般简称挂CMOS,稍其容量比较钻小,大多为所128个存蜘储单元。在模这128个爸存储单元中她,0-0D浊H单元是用你来保存时间靠信息的,而检且存储形式层采用BCD汁码形式。在舒这若干个存驳储时间信息谅的存储单元犹中,当前的佣时间信息存膏放位置一般蕉如下:形秒:0雾踏分:2耍哲时:4副做日:7常剑月:8姑坝年:9支比如当前时哑间的秒数为冬26秒,则甩第0个存储栋单元的内容乡为0010晨0110。雅CMOS捐RAM芯片固内部有两个寻端口,端口艇地址为70泽H和71H掘。CPU通赵过这两个端酿口实现对C搏MOSR行AM芯片的寄读写。妖但是,TD棋N86/8道8+实验系颗统中并没有巨由纽扣电池狐供电的RA菜M芯片,因荷此若系统关卧闭电源时,膛一切信息都吓将消失,也尊就是说实验鸣系统中并不筑存在与普通砌PC机类似鲜的系统时间翼存储机制。昨因此,哨需要伶采用其它方掉法喘来实现随机座数的产生站。通过查阅抖相关文献,晶在本设计中擦将采用以下犁方法来实现说随机数的产斤生绣(利用此方叔法产生随机品数的效果请氏参阅调试部废分)亿:首先产生清一个随机的玻AX,再通伙过对N进行线求余运算得您到0~N-训1内的随机立数。比如要醉产生一个0跃~7杯内的随机数备,将采用以享下代码完成法:线CALL建RND_A混X镜;产生随机燕AX召致MOV泳AH,03萝H虾;防止溢出尿表MOV巧DL,8烛职DIV桃DL扁税垫据痛;产生0~柱7之间一随承机数至AH段摆MOV稍RND,A尿H款烈天毅;AX除D常L,商放A圈L,余数放约AH……斑RND_A炊XPRO裁CNEA茶R绘斗蒜;子过程灶,用于产生圈随机的AX片MOVA烛X,旦0C敏49H村IMUL乔SEED畏ADDA卖X,05E统1H累MOVS恨EED,A招X忘售丽;习保存种子独PUSH脸CX傅MOVC谁L,8威RORA我X,CL筑;对AX进尊行移位铲POPC赔X皱RND_A慰XEND各P紫其中SEE脾D、RND隶是在数据段车定义的变量裂,SEED稀初始化时可容以任意赋值书,本设计中场置初值为1敲。此段代码蜘最终产生一妄个0~7内援的随机数至咐变量RND愁。有上面所说的村产生一个3铲00~15毒00内的随馆机数问题也乖可以类似地孤解决,程序盟中先用一个改随机数子程区序产生10糠0个随机数较,对其求和谁并将所得的视和存放到变乌量RNDS沟UM,则根消据统计平均攻规律,RN间DSUM约历为255*裙100/2厘=1275糟0,将此值泊作为计数器惠T的初始值蛾。如此一来爽,欲表示一未个料3怕~15秒的享区间,则需典确定两个变恰量NUM1砍和NUM2悔(础其中NUM唱1=119逐30*30丑0/RND挺SUM,N丽UM2=1兴1930*腔1500/誉RNDSU瘦M根)头,这样区间察(NUM1湿~态NUM2)拢就对应蝶3驾~15秒。斯具体代码如倾下:时MOVD提X,003戚6H慎;1193绞0*300本=36两9C先78H蔽MOVA叛X,蜓9C却78H录MOVB寨X,RND遍SUM伐;RNDS进UM奋为100个咏RND之和步DIVB举X乖MOVN凳UM1,A晶X梅MOVD轮X,011同1H苦;119疲30*15裁00=11奶10E5制8H著MOVA取X,0E5弹8H拒DIVB紫X栗MOVN惜UM2,A海X砍CALL暑RND_赵AX冲;产生随机闲AX赛MOVD皮X,0远MOVC折X,NUM炸2解SUBC菊X,NUM完1俩微茶DIVC且X截机稳辈;CX存放孙0NUM2虚-NUM1穷之间的随机易数乓MOVC粪X,DX私ADDC湖X,NUM许1兴趟;CX存放定NUM1-润NUM2牙之间的随机旺3)示键盘扫描县通常使用的朵键盘是矩阵帐结构的,如谨下图屿所示:肆图每2-7吉键盘的矩录阵式结构相识别键盘上独的闭合键通俭常有两种方苗法:玻行反转法未和行扫描法炉。脂行反转法的撑原理:行反神转法识别闭贺合键时,要鹊将行线接一俯个并行口,和先让它工作低在输出方式识,将列线也肠接到一个并锄行口,先让臂它工作在输遗入方式,程汁序使CPU爷通过输出端李口往各行线馅上全部送低春电平,然后榴读入列线的拘值。如果此殊时有某一个他键被按下,孤则必定会使晓某一列线值艇为零,然后雅,程序再对晚两个并行端排口进行方式俱设置,使行熊线工作在输喊入方式,列劣线工作在输寸出方式,并善且将刚才读奏得的列线值查从列线所接妙的并行端口辅输出,再读住取行线上的喝输入值,那愚么,在闭合碧键所在的行踏线上的值必饿定为零。这雨样,当一个帜键被按下时皂,必定可以先读得一对唯宰一的行值和踪列值。映行扫描法的根原理:首先比先快速检查盗键盘中是否惩有某个键已趟被按下,然织后,再确定幻具体按下了末哪一个键。某为此,可以拦先使所有各浸行同时为低守电平,再检粮查是否有列折线也处于低假电平。这时骄,如果列线瓣上有一位为霜0,则说明厘必有键被按蚁下,不过,火还不能确定佛所闭合的键豪处在哪一行叨上,于是再纺用扫描法来易确定具体位益置。具体为类:先使第1板行接地,其广余行接高电匹平,然后看苗是否有哪条沟列线变成低丙电平。如果额有某条列线装为低电平,愁则该列与第既1行相交位责置上的键被楼按下;如果形没有任何一兽条为低电平宪,遇说明第显1行上的键拼均没有被按糖下。杰用同样的方饶法判别其它甜各行的情况国,最终确定拨所按下的键铁。池本马键盘扫描责程序将采用挨行扫描法来词实现键盘的悔扫描。调4)辩用数码管显碎示时间数据闹下够图是职8状段共阴数码宣管的结构图鸣:壮图寇2-汉8势数码管内部姨结构及外观其引脚凡由冲上捕图可知,要涉想选通数码船管,婆应惨将第3盟管脚接低电臭平作为选择骄数码管的位灵,渴而将825管5B口的泽PB7~P役B0分别接借数码管的D比P~A作为茎选择数码管货的段。对于肌数码管数据棍的显示,社一般姿都是用查表暮指令来完成叔显示工作的洽,即先把0宣~9的显示捧码放到一个泊数据表中,似并将寄存器惩BX指向表耽的首地址,绣在AL存放滔数码管所非要显示的数选字,波再址利用XLA砌T狂这条耗换码晨指令即可完娘成换码操作处。壶至此,简易伯流程图的问卷题都大致解载决了。考虑椅其它各方面歇因素,作出裳如更图缠2-9记所示的完整眠流程图唐。数图饰2-酸9爬完整流程图裙3餐.漂本设计劫中晴各芯片的工问作原理及编臣程赏3貌.1活本设计中窃8255A但芯片冷的工作原理题8255A吴是Inte懒l系统的并手行接口芯片织。由于它是畅可编程的,脆可以通过软忽件来设置芯梅片的工作方喇式,所以,承用返8255A捎连接外部设当备时,通常灿不需要再附奔加外部电路欧,给使用带副来很大的方稀便。览3.逐1.1魂8255A典的内部结构烧参阅参考书善[1],敢8255A被的内部结构右框图横如下图所示揉:蛋图糟3-1撒8255A朋的内部结构菜图极8255A慕由以下几部晨分组成。胸1艇)斯数据端口A丛、B、C时8255具泥有三个相互债应独立的8纱位并行输入渴输出端口,冬即端口A,肺端口B和端眼口C。盐端口A芬:抢端口A对应谱1个8位数赶据输入器和恭1个8位数尾据输出锁存冻/缓冲器。垫端口B鸡:宁端口B对应期1个8位数玻据输入缓冲筋锁存器和1贵个8位数据扰输出锁存器饲/缓冲器。抖端口C浑:交端口C对应吗1个8位数惜据输入缓冲巩器和1个8象位数据输出晒锁存器/缓疼冲器。码在使用中,趴端口A和端恨口B常常作公为独立的输佩入端口或者锐输出端口,狐而使端口C常常根通过控制命态令被分成2风个4位端口琴,分别用来对为端口A和能端口B提供只控制信号和傻状态信号。上2译)锣A组控制和寒B组控制捷A组控制电女路控制端口谈A和端口C服的高4位雅(PC7~序PC4)的膊工作方式和农读写操作。当B组控制电苦路控制端口您B和端口C瓦的低4位育(PC3~则PC0)的逆工作方式和刑读写操作。限3挪)状读写控制逻意辑电路古读写控制逻俭辑电路负责梨管理炊8255A骗的数据传输临过程。别4)孔数据总线缓础冲器卖这是一个双沿向三态的8来位数据缓冲谣器,鸦80255请A切正是通过它丛与系统数据脸总线相连。愁输入数据、帽输出数据以蝴及CPU发友给洁8255A锣的控制字都希是通过这个静缓冲器传递葱的。绝3.挥1.2英8255A违的控制字披及工作方式洲(1)龄8255A驻的控制字映8255A绑可以通过指爸令在控制端销口中设置控变制字来决定旺它的工作。屋控制字分为久两类:方式卧选择控制字供和端口C置萌1/置0控鬼制字庭,两者通过愁最高位的值倒相互区别:丧如最高位D艰7为1表求蝴控制字为方归式选择控制担字,否则宋则顽为C口置1类/置0控制雨字。伴(2)脖8255A仪的工作方式控8255A蹲有三种工作久方式:方式湿0、方式1妻和方式2。苗以下介绍方磁式0缓。且方式0也叫么基本输入输毒出方式。在翼这种方式下慌,端口A和座端口B可以窜通过方式选愈择规定为输具入口或者输报出口,端口朽C分为两个极4位端口,平高4位己和沿低4位烈各两为一个端口驶。毅概括地说,靠方式0的基猛本特点如下贵:匀1)狂任何一个端千口可作为输狭入口,也可讯作为输出口答,各端口之破间没有规定妇必然的关系仔。押2)述各个端口的贞输入或输出房,可以有1汉6种不同的漏组合,所以下可以适用于胆多种使用场胜合。妈本设计中扛8255A茄的A、B端告口均采用方埋式0。丸途本设计只采简用方式0。伴测本设计中谎8255A茅的廉应用魄编程膝好假设傅用饲8255A当的端口地址面如下表所示脖:金表3阿-1震8255A扛的端口地址船分配表意A口辛60H惨B口激61H西C口旺62H或控制口讨63H舅若有以下指煤令将控制字皱写入控制端茄口中:龄MOVA丰L,81H乓OUT6粘3H,AL尊其中81H开的二进制形穴式为100佩00001之,厚最高位D7愚=化1皮表示此控制翻字为方式选险择控制字街。傲根据825径5方式选择而控制字格式缎,则旺D6D5=成00表示A垃口元工作于稻方式0,星D4言=0表示A里口工作于输器出状态,D社3=0表示漂C口高4位皮为输出口,恶D2=0表匆示B口工作兴于方式0,悬D1=0表魔示B口为输薄出口,D0恋=1表示C眼口低4位为伍输入口。师此后若要求碌B口输出1丸的显示码0尼6H,则只店需执行以下朵代码:弓MOVA小L,06H河OUT6山1H,AL祖而若要求对嚼PC2置1算以驱动蜂鸣居器,则可执昌行以下代码仗:帽MOVA哨L,05H盐OUT6纳3H,AL晚其中贱05H的二场进制形式为址00000翁101,雁最高位D7阅=0表示此告控制字为夹C口置1/眠置0控制字弃。映根据其格式步,举D3D2D壁1=010尽表示对PC年2进行操作刘,D0=0伟表示对PC针2置1。歌3.跳2孕本萝设计中准8259A厚芯片的编性程结锐构败和芝应用编程筹参阅参考文牌献[1],蝶8259A攻是Inte己l系列的可热编程中断控带制器喷。捉它具有以下泽特点:槽1)锄1片彩8259A觉能管理8级搭中断蚊;著2)款由于顷8259A躲是可编程的挺,所以使用哨起来非常灵抹活。实际系趴统中,可以苗通过编程使乖8259A死工作在多种董不同的方式闪。雹3)勇8259A凯用NMOS承工艺制造,牢只需要一组绑5V电源。功3.赔2.1卖8259A不的编程结构晃编程结构纱如秃图泽3-2所示搁。田各寄存器的腔工作原理岸表述宁如下:踏1败)唯中断请求寄君存器铁IRR落。搞此避寄存器用来卷存放外部输冰入的中断请逐求信号兵IR7含~草IR0谁。每一位对掘应一个外部千中断请求信设号乱IR精,当某个校IR盆端有中断请邀求时,其相境应位置派“贸1”贿。积2观)两中断屏蔽寄塞存器装IMR芽。富IMR靠是一个魄8山位寄存器,匀用来存放对螺各级中断请稿求的屏蔽信汉息,如果某彼一位喷IMR屿置煮“腐0”薯,表示对应塘的中断挖IR往被允许,云IMR冲的某一位伏IMR佛置未“申1”顺,表示对应符的中断全IR轧被屏蔽。捕3蛇)对中断服务寄失存器爆ISR伸。ISR是茂8侵位寄存器,柱与乞8蜻级中断么IR7扁~猎IR0扯相对应,用极来记录正在仔处理的中断究请求,如果炕某一级中断躬被响应,则管ISR检中的相应位恢置提“狮1”费。痒4垫)焦优先级判别陈器痛PR学。PR用来阶管理和识别掌各中断请求堡信号的优先意级别。当出调现多重中断辅时,敢PR零将新出现的荣中断请求和杏正在被服务向的中断优先要级进行比较妨,确定新的温优先级是否冲高于正在处硬理的中断级犹。高级中断英允许手中止低级中块断吉。炊而贸8259A手的下半部有惊7咽个妙8斗位寄存器。蛮这些寄存器饶可痕分为两组:庙ICW1~野ICW4佳为一组,称暮为初始化命灵令字(IC农W)寄存器招,用来接收绑CPU都向饿8259A万发出的初始斯化命令以决随定孩8259A歼的工作方式粮。午而垫OCW1~奥OCW3稻为一组,称购为操作命令盲字(OCW销)寄存器,共用来存放羡CPU涉向居8259A姻发出的操作肾命令鉴。杯图明3-2幻8259A招的编程结构忌3.敢2.2供8259A卡初始化流程略图钢在怪8259A凑进入正常运兔行之前,必蹦须将系统中挤的每一片狸8259A土进行初始化包。初始化就谜是将上述的蔽初始化命令尚字按固定的苏次序写入苍8259A晴的指定端口诉。包8259A挎的初始化流仍程图如图祝3-3系所示色。起图验3-3供8255A园的初始化流饶程图优箩本设计中台8259A倒的扭应用折编程篇系统中的捎8259A卸的偶端口地伏址为20H锈,端口地址阀为21H。控假设系统只乞有一片题8259A肿,且系统开省放IRQ7汤,则可用以扛下代码对其烂进行初始化去:糕MOVA史L,13H低;晨初始化具8259骑OUT恳20改H绳,据AL催;云ICW1缺MOVA起L,08H目;炸ICW2妹OUT2皮1H,AL键MOVA载L,09H控;祸ICW4赠OUT2拾1H,AL艘IN脸AL船,21H帮圆;OCW1键AND另AL啦,7FH铁OUT2让1H,AL尾以上代码中扁,写入IC界W1寄存器沙的数值为1但3H,其二是进制形式为饱00010稠011。根痕据馆8259初菠始化命令字摔ICW1的台格式,D3貌=孟0舰表示中断请蛙求为签边沿触发方易式裕;产D1=1表页示撕采用单片8切259;D昌0=1表示疫采用ICW楚4。壳写入ICW吗2具寄亡存器的数值乌为08H,乘其二进制形最式为100凡00000糕。根据IC色W2的格式垒及含义,表姜示中断类型脸码的前5位逃为1000候0,而后3哗位则由中断申请求信号进帐入8259匀时的输入引抓脚所确定。裳若中断请求浮信号从IR硬7引脚输入坝,则中断类计型码的低3盘位为111件。垦写入叙ICW4派寄俩存器的数值尼为09H,雪其二进制形撑式为100袜00001质。根据IC召W4的格式吩,D4=0秤表示中断嵌宵套方式为完打全嵌套方式崖;D3=0待表示825慰9不通过总夕线驱动器与谈数据总线相张连;刑D1=0表丰示中断结束温方式为非自闸动结束方式娇,此时需要节发出一般的作中断结束命鱼令来结束中走断过程。属INAL贝,21H表头示将OCW闹1的数值读鱼入AL,A祖NDAL只,7FH表逃示凡对最高位清伪零,清零后躲再通过OU壳T21H铁,AL将修贱改后的AL惠值写入OC叮W1。送整个问过程暂表示蛮开放啦8259的驶IR7疲,允许此引蒸脚上的中断币请求剧。但而要使得C按PU进入中尝断处理子程择序IRQ7碍,则应使用巴以下代码,镇以便产生中绒断时,CP括U进行正确退的跳转:虾PUSH迎DS矮喊津使短兆MOVA另X,0H腿MOVD坡S,AX税MOVB斜X,003引CH弹MOVA凉X,OFF辛SETI才RQ7肃;犬获取贱IRQ7趟的偏移地址乓ADDA索X,200啊0H壳MOV[杆BX],A乳X相MOVA抄X,000鸦0H躺MOVB件X,003义EH眨MOV[悲B叶X],AX好POPD蛇S坑因为在担8259A广的IR7引竹脚产生中断凑时,CPU绩通过总线获慈得遣8259A雹传来的中断震类型码0F倒H(即00乱0011斤11),此俗时CPU将离对此码进行横乘4操作而超获得一数值乌,再将以此倚数值为内存行地址的内容战读出送至C嫌S、IP,惰也就是进行捉了跳转。以广上代码就是深更改了相应偶内存单元的牲内容,从而醋使得CPU跃可以进行正端确的跳转而青转至中断处截理子程序I肠RQ7。哪进入中断处朗理子程序后袖最终需要进桨行数中断结束处舒理幸,这时可采刮用减以下代码:新MOVA扶L,20H昼OUT2的0H,AL疯此代码将2结0H写到O蒜CW2中,弓其中EOI墨=1,R=殊0,SL=灭0,这是一惰个一般的中澡断结束命令梳,它使当前涨中断处理子花程序对应的盛I甘S施n位被清除元,从而结束历中断态,使得可以警再次引发I袄R7中断。游3.嘴3表本设计中睡8253A劳芯片的宏工作方式遇和盗应用培编程跌Intel火8253阵是NMO智S工艺制成概的可编程定蒜时/枝计数器虏,战它既可以用眯于定时也可左以用于计数绒,其引最高速率为割2.6MH脏z铜。8253叙内部包含三姿个听结构完全相矩同西但又匙相互独立的学定时/计数慎器,并通过范控制端口对押各个定时/挽计数器进行斜操作介控制结。被3.概3.1用8253驰的刚工作方式协8253作滚为一个可编屠程的定时/筒计数器,可昏以用6种模宵式工作央,苏本设计中只向用到方式0岔和方式2,甘由于方式2领前面已经介纸绍,故冠以下黄只介绍清方式庭0浅的薄工作原理敌。避方式狗0:胞又称计数结边束产生中断棵工作方式。淘当程序将工河作方式控制羊字写入控制壁字寄存器时均,刊计数器的输接出端档OUT酿立即变为低换电平。在计痒数初值写入讽该计数器后某,松输出仍将保沿持为低电平饰。当门控信奶号耻GATE聋为高电平时哥,役计数器对输途入端乓CLK任的输入脉冲斧开始作减一牌计数恼,经当计数器从悟初值减为主0愧时浸,竹输出端灿OUT辩由低电平变福为高电平咏,晚该输出信号阀可作为向南CPU偿发出的中断胁请求信号。菊时序图如下们:疫图3-慢4迎8253瞎方式0时序才图协执本设计中巧8253的腐应用慰编程便假设系统中遵8253各轿计数器的端缩口地址如下谜表所示:灭表3妄-住2蜡8253箭定时/计数游器各端口地旁址讲计数器0含40H谦计数器1洞41H先计数器2虏42H默控制寄存器胸43H讲如果采用O显PCLK=咱1.193罩MHz的系惕统时钟,若邀要求计数器盲0计时0.监01秒,则昨可采用以下渗代码:双MOV荡AL昏,0B4H朴江绸陵OUT4胖3H,AL娇树MOVA填X,119剖30肥岛OUT4驱2H,AL撞兰MOV墙AL抄,AH喂权OUT4校2H,AL肉抬其中候第一、二行延表示设置沉计数器0坡的工作方式晋为仍方式2,先挨读写低8位残,再读写高蛋8位艳。接着涌第三至六行资把计数初值汗放至16位问的初值寄存镰器中。吉这样的话每枣次计数完毕遗后都会在输弄出端输出一鼻负脉冲。抵4会.讽调试过程与透总结葛4富.1绳程序的调试久过程眨程序的调试胖是一个孤艰难想的过程,因俯为程序如果亲隐藏着微小碰错误,就会脊使得实验结嗽果与预期结奖果大相径庭淋,甚至程序煤运行不了。储而要挖掘出祥这些深藏着柿的错误,必喜须花费足够孩多的时间与舟耐心,对每住一程序模块呀、模块与模歪块间的联系招(比如参数心传递问题)峰、甚至每一拍语句进行再活三的思考。狸(1)芯片之的纽测试昏为了测试8商253定时件/计数器与担8259遇A对中断控制器邪共同作用后雪的工作情况镇,可将82析53的让OUT2连油接到雨8259A杆的IR7端尼,具体连接习情况如下:诵8253-交GATE2柳----+摘5V秀8253融-CLK2地----K失K1锄8253-弦OUT2-补--喷-8259宾A任-IR7胶此时,将以杜下代码编译吗加载到系统鼓中测试:恰CODE政SEGME因NT崇ASSUM但ECS:纠CODE羽START本:PUSH亲DS椅筝;椒修改中断向络量场MOVA要X,0H转MOVD内S,AX偶MOVB亭X,003程CH讨MOVA天X,OFF坏SETI麦RQ7寻ADDA岂X,200刮0H网MOV[朝BX],A跟X泰MOVA毅X,000灶0H初MOVB么X,0据03EH卷MOV[斤BX],A缘X麻POPD央S粱;唤初始化附8259-翼-----唐-劣MOVA直L,13H茫为;ICW1仅OUT2妇0H,AL精MOVA刷L,08H贸狸;ICW2终OUT2视1H,AL掀MOVA度L,09H必梁;ICW4宰OUT2寸1H,AL普INAL挪,21H饺叙;OCW1娃,开放保IRQ7泡AND阻AL州,7FH霜OUT2终1H,AL殃;侵初始化做8253-抗-----顽-杯MOVA盯L,90H醋座;语控制断字写入控制句寄存器皂OUT4文3H,AL锁MOVA择L,5座勿;素对证T2初赋初值诚”跪5卡”剂OUT4风2H,AL踪STI追大;恨开中断笨HERE:塘迷JMPH防ERE恋意;等待中断夕IRQ7:辛疑MOVA辅H,01H茫MOVA扮L,4DH秀患;制显示邪字母散”M”供INT1吩0H熄MOVA碎L,20H孕川;超清除中断标醉志腿OUT2膀0H,AL世;荒重新对计数嘉器赋初值达MOVA钻L,90H心球;化控制竟字写入控制盈寄存器泪OUT4送3H,AL屋MOVA倾L,5H肚璃;殖对冶T2之赋初值钞”色5咏”骡OUT4焰2H,ALIRET狼CODE忧ENDS宅ENDS屋TART接程序加载运触行后,每按缠一次启动键裁KK1,便俯产生一个正挖脉冲卫作为惕8253计滔数器T2膝的CLK时档钟信号筐。惭程序中对计就数器T2赋幅予川初值肤”津5品”旗,当按下铸6次启动键禾KK1伞后缸在显示终端选显示一个字汉母希”扬M俯”呢。之所以要卵按下6次而悦不是5次启厅动键,是业因为湖计数器蹲T2序采用葬的是及方式0,裕该方式规定管写入计数初叮值后需等待烧一个时钟消脉冲计数初探值才会送到册计数执行部仁件进行减一南操作坏,虹因此雄需禽按管6辱下英启动键疮KK1舅。忙通过以上程叨序,确定蒜8253定始时/计数退器及坐8259A统中断控制器我工作正常。骄(2)响本系统在收程序调试过圆程中所遇到端的几个问题显1)岩随机数翼的言产生踏刚开始时,辫本设计想利找用读系统时使钟的方法来屋产生随机数卷。使用的功况能调用为:获ah=02偶,int哪1ah。执街行后CH:必CL=时:输分;DH=要秒(均为B纯CD格式)卡。比如可以扯通过以下程披序读取系统万时钟,这在论普通PC机狂上可以得到狗正确结果:疲DATA笛SEGME刚NT木HOUR哑DB?画哈;肤变量HOU弄R用于存放筒时描MIND雪B?准所;吊变量MIN叼用于存放分螺SECD遵B?步军;到变量SEC管用于存放秒牧PCSEC衡DB?简DATA草ENDS伍CODE级SEGME债NT奏ASSUM峡ECS:吗CODE,倘DS:DA脚TA急START图:MOV昨AX,DA吉TA萌MOVD口S,AXSTI康MOVA由H,02H庙;执行IN寺T1AH功然能调用枕INT1板AH帜MOVH免OUR,C旋H伙繁渗夫无;射将功能调用停所得到的数壶据赋值给各缩变量床MOV堤MIN,C拍L河MOV深SEC,D妄H撕MOV窄PCSEC精,DL把MOVA弯H,4CH怕INT2青1H俘CODE卖ENDS絮ENDS怪TART玻比如当前时爹23:44屑:09秒,误则执行以上边程序后,会留得到数据段韵内的数据为础:掠2344帆090令000族0000踪00-0拼000竟0000芒000致000汇00至程序的执行茄过程为,在音执行int捧1ah功远能调用后,泄ch=00虏1000始11B(2变3的BCD陪码),将其跑赋值给变量预hour后烦,hour滴便以23H诱的形式存放颗在内存中。感但将此程序龄放至TDN意86/88惜系统中运行糟,就得到不碑一样的结果万了。我试验寻过两次,一数次是系统刚猴上电后运行摧此程序,此滔时变量得到标的结果为:韵hour=肺0CCH,妖min=0炊CCH,s峰ec=0C榴CH。另一韵次是先运行牙其它程序,岛然后再运行助此程序,此朱时得到的结垮果为hou温r=18H抢,min=翠86H,s缠ec=00碰H。无论哪耻一种情况,烫都不能得到身正确的结果抗。钞为此,此程柔序采用了其保它方法来实舞现随机数的智产生,也就鹅是旁第2章渐所涝述的方法。句但这种方法搅生成随机的串效果怎样呢疾?可以用以裤下程序来统捏计:天DATA慧SEGME州NT智SEED铸DW1徐脂杜牵;翠定义种子帜IDB款?原危讽帝红;定义一变痰量,用来存情放0~7以银判断的所搏产生的随机俯数的值沿XTABL使E估DD萝ROUTI谣NE0些熔移;定义表存薯放各跳转路宿径的段地址淘和偏移地址痰DDRO蔬UTINE强1布DDRO熔UTINE窄2涛DDRO肚UTINE敢3薪DDRO宋UTINE白4私DDRO品UTINE疮5花DDRO棕UTINE融6删DDRO戚UTINE堂7黎TIMES犹0DB菜0亭重宅冻;定义变量恶统计0~7询的出现次数咽TIMES帖1DB幼0跌TIMES碗2DB遵0桃TIMES宫3DB露0者TIMES宗4DB式0胡TIMES免5DB边0杨TIMES茶6DB葵0丑TIMES往7DB堵0夸RNDBU陶FDB娇100D砍UP(?)物DATA孤ENDS费;****怎*****貌*****醒****黄*****嚷*****未*****盈*****挡*****盼*****借****里STACK融SEGM柳ENT积樱STKBU忘FDB株80DU站P(?)番STACK纲E妖NDS艰;赴*****湖*****锈*****锅*****涂*****滨*****痰*****及*****闲*****币*****沿**尘CODE世SEGME采NT君ASSUM屈ECS:势CODE,齿DS:DA骆TA倍START溜:MOV快AX,DA送TA法MOVD抖S,AX巴;----动-----并-----兔-----薯-----番-----筛---示MOVB暑X,0厦MOVS头I,OFF方SETR条NDBUF育开俭MOV多CX,10辱0历肌做堆;产生10扣0个0~坦7的随机数识RNDGN夕T:MO锣VAX,爱0C裹49H宾此IMUL幼SEED焰禾ADD钢AX,05殖E1H逗佳MOV顶SEED,烧AX宜渡没兽PUSH与CX准投MOV译CL,8荐并ROR钱AX,CL炉磨疲筝MOV访DX,0柿鞋MOV拆CX,8聋笋DIV身CX敌何趣保乏;除数为8否,余数为0架~7缎去POP余CX汪钟随爷MOV士[SI],烫DL泪饿MOV痒DI,0腾互MOV旷I,0只KKK:瓜CMPD踪L,I简脉甚剧毙;利用变量坏I判断产生踪的随机数的独值孔JNZN代OT_YE势T孕CALL画XTABL式E[DI]牲熄;判断出随啊机数的值后少调用子程序难对相应的统咬计变量加1筛JMPN洋EXTRN晌D镰NOT_Y吸ET:AD猴DDI,贡TYPE泰XTABL点EINCI改JMPK贯KK钱尸骡NEXTR谁ND:IN育CSI刻LOOP膨RNDG吹NT替JMPC赠ODEEN纳D赌;----晓-----尺-----卵-----尼-----摧-----茄---勤ROUTI队NE0:I造NCTI遍MES0创裁;对相应的宣统计变量加驱1RET压ROUTI谊NE1:I缩NCTI辨MES1RET咬ROUTI纱NE2:I仪NCTI缩MES2RET图ROUTI系NE3:I妄NCTI徒MES3RET偶ROUTI急NE4:I接NCTI害MES4RET欢ROUTI游NE5:I迈NCTI巨MES5RET伍ROUTI完NE6:I昂NCTI粱MES6RET哑ROUTI授NE7:I奋NCTI却MES7RET肚;----叨-----铃-----殖-----柿-----皂-----温---牙CODEE庄ND:M猜OVAH少,4CH钞姐云INT2陷1H葵CODE他ENDS当ENDS杨TART海将以上源程倦序保存为1暴00rnd搞2.asm揉,并编译雀链接后用D迈EBUG程六序调试,具犬体过程如下倦:眠图4-1辟DOS下的狠调试图1挣由图可见,玉执行两步单她步运行后,翼数据段段地迫址阶变鉴为DS=0冒B69,根齐据数据段变份量的定义情讯况知道从0搏B69燥:思0023开宗始存放10捐0个0~7弹的随机数,钞利用G命令得全速运行程忠序后再烧用D命令查湾看得到以下河结果:弹图4-2扫DOS下的辜调试图2烈由上图可见沙,幻产生的10诵0个随机数纪从第1行的起倒数第五个胃数字02启开始至倒数和第二行的倒芝数第二个数葡字02结束宇;而第一行坐的第四个数组字0E到第肠一行的倒数折第六个数字径09为00烧~07在这协100个随惯机数中的统之计次数。标为了明确,惧在此重新写品一次各随机绢数的统计次积数:净表4-1慕随机数次数匠统计表签随机数晃00血01姑02牛03梦04逃05坦06熊07各次数纱(十六进制钱)节0E理0E配0C益0C岔0D驰0E斯0C祖09疼次数(十进混制)违14艳14缝12上12允13木14扭12率09更可见,用上雷述方法来产胁生随机数是码可行的。盼2)膝响蜂鸣器安设计要求当劈按错键时响畜蜂鸣器一声花。萝因为系统采多用的是有源碗蜂鸣器,因紫此鲜,当按错按术键时喝只需底把蜂鸣器接回高电平即可怎。但是在调贴试的实际情趋况出现了一闸些问题,因勾为爱当我把整个小设计的基本棉功能做出来探后,825袋5就只剩下蔑一个引脚P匙C2了,此忧时其它引脚某的连接关系封如下:PA朽7~PA0是-D7~D舒0;PB7沫~PB0-触DP~A;墙PC7~P蛙C4-X1蜘~X4;P瓦C3-KK昆1;PC1号~PC0-锹Y1~Y0漠(具体情况递可看附带的平电路图)。券于是很自然伪地把PC2惰接到电子发袋声单元的S煤PK端,当蒜按错键时,脏只要把PC饺2置为高电田平就可以了痛。那么如何淹将PC2置检为高电平呢糠?显然最简新单的方法便绢是利用端口桂C置1/置搁0方式字,鸟即在要响蜂越鸣器的地方赵执行以下代与码:姐MOVA某L,05H视;侵0000仍0101伶,即置届PC2瑞为棚1困OUT6而3H,AL箩但是将以上突代码连同程朋序的其它部院分加载到T你ND86/得88+系统仇后扒测试时近,却发现即易使按错了键雅,蜂鸣器依纤旧不会响!迁这是怎么回露事呢?难道俩蜂鸣器坏掉婆了?试着把免系统上的+胃5V电源接党至SPK端卵,蜂鸣器却起响了。因此析可以断定是室程序出了问惕题。于是进唤入单步调试竿,发现执行颈以上代码时纯能正常通过型,蜂鸣器就彻是不会响,瞎也就是说在匹执行OUT诉63H,触AL后并不酬能使得PC朋2为高电平堆。漆在对825庙5进行初始顿化的时候规注定了A、B魔口为输出口帜,C口高4丹位为输出口杏,低4位为手输入口。这返样一来,想季利用C口置三1/置0方监式字来置P还C2为高电他平进而驱动商蜂鸣器显然感是有问题的腥了。那么如精何在825镜5其余的引涌脚都引用的羡情况下已解多决这个问题絮呢?本设计行采用了以下皇方法,即在狭要响蜂鸣器奥的时候再次味临时规定8艺255各端锤口的输入输浊出情况,响往完蜂鸣器之免后恢复原来宵的状况。具遣体代码如下赠:解MOVA纪L,80H碎抛冬OUT6搞3H,AL序贫蛙;将C口低蹄4位改为输秘出口,以响走蜂鸣器棚否予MOVA酒L,7FH茧热罢;亮原来的触灯份往陷MOVC录L,RND史荒腾RORA敬L,CL别弹追;RND=同0,AL=堤0111托1111-蹈>60H,笑亮D7翁虫放OUT6岂0H,AL溪断蝶;RND=距7,AL=熔1111腹1110-系>60H,停亮D0斩垄摧MOVA显L,05H绣螺蠢OUT6文3H,AL蚀洒弯;PC2=牺1,响蜂鸣明器香肉于CALL失DELAY毅1S枣贤;延时0.而2S,响蜂笑鸣器局爷货MOVA猛L,04H初种窗OUT6赤3H,AL及界豪;PC2=砍0,停响蜂旧鸣器谁振弊MOVA依L,81H兆韵沿;恢复C口伟低4位改为更输入口肥脾白OUT6何3H,AL誉冻劈决辩MOVA畏L,7FH吐纷并;亮原来的绒灯洞MOV户CL,RN刘D左遮R阵ORAL漠,CL拐关曲;RND=植0,AL=化0111水1111-晒>60H,乌亮D7遭冠O唐UT60霜H,AL仇返冬;RND=书7,AL=蝇1111杠1110-徐>60H,酸亮D0女3)梯邻位数群码管间的相就互影响缝写完DIS纯显示子程序值后,四位数泽码管已能正学常显示缓冲返区里的数据聚,但这时我禾发现数码管鲁显示的时候拔存在这么一武个问题:右旗一位的数码估管所显示的搁数据会在左色一位的数码急管投下一定笼的余辉(比究如假设四位贤数码管从右笼到左分别为址第一、二、颜三、四位,胞若第一位显唉示8,第二春位显示1,鱼则第二位数璃码管在显示即1的时a、间d、e、f极段亦有黯淡常的亮度。第及二位对第三属位、第三位与对第四位亦舟是如此)。甚虽然投下的路亮度不是很址大,也基本幼不影响所要忆求的效果,沸但这表明程误序出现了问义题,既然出誓现了问题,鉴就要找出引丝发此问题的认原因,并加呆以改进、解姿决。那为什狗么左边一位出的数码管会航影响右边一军位的数码管锹,而不会是搜右边一位的灭数码管影响随左边一位的重数码管呢?途另外,为什测么会投下黯者淡的亮度而垃不是把右一高位数码管所愉显示的数据克以同样的亮汗度投到左一火位的数码管青上呢?梢通过分析D范IS显示子分程序可知,炎程序在显示希数字时应先掉选通某位数袍码管,然后林再将数字所坊对应的显示必码放进数码遣管中进行显蜡示,其一次次性完整功能目可简要表述搭如下:保1)然选通第一位虚数码管;席2)挪将本位显示巴码送到74如LS07进瞧行锁存,然专后调用DE赠LAY子程旅序延时10贫ms尽,泡因已对显示肤码进行了锁梯存,故延时碧期间被选通深的数码管一饲直显示本位条显示码的对帜应的数字;婆3)母选通下一位选数码管,然刮后重复第曾②勒步,直至四牵位数码管均始完成相应的冠显示工作。血我们知道,毫数码管所显永示的数字的肿亮度是与该旦数字的显示后码加在此数项码管上的时狸间成正比的削,综合上述烧显示过程,涨便很容易发竹现问题的所瞎在:选通第坦一位数码管嘱时,对数字家8所对应的柄显示码(7炼FH)进行孔了锁存,接稠着又选通了繁第二位数码纤管,但此时冷的显示码依悔然是8的显萝示码,因此萝此时第二位滋数码管仍然摘会显示数字战8。只不过津数字8咬所对应的显爷示码很快(叉几条指令的饺时间)被数中字1所对应针的本位显示摔码(3FH栗)所覆盖,耗而且数字1孝的显示码加谜在第二位数葬码管的时间聚DELAY乏子程序的延帐时时间(长破达10ms挂),因此就瞒会在第二位沫数码管上显惰示一个很亮刮的1和一个旨黯淡的8。趁改进后的显殊示子程序如滔下:厌DIS:贝PUS延HAX鉴殖唱笼补PUS财HDX愤正MOV渴SI,O急FFSET楼DISB绒UF敌剥ADD哑SI,3升误MOV退DL,0阻EFH舰愉MOV烈标AL拴,DL骑AGAIN锣:OUT幻62H,钉AL形戏殃;选通数码宋管斤小MOV匪AL,[裕SI]艳擦MOV甚BX,O毒FFSET搞TABL钉E款搬XLA飘T夺拼TES女TDL,洒40H投反JNZ致BACK素宝CAL奋LADD剥DOT巷BACK:特齿OUT6饶1H,AL阔箭;显示盆码放至SE阵G显示诸殿CAL颤LDEL附AY醋翅记MOV菊丹AL匪,0宴飞OUT悟61H,左AL谎某;清除婶锁存器的内幕容壁,此后再次凉选通某位数腥码管后相当柿于灭灯网顺DEC们SI铅廉MOV淡隔AL挎,DL泉题TES饿TAL,旗80H浑要JZ滩OUT1虎祖ROL匪植AL辽,1美签MOV申DL,尼AL观烤JMP批AGAI锻N疗OUT1:隐POP彼DX宋驶POP飘AX顺扯RET阿ADDDO停T:OR块AL,80窑H浴俘RE跌T叶至此,所有划程序调试歉已经基本完猴成。松4.2硬壳件的调试盲过程吨硬件调试的敌难度根据硬古件系统的复土杂程度而不旺同。对于小冲的硬件系统芦,硬件调试菌往往没有程冬序的调试那皱样复杂。而弯对于大的系爱统,过程则敌要相对繁杂个得多。硬件费的调试可以袖采用万用表辽对硬件系统律进行全面的颠检测。湾我在硬件调尸试过程中所念碰到的问题篇主要是导线饿的连接问题晕。比如有一被次我用万用渣表检测到一满根导线两端泰引脚的焊接淡处出现不同匹的电压:一尼处是5V,桌另一处却接塔近0V。因搜为导线顶端腿都涂上了松生香水,因此央不好判断哪庙里出了问题果。于是我在索这条导线上磨的若干位置叹处焊点焊锡茅,再在焊锡倦上蛙用万用表检消测电压,发慰现各处都正纠常。最后发使现到了引脚刊的焊接处电喇压就降为0句V了。仔细诸看看引脚焊笨接处,发现浮颜色比较黑栗,于是再沾聪点焊锡上去枕,再用万用挣表测量电压午,发现此时婚电压为5V缎,正常了。材因此判断应朱该是引脚焊仇接处杂质太鉴多导致了绝阿缘。华还有一次我恭用万用表检昏测一条导线池的电阻时,崭发现电阻值编在数字万用俗表上显示为猎负值,于是升也用以上办眉法加以解决桂,最后仔细赛观察了这条加导线,发现输导线有一处涌与导线怜十字相交的磨非常微小的羊裂痕。将出网现裂痕处用背焊锡填补后节导线工作正瘦常(削产生此问题界的原因可能龟是将PCB让图打印到光约纸时打印质生量不好,蛇导致墨水某场处出现微小简的裂痕,此级时可以采取粗补救措施如堪用油性笔将寒出现裂痕处斯用墨水修补惑完整。也可币能是将光纸辨上的电路连串接图粘在覆有铜板上进行棚热转印时与逗覆铜板粘得以不够紧密,限导致热转印特效果不理想院)。呈还有就是焊疏接时焊接得柔不好,导致昂虚焊等问题升。丙总之,通过涛细致的观察农再加上灵活研应用万用表女一般都能解圾决小系统的慕硬件调试工窑作。参本设计硬件节方面的初衷稻是想将80咽88微处理晕器、825惯5、825德3及825雀9等芯片及侍LED等辅螺助电路阶集合到一块霜PCB板上达构成一个完孝整系统的锈,但由于时规间的关系,越硬件部分只藏实现了将键功盘、LED增电路及启动锯开关集合到梯PCB板上蒸。为了测试我系统的可行风性,只好利捷用TDN8朵6/88+输系统上的各吓种未集合到储板上的芯片该。抚PCB板与黄TDN86姜/88+系圣统的具体连耽线情况为:趋8255-巧PA7~P皇A0---役-PCB-援D7~D0妻8债255-P岂C7~PC脖4----梢PCB-X晌1~X4挖8255-织PC1~P暖C0---诸-PCB-订Y1~Y0助8扶255-P锄C3---吃-PCB-趋KK1阻系统GND希----P辈CB-GN启D捕甲系诞统VCC-群---PC挺B-VCC贯完成连线后巾,将附录二呈的程序代码事进行编译折、天链补接古后加载到系惨统中,运行犯程序。仪当按下启动破键盼PCB上的报启动按键杏时,便进入阵3~15S蠢的延时状态糕,一旦延时文结束,则随乏机亮了某一本LED,此劲时如果按下殖错误的按键休,绿实验系统上每的涝蜂鸣器会发草出滴的一声阀报警江,而若按下蓬正确的按键先,则在直系统上的湿数码管上显戴示反应时间满。她而如果LE它D亮之前已坝按下按键,瑞则数码管显秆示00.0霜0,达到作选弊提示目的奶。如果反应笨时间超过1架00秒,则初数码管上也宪显示00.渣00。馒可见,实验毕结果符合预两期的设计要足求。葵4.3总叶结壁本设计扭设计了一个融以8086丢/8088盏微处理器为握核心,结合洗8255可遗编程并行通驼信接口、8林253可编瑞程定时/计宝数器以及8酷259中断欠控制器等芯截片程,腊利用睡汇编语言棋构建模了一个能测隶试人体反应仁时间的模拟脂系统。在设乔计此系统的荣过程中,从贯最简易的流维程图开始,书在深入分析断相关硬件的呢基础上,一隐步一步按着袜流程图展开大设计思路,让并杨根据作出的跌完整而具体顶化的流程图蔑写出了完整关的程序代码抵,最终勇实现辉相应的毛硬件实物腥,完成系统命的设计。右程序的调试舰过程比较困失难,因为程角序隐藏的微锡小错误都会温使得实际结表果与预期目漆标不符,甚孙至程序不能城运行。因此绣必须花费足忙够多的时间心与耐心,用浅足够坚强的问毅力去分析层并解决所遇碗到的问题。繁调试的过程总不仅要了解蜜各子程序模僚块的功能,弦还要把握模筒块与模块间逗的关系。一宇旦调试出现关错误时,还舅要善于从实独验结果去推仔断导致此结纹果的原因。室另外,调试凉的方法也很季重要,是单籍步调试还是低运行到断点劫的调试也要坡善于选择,瓶因为不同的兆方法所花费帅的时间和所重获得的收益签是不同的,能好的调试方刺法往往可以励得到事半功杨倍的效果。谜由于时间关席系,本设计贸只做出了部牲分硬件实物些,这是一个宅不足之处俘,如果时间蔑允许,我会际继续将剩余六的工作完成那的。丢另外,我觉圣得这个设计主如果用单片僵机来做的话闭应该简单一察些,毕竟汇塘编语言是低仅级语言,与犬硬件联系葛较为产紧密既,险设计时蝴需要考虑的吼硬件因素比迷较多,而且烧程序写起来父也较跌为松繁研琐双。乱因此杏建议用单片触机和C语言驾来构建此系春统。致谢堆感谢确庄哲民拆老师暂和后电子系各位孟老师四年来摔给予我学习什和生活上的殃关怀与滤帮松助,是你们吸用汗水、耐权心及智慧帮段我敲开电子判世界的大门坐,并一直引叠领我向前直迈至现在。压感谢林膜秀卿邮老师在我做重毕业设计期攻间给予我的恶帮助与指导以,以及复在我写出雪论文初稿后判给予绸建议和凝耐缩心的摔修改尤。尖感谢王军老估师帮我修改扔英文售摘辰要里的语法秤错误。夸感谢黄炽同铁学,通过与挎他探讨问题详,使我哨能够提对设计里的组许多问题看多得更清楚。创也感谢他在池硬件方面给辣予我的帮助升。亡毕业设计做维完了,但老椒师荡和取同学们的帮是助我将永远息记在心中。晚再次衷心地近感谢各位,躁谢谢。参考资料:其[1].饮戴梅萼编著委《微型计算衔机技术及应怨用第3版》反清华大学挽出版社2罩003懂[2].慧林秀卿编著颤《微机原理形与接口技术程实验指导》姑汕头大学何出版社2岔004临[3].斑沈美明编著猜《IBM-跃PC汇编语蛇言程序设计酱第2版》将清华大学出滋版社20麻03雾[4].要王爽编著《营汇编语言》喂清华大学寿出版社2斯005火附录一:测支试反应时间弊模拟系统总丈电路图郊附录略二宾:测试反应耳时间模拟系造统程序危;****陈*****零*****谷*****借*****柴*****追*****继*****圈*****尺*****州*****距*****轮*****伞*****白*****幸***周;本程序在短TDN86衰/88+系哑统上自进行撞测试时的接仅线情况冷及相关说明隙:值;顽KK1幼启动键接芝PC3,可键盘裤上排茎四个

温馨提示

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

评论

0/150

提交评论