进入时间显示模块 从DISPDATE顺序取日期位 除以图形数字长度 显示 否 DISPDATE ? NULL 退出显示 图3-2 时间显示
3.1.3 倒计时显示模块
倒计时显示模块主要涉及的内容是倒计时算法,在倒计时过程中,从最低位开
始,判断倒计是否为零,若为零需向高位借位;反之,正常进行自建任务。一旦向高位借位,有需要判断高位是否为零,若高位为零则无法借位,需要进一步向高位递归;否则当高位借位以后,借位对象要被赋予适当的初值。 3.1.4 主要功能子函数
(1)DISP_COUNT子函数 功能:显示倒计时时间 (2)DISP子函数
功能:显示日历,包括时间和日期。 3.2 控制功能模块
控制模块包含日期获取和格式化、时间获取和格式化、警报功能、倒计时时间
设定、日期和时间设定。
时间和日期的获取和格式化的设计方法也是相近的,在设计过程中主要的模块
详细设计如下所述。
3.2.1 日期和时间的获取和格式化
日期和时间的获取和格式化可用以下流程图来描述,此处使用时间来做解释说
- 4 -
明。该模块的流程图如图3-4所示。
时间模块 调用INT21/2A 2C CH小时 C L小时 DH秒 DIV 除10取余 商AL放入时间表小时高位 商AL放入时间表分钟高位 商AL放入时间表秒高位 余数AH放入时间表小时低位 余数AH放入时间表分钟低位 余数AH放入时间表秒低位
图3-4 日期获取和格式化
3.2.2 警报提示功能模块
本功能模块主要是使用PC机提供的BEEP子程序,通过8253/54定时器,产生
指定频率的声音来实现的。警报过程用可输出一段音乐,主要过成如下描述。
(1)频率: BEEP子程序只能产生896Hz的声音。
(2)时间:BEEP产生的声音的持续时间只能是0.5S的倍数,如果想让持续的时间更易于调整,可以通过8253/54来达到降频的目的。
该模块的详细流程图如图3-5所示.
- 5 -
警报模块 查询倒计时剩余时间 否 If(count_time=0) 是 调用music程序 指定时间内用户结束警报? 是 结束警报 自动结束结束警报 提示用户设定时间
3-5 警报模块功能流程
3.2.3 倒计时时间、日期设定
本程序可以实现倒计时功能的认为设定,以及显示的系统时间的人为设定。灵活的改变时间和日期。
功能流程图如图3-6所示
倒计时时间设定 否 等待用户选择 时间设定区 录入时间 设置成功
3-6 倒计时时间设定
- 6 -
4、系统评价
本系统基本完成了设计要求,能够准确的显示系统时间和日期,以及倒计时时间,同时可以人为设定系统时间、日期和倒计时日期,功能相对比较简单,容易实现,而且数字显示采用的是文本模式下的图形显示,具有良好的可视性。
但是本系统仍有很多不确定,功能没有自己想象中的完善,而且界面设计不够友好。
5、 心得体会
在做此课程设计时,开始我没有理解好出题意图,使用了不是很了解的单片机进行的仿真实验。后来通过查阅大量资料和自己的努力,用所学知识实现。在课程设计的过程中,我把汇编学到的知识回顾了一遍,常用的命令格式,常用的中断调用,如何创建宏,如何创建子程序等等,很多内容都在不知不觉中记了下来。这几学期开了很多们专业课程,我一直在努力把所学的知识应用到实践中,能让自己在实践中体会“拥有”的快感。在此次课程设计中,相对以往来说,我学习到了一些好的思想,比如程序模块化,让程序的流程更加清晰,低耦合,可以在模块的修改下更方便,还有比如迭代开发的思想,在设计中,我先从最基本的操作做起,等到测试成功以后,再对模块进行功能扩展。总体而言,此次课程设计给了我很大的启发,尤其是思想,但是也存在缺陷的地方,今后,我会更加努力完善。
6、参考文献:
[1] 《IBM-PC汇编语言程序设计》 沈美明 温冬婵 清华大学出版社 [2] 《微型计算机技术及应用(第4版)》 戴梅萼 史嘉权 清华大学出版社
源程序
DATA SEGMENT
DISPDATE DB 00,00,00,00,\
DISPCOUNT DB 00,00,\DISPTIME DB 00,00,\COUNT_FLAG DB 00
DISP_WELCOME DB \DISP_CHOOSE DB \ EXIT:Q\SHOW_RESET DB \ MUS_FREQ DW 330,294,262,294,3 DUP (330)
- 7 -
DW 3 DUP (294),330,393,392 DW 330,294,262,294,4 DUP (330) DW 294,294,330,294,262,-1
MUS_TIME DW 6 DUP (25),50 DW 2 DUP (25,25,50) DW 12 DUP (25),100
DIGIT DB \
DB \ DB \DB \ \DB \ |\DB \ |\DB \DB \DB \DB \DB \DB \DB \ \DB \DB \ |\DB \DB \DB \DB \DB \DB \DB \DB \ |\DB \ |\DB \DB \DB \DB \DB \DB \DATA ENDS
SETF MACRO DH1,DL1 PUSH AX PUSH BX PUSH DX MOV AH,2H
- 8 -