微机原理电子秒表课程设计报告_第1页
微机原理电子秒表课程设计报告_第2页
微机原理电子秒表课程设计报告_第3页
微机原理电子秒表课程设计报告_第4页
微机原理电子秒表课程设计报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、微机原理课程设计电子秒表一、设计内容与要求 21.1 设计要求1.2 附加功能二、设计原理 22.1 原理概述2.2 延时原理2.3 字符及字符串显示原理2.4 压缩bc加转为ascii原理2.5 动态扫描键盘原理2.6 整分报时原理2.7 记忆功能原理三、程序流程图 43.1 主程序流程图3.2 各子程序流程图四、源程序及运行结果7五、程序调试7六、心得体会 8七、参考资料 10八、附录(源程序代码)10一、设计内容与要求1.1 设计要求1. 具有秒和百分之一秒计时并显示于图案中央2. 具有启/停、复位功能1.2 附加功能1. 具有记忆功能,可实现分别记时功能2.具有正分报时功能二、设计原理

2、2.1 原理概述通过调用int 21h的8号功能实现控制字符的输入,2号功能实现字符的输出,9号功能实现字符串的输出。通过调用int 10h的2号功能实现光标定位,ah=0h1功能设置显示方式、ah=7h号功能实现向下滚屏、ah=13h号功能实现彩色输出。利用系统执行指令的时钟 周期,编写延时程序,通过调用延时程序实现一秒的计时。使用到的中断列表如下:中断号ah=设置功能调用参数返回参数10h00h设置显示方式al=03h彩色文本方式(80 * 25)cga02h黄尤林仪直dh 口1=行(024)、歹u ( 079)bh=显不虫06h向上滚屏al上卷行数ch窗口左上角行号cl窗口左上角列号dh

3、窗口右下角行号dl窗口右卜角列号dh窗口显示属性08h键盘写入字符al喻入字符21h(无回显)09h显示字符串ds:dx绫冲区首址2.2 延时原理本设计利用软件实现延时, 即通过可控制的循环来占用 cpu的时间来实现延时。 延时函 数名为time,运用内外两层循环,外循环由 ax中的数值来控制,内循环有 cx中的值来控 制。实现不同延时的控制,通过反复比较调试,确定 ax的值为0140h, cx的值为0ffffh另外界面显示时的动画设置也是通过延时来完成的,此时参数设置为ax值为0ffffhcx值为 0ffffh2.3 字符及字符串显示原理字符及字符串输出采用int 10h o首先,调用中断i

4、nt 10h中的ah=3号功能,将屏幕 显示方式为80*25彩色文本方式。界面、时间、日期均是以字符串的形式输出。字符串的输出思想是:先定位后输出。定位光标用int 10h中ah=2号功能,dh中存的中行号,dl中存的是列号,bh中存页号。整 个屏幕有25行80歹u,对应的16进制为:左上角为(0,0),右下角为(18,4f)。显示字符 串用int 21h的ah=13h#功能。bp中存放输出字符串的偏移地址, dx中存放输出区域的起 始行列号。由于程序中要多次运用到光标定位和字符串输出,为了让代码更加简洁,把字符串的定位和输出定义为宏 dis2,其中形参分别为定位坐标和字符串首址。2.4 压缩

5、bc加转为ascii原理时间和日期是以字符串形式输出的, 所以要将分、秒、百分之一秒变量的值转化成 ascii 码存入字符串中输出。先将压缩 bcd码的高4位取出,右移四位后, 与30h相或,存到相应 内存单元;然后将低 4位取出,与30h相或,存到下一内存单元。2.5 动态扫描键盘原理运用int 21h的8号功能来实现动态扫描键盘。如果有键按下,则相应的键值的ascii 码被存到al中。判断al中的数值,若是控制字符,判断是哪个控制字符, 并执行相应语句; 若不是控制字符,则继续循环,从而实现动态扫描键盘。2.6 整分提示原理每当存放秒的寄存器 dh的值为60时,调用提示音程序响提示音。已知

