2022年2022年课程设计计时器汇编语言程序设计!! .pdf

上传人:Che****ry 文档编号:34257297 上传时间:2022-08-15 格式:PDF 页数:17 大小:561.90KB
返回 下载 相关 举报
2022年2022年课程设计计时器汇编语言程序设计!! .pdf_第1页
第1页 / 共17页
2022年2022年课程设计计时器汇编语言程序设计!! .pdf_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《2022年2022年课程设计计时器汇编语言程序设计!! .pdf》由会员分享,可在线阅读,更多相关《2022年2022年课程设计计时器汇编语言程序设计!! .pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、计时器汇编语言程序设计1.总体方案论证1.1 计时方法的选择(1)通过调用系统时钟来完成计时功能,这样就必须每秒或者每更短的时间调用系统时钟然后进行相减操作才能达到计时的每秒时时显示动态时间,虽然理论上可以实现计时功能,但是会比较的麻烦。(2)通过调用系统的 08h 号或者 1ch 号中断来进行设置, 使其能够产生 100Hz即 10ms一次的中断,同时修改原08 号中断的入口地址,使其每次中断执行一次计时的中断服务程序,进而动态显示时间。这种方法不仅简单易行,而且较方便。经过以上论证,决定采用第二种方案来实现计时器功能。1.2 键盘按键输入的检测在主程序中,通过先检查键盘是否有输入,如果没有

2、输入,则跳过检查键盘输入的键值的程序,如果有输入则比较输入为“S”或“s”键,“P”或“p”键,“G ”或“g”键,“C ”或“c”键,“ESC ”键中的哪个键,进而执行相应键值对应的实现该功能的程序,达到开始,暂停,继续,清零,退出的功能。1.3 显示计时的时间考虑到更加直观的显示计时器的计时功能,让其显示的时候将百毫秒和十毫秒位也显示出来,使计时功能更加准确。所以在设计计时器的计时最小单位时,就要使中断频率设置为 100Hz ,即 10ms一次中断。于是显示的计时单位就是“时:分:秒:十毫秒”。同时设置光标位置使其显示在屏幕中央。名师资料总结 - - -精品资料欢迎下载 - - - - -

3、 - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书11.4 时间的进位处理当十毫秒位超过9 时候,要对百毫秒位进行加1 操作,如果百毫秒位超过9 时,要对秒位进 1,当秒位超过 9 时,对十秒位进 1,如果十秒位超过 5 时,才对分钟位进 1,分钟位超过 9 时,对十分钟位进1,如果十分钟位的超过5 时,对小时位进1。小时位的进位设计就要考虑到小时最多24 的特殊性了,所以设置一个变量,在小时位加1 的同时给它也加 1,如果这个变量加到了24

4、则重新开始计时,此时再把该变量的置零。1.5 显示的形式为了使计时器的显示界面更加直观更加清楚,所以可以在int10h的情况下将 AH赋值为 0,同时置 AL为 10H将显示方式设置为640350 彩色图形,而且为全屏显示,同时颜色通过在 int10H的情况下将 AH赋值为 0BH ,同时置 BL为 04H可以将屏幕背景颜色设置为红色,这样计时器会更加醒目。2.程序流程图设计及其说明2.1 主程序流程图如图 2-1 主程序流程图所示,主程序是用来完成屏幕初始化(清屏和显示初始界面),同时对键盘按下的键值进行检测判断,进而执行相应键值所对应的程序,达到开始,暂停,继续,清零,退出的功能。2.2

5、中断服务子程序流程图如图 2-2 中断服务子程序流程图所示,中断服务子程序的功能是每次中断执行一次该程序,对十毫秒位、百毫秒位、秒位、十秒位、分钟位、十分钟位、小时位和十小时位进行加 1 和判断是否进位操作,即达到该时间的情况下就给该时间对应位进行加1 操作,使其能够显示正确的动态的时间。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书2清屏显示提示语和初始时间00:00: 00:0

