微机原理课程设计计时器汇编语言程序设计!!.doc

微机原理课程设计计时器汇编语言程序设计!!.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计时器汇编语言程序设计 1.总体方案论证 1.1计时方法的选择 (1)通过调用系统时钟来完成计时功能,这样就必须每秒或者每更短的时间调用系统时钟然后进行相减操作才能达到计时的每秒时时显示动态时间,虽然理论上可以实现计时功能,但是会比较的麻烦。 (2)通过调用系统的08h号或者1ch号中断来进行设置,使其能够产生100Hz即10ms一次的中断,同时修改原08号中断的入口地址,使其每次中断执行一次计时的中断服务程序,进而动态显示时间。这种方法不仅简单易行,而且较方便。 经过以上论证,决定采用第二种方案来实现计时器功能。 1.2键盘按键输入的检测 在主程序中,通过先检查键盘是否有输入,如果没有输入,则跳过检查键盘输入的键值的程序,如果有输入则比较输入为“S”或“s”键,“P”或“p”键,“G”或“g”键,“C”或“c”键,“ESC”键中的哪个键,进而执行相应键值对应的实现该功能的程序,达到开始,暂停,继续,清零,退出的功能。 1.3显示计时的时间 考虑到更加直观的显示计时器的计时功能,让其显示的时候将百毫秒和十毫秒位也显示出来,使计时功能更加准确。所以在设计计时器的计时最小单位时,就要使中断频率设置为100Hz,即10ms一次中断。于是显示的计时单位就是“时:分:秒:十毫秒”。同时设置光标位置使其显示在屏幕中央。 武汉理工大学《微机原理与接口技术》课程设计说明书 1.4时间的进位处理 当十毫秒位超过9的时候,要对百毫秒位进行加1操作,如果百毫秒位超过9时,要对秒位进1,当秒位超过9时,对十秒位进1,如果十秒位超过5时,才对分钟位进1,分钟位超过9时,对十分钟位进1,如果十分钟位的超过5时,对小时位进1。小时位的进位设计就要考虑到小时最多24的特殊性了,所以设置一个变量,在小时位加1的同时给它也加1,如果这个变量加到了24则重新开始计时,此时再把该变量的置零。 1.5显示的形式 为了使计时器的显示界面更加直观更加清楚,所以可以在int10h的情况下将AH赋值为0,同时置AL为10H将显示方式设置为640×350彩色图形,而且为全屏显示,同时颜色通过在int10H的情况下将AH赋值为0BH,同时置BL为04H可以将屏幕背景颜色设置为红色,这样计时器会更加醒目。 2.程序流程图设计及其说明 2.1主程序流程图 如图2-1主程序流程图所示,主程序是用来完成屏幕初始化(清屏和显示初始界面),同时对键盘按下的键值进行检测判断,进而执行相应键值所对应的程序,达到开始,暂停,继续,清零,退出的功能。 2.2中断服务子程序流程图 如图2-2中断服务子程序流程图所示,中断服务子程序的功能是每次中断执行一次该程序,对十毫秒位、百毫秒位、秒位、十秒位、分钟位、十分钟位、小时位和十小时位进行加1和判断是否进位操作,即达到该时间的情况下就给该时间对应位进行加1操作,使其能够显示正确的动态的时间。 1 武汉理工大学《微机原理与接口技术》课程设计说明书 图2-1主程序流程图 2 武汉理工大学《微机原理与接口技术》课程设计说明书 图2-2中断服务子程序流程图 3 武汉理工大学《微机原理与接口技术》课程设计说明书 3.软件设计关键问题和部分程序段落的说明 3.1判断键盘输入的键值 由于要实现键盘按下不同的键值实现各种不同的功能,所以判断键盘输入的为哪个键就显得尤为主要,所以使用了以下代码进行键盘输入键值判断。首先检查键盘是否有输入,若没有输入,则跳过检查键盘输入的键值的程序,若有输入则比较输入为何种键,接着执行该键值对应要完成的功能的程序。 mov int inc jnz mov int cmp je cmp je cmp je cmp je cmp je jmpah,0bh21hals1ah,08h21hal,1bhgooutal,'p'pauseal,'P'pauseal,'c'clearal,'C'clears1;检验键盘状态,有输入al=00,无输入al=0ffh;键盘输入无回显,(al)=输入字符;按下Esc键结束程序;按下p键停止计时;按下p键停止计时;按下c键清零;按下C键清零 3.2获得08H号中断原入口地址,设置其新入口地址 由于要使用08H号中断来实现,计时功能,所以首先要获得08H号中断的原来的入口地址,AL里存中断类型号,将其存在了ES:BX里,接着设置其新入口地址,将新的中断向量存在DS:DX里就可以实现设置新入口地址。具体的代码实现如下: moval,08h movah,35h;获取08h号中断的原入口地址 int21h pushes pushbx 4 武汉理工大学《微机原理与接口技术》课程设计说明书 push mov mov mov mov mov int popdsax,segint08hds,axdx,offsetin

文档评论(0)

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

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

1亿VIP精品文档

相关文档