6、 ascii码是07h的字符代表响铃,调用中断 int 21h中的ah=2号功能输出该字符即可实现。2.7 记忆功能原理该功能是在按下 r复位键以后将该时刻的计时时间记录并显示在记录区域,记录区域中最多能同时显示10个记录时间,多于10个时利用清屏功能将其覆盖, 以便重新记录一组数 据。该功能是通过滚屏实现的。int 10h中的ah=06号功能是向下滚屏。滚屏区域由cx和dx决定。cx记录区域左上方点的坐标,dx确定区域右下角点的坐标, al确定下滚行数,这里设al=11。2.8 动画心形显示通过显示字符串宏调用与延时程序相结合,显示一行字符串调用一下延时程序,从而实现动画心形显示。显示快慢可

7、通过调节延时程序(time2)里cx, bx的值来改变。2.9 复位、停止等功能的实现通过对输入字符的判断和各种循环的嵌套调用实现。整体上本程序的主要设计原理是先在数据段中定义“input s start r reset ppause c continue e exit控制字符串,并定义缓冲区。将数据段的段基址送ds,并将“input s start r reset p pause c continue e exit ” 显示,同时调用 go程序, 将显示结果初始化。同时设置光标,启动计时,启动延时程序,将百分之一秒加1并将其设置为压缩bcb码,当其cf不为1时,送屏幕显示,当其为 1时,将其

8、设置为0,并在秒上 加1,当秒等于60时,其置0,当其小于60时,送屏幕显示。在计时过程中,如果键入r,则将其复位,并重新开始计时,当键入 p时,计时暂停,如果键入 e,则退出运行界面,如 果键入c,则继续计时,如果键入r,则复位,设置为 00: 00,当再次键入s时,再次计时开始三、程序流程图3.1主程序流程图4微机原理课程设计电子秒表213.2子程序流程图四、源程序运行结果图4.1 程序执行效果图f:pe2oicexehappv new vefir!input s start r reset ppfluse c continue e exitm-flfr* 00:07:86mmm- *-w

9、mgo12%10980910101009ue arc the best *made bv:zhang juan & zhang henfang4.2 原程序代码(见附录)五、程序调试由于是第一次用汇编语言编写一个较为复杂的程序以实现具体功能,在编写以及调试过程中我们遇到了很多问题,经过我们的努力,这些问题最终得以顺利解决,下面列举了我们遇到的问题及其解决方法以供参考。1 .我们将程序打入电脑进行汇编时,发现汇编程序运行后没有生成相应.obj文件,相反却是满页的错误提示,按照提示我们查找问题,发现都是低级错误,只要认真即可避免。2 .经过正确的汇编后,可执行文件生成,开始后进入dos运行界面,屏

10、幕上显示的全是乱码,经过查找,最终我们找到问题症结所在:缓冲区赋初值后没有在其末尾赋入结束标志字符$,经过重新定义,问题解决。3 .乱码问题解决后,屏幕显示计数结果,但却并没有显示在屏幕中央,这种问题只能是光标定位程序ioset调用出现错误,在仔细检查该程序后发现dx赋值错误,将0027h改为0d27h后问题解决。4 .延时子程序的调试延时程序的时间并没有经过精确计算,因此只能用试探法逐渐增加或减小ax值。我们组是每十秒与标准时间比较一次,程序走的比较快因此应逐渐增加ax值,最终选定 ax=0140h 。当然这样不可能做到十分精准,但是在误差允许范围之内就可以了。并且该参数 的确定与电脑的运行

11、速度有关,在不同的pc机上运行起来准确度是不一样的。5 .图形显示程序的调试图形显示使用了宏调用,因为它可以方便的传递参数,图形显示需要大量重复性程序语句,使用宏定义既可以节约编程时间,又可以让程序更简洁。 调试的主要任务是使图形更美观。可以在.txt文件中摆出图形,编辑成字符串格式,合理使用空格,使其首字符地址列 号相同,这样调用宏时只需将光标定位参数的行号依次加一,避免了数行号和列号的繁琐工作。另外应注意定义字符串一定要以$结束,否则会出现乱码。并应用单引号开始和结束,否则在编译时会出现字符串非正常结束的错误。6 .清屏子程序调试由教科书微型计算机原理与接口技术附录四rombios中断调用