6、0读字符开中断计时,显示动态时间按下 s 键?按下 p 键?按下 c 键?按下 g 键?按下 Esc 键?停止计时显示暂停时间清零,显示初始时间在原暂停情况下继续计时YYYYYNNNNN开始退出图 2-1 主程序流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书3中断进入十毫秒位加1十毫秒位小于10?百毫秒位小于10?秒位小于10?十秒位小于6?分钟位小于10?十分钟位小于6?小

7、时位加 1, N 加 1(N 初值为 0)十分钟位加1百毫秒位加1秒位加 1十秒位加1分钟位加1十小时位加1退出中断服务程序N24?各位置零且 N=0十 小 时位3?YNYYYYYNNNNNNNYY图 2-2 中断服务子程序流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书43.软件设计关键问题和部分程序段落的说明3.1 判断键盘输入的键值由于要实现键盘按下不同的键值实现各种不同

8、的功能,所以判断键盘输入的为哪个键就显得尤为主要, 所以使用了以下代码进行键盘输入键值判断。首先检查键盘是否有输入,若没有输入,则跳过检查键盘输入的键值的程序,若有输入则比较输入为何种键,接着执行该键值对应要完成的功能的程序。movah, 0bh; 检验键盘状态,有输入al=00,无输入 al=0ffhint21hincaljnzs1movah, 08h;键盘输入无回显,(al )=输入字符int21hcmpal, 1bh; 按下 Esc键结束程序jegooutcmpal, p; 按下 p键停止计时jepausecmpal, P; 按下 p键停止计时jepausecmpal, c; 按下 c

9、键清零jeclearcmpal, C; 按下 C键清零jeclearjmps13.2 获得 08H 号中断原入口地址,设置其新入口地址由于要使用 08H号中断来实现,计时功能,所以首先要获得08H号中断的原来的入口地址,AL里存中断类型号,将其存在了ES:BX里,接着设置其新入口地址,将新的中断向量存在 DS:DX里就可以实现设置新入口地址。具体的代码实现如下:moval, 08hmovah, 35h; 获取 08h号中断的原入口地址int21hpushespushbx名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理

10、 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书5pushdsmovax, seg int08hmovds, axmovdx, offsetint08h; 设置 08h 号中断的新入口地址moval,08hmovah,25hint21h; 调用 08h 号中断的服务程序popds3.3 设置中断屏蔽寄存器中断屏蔽寄存器的I/O 端口地址是 21H,它的 8 位对应控制 8 个外部设备。某位为0 允许某外部设备中断,为1 则表示某外部设备的中断请求被屏蔽。图 3-3中断屏蔽寄存器由上图可以看出要使键盘和定时器

11、允许外部中断,则令其对应的位置零,同时使其他设备不允许外部中断。于是可通过以下代码进行设置:inal,21hpushaxmoval, 11111100bout21h,al3.4 设置中断频率为100Hz由以上要求知道需要使系统内部8253输出方波频率为100Hz ,所以要对 08H号中断设置,使其能够 10ms一次中断,同时要使其工作在通道0方式 3 的方波发生器。 8253 是微机系统常用的定时器芯片,它有三个独立的16位减法计数器,每个计数器分配一个端口地址,分别为 40h,41h,42h 。还有一个控制寄存器,端口地址为43h。名师资料总结 - - -精品资料欢迎下载 - - - - -

12、 - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书6把中断子程序的段地址和偏移地址送到08H中断向量中,由于 08H中断向量硬件中断,计数器 0 的输出端 OUT 与中断控制器 8259A的一位相连每秒中断18.2 次, 故需要把 18.2HZ改为 100HZ ,而 CLK0的输入频率是1.1931817MHZ ,故需把 1.1931817 除以 100 的初始值送到 40H端口就可以实现每秒100次的中断。所以设置计数初值为11932,这样就

