微机课程设计(秒表+).docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目 录 设计任务-------------------------------------------------------------3 设计原理-------------------------------------------------------------3 2.1 原理概述 2.2 延时原理 2.3 显示字符及字符串原理 2.4 压缩BCD码转为ASCII原理 2.5 动态扫描键盘原理 设计流程图----------------------------------------------------------4 3.1 主程序流程图 3.2 各子程序流程图 源程序运行结果---------------------------------------------------- 7 程序调试--------------------------------------------------------------8 心得体会--------------------------------------------------------------9 参考书目--------------------------------------------------------------9 附录(源程序代码)-----------------------------------------------10 一、设计任务 具有秒和百分之一秒计时并显示于图案中央 具有启、停功能 具有复位功能 4.具有记忆功能 5.具有整分报时功能 二、设计原理 2.1 原理概述 通过调用INT 21H的8号功能实现控制字符的输入,通过调用延时程序实现百分之一秒的定时,通过调用INT 10H 的2号功能实现光标定位,调用INT 21H 的2号功能实现字符的输出,通过调用INT 21H 的9号功能实现字符串的输出。 2.2 延时原理 本设计利用软件实现延时,即通过可控制的循环来占用CPU的时间来实现延时。延时函数名为TIME,运用内外两层循环,外循环由AX中的数值来控制,内循环有CX中的值来控制。实现不同延时的控制,通过反复比较调试,确定AX的值为0EFH,CX的值为0FFFFH。 2.3 显示字符及字符串原理 整个屏幕可显示25行、80列字符,屏幕左上角字符位置为0行0列,右下角字符位置为24行79列,对应于十六进制为:左上角为(0,0),右下角为(18,4F)。定位光标用INT 10H 的2号功能,DH中存行号,DL中存列号,BH中存页号。显示字符用INT 21H的2号功能,DL中存放要显示字符的ASCII码。显示字符串用INT 21H的9号功能,DX中存要显示的字符串的偏移地址。 2.4 压缩BCD转为ASCII原理 先将压缩BCD码的高4位取出,右移四位后,与30H相或,存到相应内存单元;然后将低4位取出,与30H相或,存到下一内存单元。 2.5 动态扫描键盘原理 运用INT 21H的8号功能来实现动态扫描键盘。如果有键按下,则相应的键值的ASCII码被存到AL中。判断AL中的数值,若不是控制字符,则继续循环,从而实现动态扫描键盘。 一、程序流程图 3.1主程序流程图 3.2 子程序流程图 四、源程序运行结果图 4.1 程序执行效果图 五、程序调试 1、主程序的调试 本方案的设计思路是先写好各子程序再写主程序,因此必须明确何时调用子程序,否则会出现逻辑错误。何种寄存器需要保护,取决于子程序在主程序中的位置以及该寄存器在主程序中的作用,要尽量少用堆栈操作以提高效率。 主程序调试的另一重要内容是如何实现控制字符的各种功能。我们组使用DOS系统功能调用的8号功能,该功能将键盘输入存入AL寄存器,通过判断寄存器中是否为控制字符来判断是否有字符输入,若AL中为随机数则无输入。 主程序的控制字符为大写字符,一开始我们没有用大写字母锁定,按什么键都不能启动,以为程序有问题,几经修改,浪费了很多时间。 主程序使用压缩BCD码做的加法,再用DAA进行调整,这时要注意DAA只能对AL中的结果进行调整,因此只能用AL做加法,再将数据传送过去。 2、延时子程序的调试 延时程序的时间并没有经过精确计算,因此只能用试探法逐渐增加或减小AX值。我们组是每十秒与标准时间(手机秒表)比较一次,程序走的比较快因此应逐渐增加AX值,最终选定AX= 0EFH 。当然了人总有一定的反应时间,不可能做到十分精准,但是在误差允许范围之内就可以了。 3、图形显示程序的调试 我们组的图形显示使用了宏调用,主要因为它可以方便的传递参数,图形显示需要大量重复性程序使用宏定义可以节约编程时间,又可以让程序更简洁。调

文档评论(0)

ipad0c + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档