12、,我们知道可以使用bios中断调用中10h号中断的6号功能实现向上滚屏,同时可以设置颜色。但书中没有 具体指明颜色代号,我们从网上查找了各颜色的参数值,经过多次调试最终确定图形使用 0eh黄色。7 .在clou港序段中,定义的是字体或屏幕颜色。开始时只有一半的屏幕显示颜色。我们改变中间变量,发现是字符串长度设置的太少,然后定义字符串长度大一些,问题得以解决六、心得体会经过这次课程设计,我觉得我有了很大的收获:1 .正确规划,提高效率编写程序的过程中会遇到各种各样的问题。为了能够正确设计,首先要画流程图,利用流程图的帮助,获得功能实现的思路, 并不断完善程序步骤。 将流程图中的每部分功能通过子程

13、序来实现,能有效降低程序编写的难度,并有利于分部进行调试。利用流程图可以帮助我们搭建程序的大框架,然后子程序实现每个具体的功能。2 .程序模块化很重要整个程序就像一座高楼,要建好这座高楼就必须将其各部分分别规划,设计程序也一样。设计流程时,要分模块来设计,一个模块实现一具体功能,最后再将模块连接起来,这就是模块化的思想,这种思想条理性更强,而且也便于在出现问题的时候调试。当程序较长时,模块化思想就显得尤为重要。这时候子程序和宏定义不但使得代码清晰有条理,而且更重要的是不易出错,方便调试。3 .有些事情想的容易,真正实现起来却很困难。我本来以为这个课程设计会很简单,一个简单的秒表程序应该很快就会

14、编好,可是当开始编程时我却觉得无从下手。如是又好好研读了老师给的资料,才总算找到一些头绪。这也给我以后的学习一些启示:凡事要动手,不 要空想。4 .这次课程设计使我对于工科设计的严谨性有了更深地体会。我们本次设计的秒表仅仅是工科设计中非常简单的一个,思想并不是非常复杂,手头也有一定的资料, 但是我们在编程,调试过程中还是出现了一些错误。简单的一些程序好检查,但是如果说是以后要设计的一些大型程序,出现故障就不是那么容易检查了。这就要求我们在以后的工程设计当中要更为细致仔细。5 .我的专业知识得到了很好的巩固,对于本专业的一些问题有了更深的思考。原来有很 多知识只是死学课本,而并没有与实际相结合,

15、而这次课程设计使我的专业知识与实际有了 很好的契合。6 .通过这次课程设计,我掌握了一些检查与判断错误的经验与方法,在程序调试方面也有了很大提高,尤其是能熟练掌握 debug勺用法,这对我今后的专业学习与设计有着深刻的 影响。7 .对专业设计的许多流程、 原则、注意事项以及撰写专业报告的有关事项有了一定的了 解。学到了书本上没有的知识,掌握了一些程序设计的技巧,对以后进行设计及撰写论文有 很大作用。总之,经过这次课程设计, 我加深了对课本知识的理解,同时熟练掌握了汇编语言的编辑、调试工具。在以后的学习生活中还要继续保持严谨认真的科学态度,保持不断尝试和探索的耐心,保持勇于解决问题的决心不断地向

16、老师、同学们学习、交流,分享吸取他们的经验,更好的提高自己。 也让我体会到完成一个程序后无以言表的乐趣,这对我以后的学习必将产生深远的影响,也使我对编程产生了浓厚的兴趣。七、参考资料【1】张荣祥微型计算机原理第二版 中国电力出版社 2005年8月【2】intel8086/8088系列微型计算机原理及接口技术杨志坚主编中国电力出版社2003年9月八、附录(源程序)data1 segmentspace db 2000 dup ()yuepu db 1111111 1111111$frequ dw 800,900,1000x0 db happy new year!$x1 db we are the

17、best!$x2 db input s start r reset p pause c continue e exit$;设置控制字符串x3 db * * *$;设置显示图形x4 db * $x5 db * $x6 db *$x7 db *$x8 db *$x9 db*$x10 db designed by : zhang juan & zhang wenfang$buffer db 10 dupnum db 1lod equ 0642hdata1 endscode1 segmentstart proc farassume cs:code1,ds:data1mov ax,data1mov ds