13、可以达到 10ms中断一次。实现该功能的代码如下:moval, 00110110b;设置通道 0 的方式 3out43h,almovax, 11932; 定时器的时钟频率为1.1931817MHz ,;计数初值= 1193182 /100=11932out40h,almoval, ahout40h,al3.5 判断计时的进位当十毫秒位超过9 的时候,要对百毫秒位进 1,如果百毫秒位超过9 时,要对秒位进 1,当秒位超过 9 时,对十秒位进1,如果十秒位超过5 时,才对分钟位进1,分钟位超过9时,对十分钟位进1,如果十分钟位超过5 时,对小时位进1。小时位的进位设计就要考虑到小时最多 24 的特

14、殊性了,所以设置一个变量,在小时位加1 的同时给它也加 1,如果这个变量加到了 24 则重新开始计时,此时再把变量置零。实现此部分功能的程序代码如下:incmsec2;十毫秒位加 1cmpmsec2,3ah;十毫秒位是否小于100jbtmovmsec2,30hincmsec1cmpmsec1,3ah;百毫秒位是否小于10jbtmovmsec1,30hincsec2cmpsec2,3ah;秒位是否小于 10jbtmovsec2,30hincsec1cmpsec1,36h;十秒位是否小于6名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -

15、- 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书7jbtmovsec1,30hincmin2cmpmin2,3ah;分钟位是否小于10jbtmovmin2,30hincmin1cmpmin1,36h;十分钟位是否小于6jbtmovmin1,30hinchou2incncmpn, 24;比较是否到了 24 小时,到了就跳到清零程序jzqinlingcmphou2,3ah;小时位是否小于 10jbtmovhou2,30hinchou1cmphou1,33h;十小时位是否小于3jbtmovhou1

16、,30ht:moval,20hout20h,al; 中断结束命令popdspopaxiret3.5 如何暂停和继续计时要暂停计时器, 实际上是在暂停发生中断时显示的时间的加1 操作,所以可以设置 08h号中断的入口地址使其不进入计时中断服务程序进行加1 操作,这样就能达到暂停计时的功能。同理使其继续计时也是设置08h 号中断的入口地址,使其继续进入计时中断服务程序就可以继续进行计时了。实现此功能的代码如下:pause:popaxout21h,alpopdx; 把 bx 送到 dx,原中断向量存在ES:BX中popbx名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -

17、- - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书8pushdsmovds,bxmoval,08hmovah,25h; 设置 08h 号中断入口地址为保存下来的原入口地址int21hpopdsaa1:movah, 08h; 键盘输入无回显, al=输入字符int21hcmpal,1bh; 按下 Esc 键结束程序jegooutcmpal,g; 按下 g 键继续程序jejixucmpal,G; 按下 G键继续程序jejixujmp aa1jixu:jmpq14.程

18、序调试说明、结果记录及分析4.1 运行初始界面运行程序后得到的初始界面如下:图 4-1程序运行初始界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书94.2 按下按下“s”键开始计时界面如下图为在键盘上按下“ s”键时的图像图 4-2按下“ s”键开始计时图4.3 按下按下“p”键进行暂停操作在计时器正常工作时按下“p”键可以使其时间暂停,得到如下图像:图 4-3按下“ p”键暂停

19、界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书104.4 按下按下“g”键继续计时在计时器被暂停的情况下,按下“g”键即可实现继续计时的功能。其图像如下:图 4-4按下“ g”键继续计时界面4.5 按下按下“c”键进行清零操作在计时器正常运行显示计时动态时间的时候,按下“c”键可以清零,以便进行进行第二次计时,其图像如下:图 4-5按下“ c”键清零后界面名师资料总结 - -

20、 -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书114.6 按下按下“Esc ”键退出在计时器工作的任何时候,按下“Esc”键均可以退出程序。5.课程设计收获及心得体会经过两个星期的课程设计, 的确收获了很多, 感觉自己对于微机原理与接口技术这门课程有了更加深刻的认识。 因为把平时所学的知识应用于实践真的会遇到很多问题,当然也会发现很多乐趣在其中。可以说整个设计中最麻烦的就是设置中断频率为100Hz

