微机8253秒表课程设计报告.doc

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
. Word 资料 秒表程序设计 摘要:本课程设计旨在设计一个秒表计时并储存计时的程序,可控制秒表的计时开始及结束,实现秒表的准确计时,存储计时数据,翻阅计时数据,清除计时数据等功能。本程序是基于8086微机系统设计,在Masm for Windows软件下采用汇编语言编写,通过选择8253定时器0,工作方式3,输出周期为10ms的方波,产生稳定延时,调用各种中断完成程序各逻辑模块设计,通过键盘扫描得到输入的值,执行对应功能。每10ms计时一次,每60秒一次循环,存储数据设定为最多20组,可随时存入数据,操作自由度极高,经测试,60秒计时误差不超过1.2%,可实现准确计时及存储功能。 关键字:秒表、显示计时、存储计时 、汇编 设计任务分析与方案选择 本设计需实现秒表稳定计时,并显示,需要存储计时数据时可立即将当前计时数据存入缓冲区,暂停计时时立即结束并可复位或者继续计数或者查看存储数据,在查看数据时可前后翻阅存储数据,并可清除,当退出查看数据后可使秒表继续计数或复位。 方案选择 系统硬件设计选择 本设计采用8253定时器0,工作方式3获得周期为10ms的稳定计时单位,使用8086CPU进行译码,当定时到1s的时候产生一个中断信号,在中断服务程序进行秒的计数,并送入相应的存储单元,8259芯片提供中断,并用8255的A口接七段数码管的段选信号,B口接七段数码管的位选信号。 系统软件设计选择 在代码实现上,对于按键的输入上可以直接读取或是先扫描键盘再读取,本设计只存在各逻辑功能之间的转换,因此选择先扫描键盘再读取的方法,可提高代码的容错率及可操作性;使用宏定义及光标定位的方法,并配合各种中断设计界面图形及字体颜色,宏定义可以减少代码的重复度,且便于修改功能,可任意调用,通过定位光标可确定输出位置,可实现同一位置的动态输出;对于时间的扫描,可以选择直接读取系统当前的时间或是读取系统时钟的计时单位,前者的读取直接是BCD码非常便于输出显示,后者需要不停的读取计时单位读取次数非常多,而且结果不是BCD码,需要做判断转换输出,此设计采用读取系统时钟的计时单位,虽然需要不停的读取计时单位读取次数非常多,而且结果不是BCD码,需要做判断转换输出,但是经过与实际情况比较,后者的计时更为准确,区分度更大。 2 详细设计 2.1 理论分析与计算 此设计需要实现单位为1秒的秒表稳定计时,8253定时器0工作方式3,外部提供一个时钟作为CLK信号,频率f=1.1931816MHz,为得到周期为10ms的方波,应对8253定时器设置计数初值为1.1932×10×10^-3=11932。因此,8259A每隔10ms向CPU申请一次中断。可用10作为基本计时单位,此设计的毫秒每一个计时单位改变一次,要达到 1秒的计时,需要的计时单位为:1000ms/10=100,则计数满足100个计时单位时,即毫秒计时到100时,秒位加1,完成1秒稳定计时。 2.2 算法设计 本设计的算法包括键盘检测及读取、秒表计时及输出,数据存储、数据操作、界面及提示词设计。 2.2.1 键盘检测及读取 使用21H中断的0BH中断检测是否有键盘按下,如果没有键盘按下则继续检测,如果有键盘按下使用21H中断的08H中断判断是否为所设定的值,如果不是,继续检测输入,如果是便按逻辑进行。 2.2.2 秒表计时及输出 使用8253定时器0,工作方式3获得的周期为,10ms的方波作为计时单位,调用1CH中断,读取1CH原中断向量,并设置中断向量,取计时处理程序偏移地址及段地址,计时处理程序中毫秒加一直到100ms,秒位便加一,毫秒清零,继续计时。 定位光标,在光标位置输出计时,显示格式为00:00:00,计时显示采用高位低位分开显示,将计时数值除以10,得到商和余数,商作为高位,余数作为低位,当计时单位满1后,毫秒位加1毫秒,毫秒计时到100,秒位加1并动态显示。 2.2.3 数据存储 在数据段中定义一个大小为40字的全为0的缓冲区用于存储计时数值,在代码段中合适位置取缓冲区的偏移地址给寄存器,存储方式采用高位低位分开存储的方式,将秒数值除以10,商存前一个字节,余数存后一个字节,存完高位后寄存器指向下一个字节存低位,低位存完之后寄存器再指向下一字节,用于存储毫秒计时的高位。 2.2.4 数据操作 定义光标,取缓冲区的偏移地址给寄存器,在合适位置从第一次存储的数据开始显示,此时寄存器指向第一个字节,调用21H的0BH检测键盘输入,如有键盘输入,调用21H的08H检测键入值,当接收操作为查看下一个存储数据时,寄存器加2,指向下一组数据的高位,并调用21H的09H中断显示当前数值,寄存器加一,调用21H的09H中断显示当前所指数据;当接收操

文档评论(0)

ygxt89 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档