18、,axcolor:;字体颜色设置mov ax,0003hint 10hmov ax,data1mov ds,axmov es,axmov bp,offset spacemov dx,0e00hmov cx,2000mov bx,000ehmov ax,1300hint 10h dis2 macro x,ymov ah,02h xor bh,bh mov dx,x int 10h mov dx,offset y mov ah,09h int 21h endm push ax push bx push dx is2 0105h,x0 dis2 1227h,x1 dis2 0304h,x2 dis2

19、 081fh,x3 dis2 1204h,x10 call time2 dis2 091dh,x4 call time2 dis2 0a1dh,x5 call time2 dis2 0b1eh,x6 call time2 dis2 0c20h,x7 call time2 dis2 0d22h,x8 call time2 dis2 0e24h,x9 pop dx pop bx pop ax call goload: call ioset call halt mov dx,0 mov cx,0 again: call time mov al,dl add al,1 daa;用宏显示字符串;设置动画

20、显示效果;赋值程序调用;光标置中央程序调用;等待开始信号程序调用;1/100秒及秒初值赋 0;分初值赋0;延时程序调用;1/100秒值加1jc next1mov dl,aljmp dispynext1:mov dl,0mov al,dhadd al,1 daa mov dh,al cmp al,60h je tishi mov dh,al jne dispynext2:mov dh,0mov al,chadd al,1 daa mov ch,al cmp ch,60h jne dispy mov ch,0dispy:mov bx,offset buffer mov al,ch call tra

21、ninc bxinc bxmov al,dh call tran inc bx inc bx mov al,dl call tran mov bx,al push bx push cx push dx call ioset mov dx,offset buffer mov ah,09h int 21h pop dx pop cx;1/100秒等于100时清零;1/100秒不等于100时显示;1/100秒回零;秒值加1;秒值等于60时响提示音;秒值不等于60时显示;秒值回零;分值加1;分值不等于60时显示;分值等于60时回零;显示程序;调用bcd转ascii码程序popbxmovah,0bh;判

22、断是否有键盘输入int21handal,aljzagain;无键入则转计时程序movah,08h;键入字符int21hcmpal,r;判断是不是复位信号jnenext3calldismer;记忆区滚屏callmemory;调用记忆子程序movdl,0movdh,0movch,0jmpagaintishi:callmusic;调用提示音程序jmpnext2mid:jmpagainnext3:cmpal,e;判断是不是退出信号jnenext4movah,4chint21hnext4:cmpal,p;判断是不是暂停信号jnemidnext5:movah,08hint21hcmpal,c;判断是不是计

23、时继续信号jemidcmpal,e;判断是不是退出信号jnenext6movah,4chint21hnext6:cmpal,r;判断是不是复位信号jnenext5callgo;若是复位信号就转到开头等待calliosetmovdx,offset buffermovah,09hint 21h jmp load ret start endp go procmov bx,offset buffer mov al,0 mov bx,al inc bx mov al,0 mov bx,al inc bx mov al,: mov bx,al inc bx mov al,0 mov bx,al inc b

24、x mov al,0 mov bx,al inc bx mov al,: mov bx,al inc bx mov al,0 mov bx,al inc bx mov al,0 mov bx,al inc bx moval阳;光标置中央程序;等待开始信号程序mov bx,al ret go endp ioset proc mov dx,0b20h mov bh,00 mov ah,02h int 10h ret ioset endp halt proc mov ah,08h int 21h;bcd码转ascii码程序cmp al,s jne halt ret halt endp tran pr

25、oc;动画效果延时程序mov cl,al shr al,1 shr al,1 shr al,1 shr al,1 or al,30h mov bx,al inc bx mov al,cl and al,0fh or al,30h mov bx,al ret tran endp time proc push cx push ax mov ax,0140h mov cx,0ffffh a1: dec ax jnz a2 jmp a3 a2: dec cx jnz a2 jmp a1 a3: pop ax pop cx ret time endp time2 proc push cx push ax mov ax,0f000h mov cx,0ffffh b1:dec axjnz a2 jmp b3 b2:dec cx jnz b2 jmp b1 b3:pop ax pop cx ret;提示音程序time2 endp music proc near push ax

温馨提示

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

评论

0/150

提交评论