21、,同时使其能够进入中断服务子程序执行计时功能。这个就要不断的多次调试才能发现到问题究竟出在哪里。解决了这个问题之后对于如何暂停计时器也想了好多办法,也调试了很多次。最终通过将原中断向量入口地址进行修改,使其不再进入计时中断服务子程序就达到了要求。进位条件的判断,编程中仔细思考也就没有问题。另外对于中断服务子程序的类型设置问题, 由于以前对这个概念的理解记得不清楚,于是找出课本再次进行研究。在程序设计和算法实现上要多方面思考,全面的考虑问题,最好画好程序流程图,这样就能达到事半功倍的效果。 同时上机调试也是十分重要的,在调试的过程中能够不断的发现在编写算法时应该注意的一些细节和算法语句的非法使用

22、,在调试过程中通过对算法的不断测试、更正、扩充功能、修饰细节,使算法程序不断的得到完善。通过这次的课程设计使我认识到要将微机原理与接口技术这门专业课学好不仅仅是要把书上的基本知识学好而且还要不断进行实践,将所学的跟实践操作结合起来才能更好地巩固所学,才能提高自己的实践能力。而且在实践过程中通过查找资料、分析资料以及请教老师和同学,使一些不清楚的问题得以解决,这一点也是非常重要的。当然最关键的还是要靠自己亲自去领会思考如何解决问题,掌握独自面对问题分析问题的方法。不少人抱怨在大学学不到东西,我并不这样认为。我想无论是在学习还是在生活上只有自己真正用心去学习和参与才可能有收获,这也算是课设给我知识

23、之外的一点小小的感悟。总之本次课程设计的收获确实良多,很珍惜这样的的机会,因为可以锻炼自己提升自己。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书12参考文献1 周佩玲,彭虎,傅忠谦著 . 微机原理与接口技术(基于16 位机). 北京:电子工业出版社, 20052 钱晓捷著 . 汇编语言程序设计学习与解题指南. 武汉:华中科技大学出版社,20023 黄明,粱旭,常征著 . 汇编语

24、言程序设计习题详解. 北京:机械工业出版社, 20044 王永山,杨宏五,杨婵娟著. 微型计算机原理与应用(第二版). 西安:西安电子科技大学出版社, 2006名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书13附录(程序清单 )datasegmenthou1 db 0hou2 db 0mwdb:min1db0min2db0mdb:sec1db0sec2 db0m2db:msec1

25、db0msec2db0countequ $-hou1hdb0sail db Copyright by yangfan.hello db Welcome to usethe calculagraph ofsail. tishidbs:startp:pauseg:continueEsc:exitc:cleardataendscode segmentmain proc farassumecs:code,ds:datastart:movax,datamovds,axmov ah,1;置光标类型,不显示光标movch,20hint10hcallclean_screenpush axpush bxmov

26、ah,0mov al,10h;设置 640*350 彩色图形方式int 10hmov ah,0bhmov bh,0;设置背景颜色为红色mov bl,04hint 10hpop axpop bxmovdh,0;行号movdl, 0;列号movbh,0;页号movah, 2;置光标位置int10hmovcx,48movsi,offsethelloshow2:mov ah,0eh;显示字符(光标前移),al字符, bl 前景moval,siint10hincsiloopshow2movdh,2;行号movdl, 0;列号movbh, 0;页号movah, 2;置光标位置int10hmovcx,80m

27、ovsi,offsettishishow3:mov ah,0eh;显示字符(光标前移),al 字符, bl 前景色moval,siint10hincsiloopshow3calllocate_cursorcallshowq2:movah,08h;键盘输入无回显, al= 输入字符int21hcmpal,1bh;按下 Esc 键结束程序jegoout1jmp yygoout1:movah,4chint21hyy:cmp al ,s;按下 s键开始计时je q1cmp al ,Sje q1jmp q2名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -

