电子钟课程设计_第1页
电子钟课程设计_第2页
电子钟课程设计_第3页
电子钟课程设计_第4页
电子钟课程设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、一. 设计任务:电子表设计要求:1. 实现秒、分、时的计时,并显示于屏幕中央;2. 能够校时;3. 能够半点、整点报时。二. 设计原理:1.时钟起始时间的设置先调用设置光标子程序和清除屏幕子程序,调用dos操作系统模块2,在显示屏上显示提示符“:”,再调用dos操作系统模块10,提示要输入时钟的起始时间,输入时间的格式是“时:分:秒”。输入的时间以字符串形式放在已定义的存储器缓冲区,继而调用tran1和mul10子程序,将存放在存储器缓冲区的ascii字符转换成压缩bcd码,并将时、分、秒的值放置在寄存器ch、dh、dl中。2.延时程序调用time延时1s子程序(并未精确计算),累加到存放秒值

2、的寄存器dl中,并进行十进制调整。在累加的过程中,不断地对时、分、秒进行比较,秒不能等于60,分不能等于60,是不能等于24.秒等于限值时,则使分值为0时值加1;时等于限值时,就转显示屏输出。3.时间显示调用dos操作系统模块9,可用来显示存储器内字符串。由于显示的字符串必须为ascii编码,因为要调用tran2转换子程序将寄存器ch、dh、dl内压缩bcd码字符串转换成ascii码字符串,字符串最后以字符“$”结束,并按时、分、秒的顺序送存储器缓冲区内。调用dos操作系统模块9时,(ds:dx)应指向字符串首址。程序一旦进入运行,就将不间断地在显示屏显示时间,要想使程序停止运行,可同时在键盘

3、按下ctrl和break二键。4.校时校时系统我们采用了一个取键盘指令的中断,在发现时间不正确之后,可以通过键盘cpu一个中断请求,通过与键盘按键ascii码的比较相同时返回初始化程序,重新输入时间,最终达到校时的目的。具体程序如下:mov ah , 1int 16hcmp al,1bhjz next 5.半点、整点报时 当分达到30时,转到报时程序,当分到0时,转到报时程序。三框图:c秒和60相等?(dl)0(al)(dh)分加1分和60相等?(dh)0(al)(ch)时加1时和24相等?显示(dh)和0h相等报时字符显示a开始n(ch)(al)置入时(bx)(bx)+1(bx)(bx)+1

4、(al)bxbcd码转为压缩bcdnext:y(dh)(al)置入分 (bx)(bx)+1(bx)(bx)+1(al)bxbcd码转为压缩bcd清屏光标置中dxbuffer首地址键盘输入字符串到缓冲区bxbuffer+2c延时键盘输入esc,校时(al)(dl)“秒”加1(dl)(al)(dl)(al)置入秒a(al)bxbcd码转为压缩bcd(bx)(bx)+1(bx)(bx)+1ascii码转为bcd码bxbuffer+2ascii码转为bcd码(bx)(bx)+1(bx)(bx)+1ascii码转为bcd码ny(dh)和30h相等?(ch)0nyy四程序清单:dat segment bu

5、ffer db 20 db ? db 20 dup (?)dat endssta segment para stack stack stapn db 100 dup (?) top equ length stapnsta endscod segment startproc far assume cs:cod,ds:dat,ss:sta mov ax,dat mov ds,ax mov ax,sta mov ss,ax mov ax,top mov sp,ax next: call ioclr call ioset mov dx,offset buffer mov ah,10 int 21h m

6、ov bx,offset buffer+2 call tran1 inc bx inc bx call tran1 inc bx inc bx call tran1 mov bx,offset buffer+2 mov al,bx call mul10 mov ch,al inc bx inc bx mov al,bx call mul10 mov dh,al inc bx inc bx mov al,bx call mul10 mov dl,al again: call time mov ah,1 int 16h cmp al,1bh jz next mov al,dl add al,1 d

7、aa mov dl,al cmp al,60h jne display mov dl,0 mov al,dh add al,1 daa mov dh,al cmp al,60h jne display mov dh,0 mov al,ch add al,1 daa mov ch,al cmp al,24h jne display mov ch,0display: mov bx,offset buffer inc bx inc bx call ioclr call ioset mov al,ch call tran2 inc bx mov al,: mov bx,al inc bx mov al

8、,dh call tran2 inc bx mov al,: mov bx,al inc bx mov al,dl call tran2 cmp dh,30h jnz next2 next1: cmp dl,0 jnz next3 inc bx mov al,* mov bx,al inc bx mov al,: mov bx,al inc bx mov al,) mov bx,al inc bx mov al,07h mov bx,al jmp next3 next2: cmp dh,0 jnz next3 jmp next1 next3: inc bx mov al,$ mov bx,al

9、 push bx push cx push dx mov dx,offset buffer mov ah,9 int 21h pop dx pop cx pop bx jmp again ret start endp mul10 proc add al,al daa mov cl,al add al,al daa add al,al daa add al,cl daa mov cl,al inc bx mov al,bx add al,cl ret mul10endp tran1proc mov al,bx and al,0fhmov bx,alinc bxmov al,bxand al,0f

10、h待添加的隐藏文字内容3mov bx,alret tran1 endp tran2proc mov cl,al shr al,1shr al,1shr al,1shr al,1or al,30hmov bx,alinc bxmov al,cland al,0fhor al,30hmov bx,alret tran2endp time proc push cx push ax mov ax,25000 waited: mov cx,30000 goon: loop goon dec ax jnz waited pop ax pop cx ret time endpioset proc push

11、ax push bx push dx mov dx,0c20h mov bh,00 mov ah,02 int 10h pop dx pop bx pop ax retioset endp ioclr proc push ax push bx push cx push dx mov ax,0600h mov bh,7 mov cx,0 mov dx,184fh int 10h pop dx pop cx pop bx pop ax retioclr endp cod ends endstart半点截图整点截图五程序调试:所遇到的问题与解决:1、对延时时间的设置:当计算机执行命令时,虽然快,但还

12、是需要一定的时间。此时间与计算机的主频有关系,我们采用循环的方式来进行延时。但我们所使用的计算机的cpu主频比8086高,约为0.75ghz,故需要内外两个循环来实现,内循环为30000,外循环为25000,这样延时约为1s。2、开始光标不在屏幕中央,原因是ioset子程序中的光标设计的位置不对,重新改变dx后,光标到达屏幕中央。3、无法校时:原因在于,控制校时的程序在前,而dispy最后是跳到again,循环不经过程序,所以无法控制。解决:在again开始时加上校时的程序。4、校时后原先的时间还在屏幕上的下一行显示。解决:在dispy开始加上call ioclr。5、检查错误过程中,系统提示

13、“out of memory”1)、原因:在某些程序段存在只有现场保护没有现场恢复2)、解决办法:通过系统运行,发现错误的行数,找到相应的位置,添加现场恢复语句。 六心得体会:微机原理与应用课程是一门应用性很强的课程,其中包括软硬件的结合,接口技术,中断的处理。由于平时对硬件的接触较少所以学习起来多少有些困难。但课程中融入了实验,并且还有课程设计。对于理论知识的理解就更深刻了。通过这次微机原理课程设计学到了很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。而且我第一次感受到以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图画出来的重要性。在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。本次课程设计的过程中遇到了很多问题,比如时间走得太快、光标的位置无法定位等等。对每个问题的解决都是一种对知识的重新

温馨提示

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

评论

0/150

提交评论