28、- - - - 名师精心整理 - - - - - - - 第 14 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书14q1:cli;使 IF 清零moval,08hmovah,35h;获取 08h 号中断的原入口地址int21hpushespushbxpushdsmovax,segint08hmovds,axmovdx,offset int08h;设置 08h 号中断的新入口地址moval,08hmovah,25hint21h;调用 08h 号中断的服务程序popdsinal,21h;PC 机中的8253 端口地址为40H-43H ,这段程序

29、应该是给8253 初始化和写定时初值pushax;Intel 公司的 8253 是微机系统常用的定时器芯片,它有三个独立的16 位减法计数器,每个计数器分配一个端口地址,分别为 40h,41h,42h。还有一个控制寄存器,端口地址为 43hmoval,11111100bout21h, almoval,00110110bout43h, almovax,11932;定时器的时钟频率为1.193187MHz ,计数初值= 1193187/ 100=11932out40h, almoval,ahout40h, alstis1:calllocate_cursorcallshowmovah,0bh; 检验

30、键盘状态,有输入al=00,无输入al=0ffhint21hincal;jnzs1movah,08h;键盘输入无回显, al= 输入字符int21hcmpal,1bh;按下 Esc键结束程序jegooutcmpal,p;按下 p键停止计时jepausecmpal,P;按下 p键停止计时jepausecmpal,c;按下 c 键清零jeclearcmpal,C;按下 c 键清零jeclearjmps1clear:popaxout21h,alpopdx;把 bx 送到 dxpopbxpushdsmovds,bxmoval,08hmovah,25hint21hpopdsmovh,0movmin1,3

31、0hmovmin2,30hmovsec1,30hmovsec2,30hmovmsec1,30hmovmsec2,30hjmpstartpause:popaxout21h,alpopdx;把 bx 送到 dx,原中断向量存在ES:BX 中popbxpushdsmovds,bxmoval,08hmovah,25hint21hpopdsaa1:movah,08h;键盘输入无回显, al= 输入字符int21h名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 17 页 - - -

32、 - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书15cmpal,1bh;按下 Esc 键结束程序jegooutcmpal,g;按下 g 键继续程序jejixucmpal,G;按下 g 键继续程序jejixujmp aa1jixu:jmpq1goout:popaxout21h,alpopdx;把 bx 送到 dxpopds;把 es送到 dsmovax,2508hint21hmoval,00110110bout43h, alsubal,alout40h, alout40h, almovah,4chint21hmainendpint08hprocnear;使 用8253/82

33、54 定时器 0 的中断类型8 计时,以 100 次/s 的频率发出中断,相当于一次中断10mspushaxpushdsmovax,datamovds,axincmsec2cmpmsec2,3ahjbtmovmsec2,30hincmsec1cmpmsec1,3ahjbtmovmsec1,30hincsec2cmpsec2,3ahjbtmovsec2,30hincsec1cmpsec1,36hjbtmovsec1,30hincmin2cmpmin2,3ahjbtmovmin2,30hincmin1cmpmin1,36hjbtmovmin1,30hinchou2cmphou2,3ahjbtmov

34、hou2,30hinchou1cmphou1,36hjbtmovhou1,30ht:moval,20hout20h,al; 中断结束命令popdspopaxiret;中断返回int08hendp;中断服务程序结束clean_screenproc nearpushaxpushbxpushcxpushdxmovah,6;屏幕初始化或向上滚动moval,0;清屏movbh,0;滚入行属性movch,0;左上角行号movcl,0;左上角列号movdh,24;右下角行号movdl,79;右下角列号int10hpopdxpopcxpopbxpopaxretclean_screenendplocate_cu

35、rsor proc nearpushdx名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 17 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书16pushbxpushaxmovdh,12;行号movdl,33;列号movbh,0;页号movah,2;置光标位置int10hpopaxpopbxpopdxretlocate_cursor endpshow proc nearpushcxpushbxpushsipushaxmovsi,offsethou1movcx,countshow1:mov bl,7mov ah,0eh;显示字符(光标前移) ,al 字符, bl 前景色moval,siint10incsiloopshow1popaxpopsipopbxpopcxretshow endpcode endsend start名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 17 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