电子时钟的设计及程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子时钟的设计及程序
一.设计目的:
1.理解掌握定时/计数器和中断的使用方法。
2.掌握微机常用的输入输出方式及接口技术。
3.掌握一定的汇编语言知识,培养自己的动手操作能力。
4.学习程序设计的基本思路和方法。
二.程序内容:
第一部分:定义显示界面。
第二部分:调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入内存区。
第三部分:将存在系统内存区的时间数用显示字符串的形式显示出来。
第四部分:获取键盘的按键值,以ESC键退出系统返回DOS。三.程序设计原理:
首先在数据段开辟一显示缓冲区,用来存储系统时间。调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号’$’。调用DOS字符串显示功能将时间显示
出来。并调用屏幕I/O中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。由于获取了的系统时间不会自动刷
新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。调用延时TIME延时中断服务程序,累加到存放秒值的寄存器DL中,并进行十进制调整。在累加的过程中,不断地对时、分、秒值进行比较,秒不能等于60,分不能等于60,时不能等于24。秒等于限制值时,则使秒值为0分值加1;分等于限制值时,则使分值为0时值加1;时等于限制值时,则使时值为0;时、分、秒值都不超过限制值时,就转显示屏输出。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序。利用BIOSS设计窗口,选择适当的背景和前景等,使屏幕显示更加完美。程序一旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可同时在键盘按下ESC键返回DOS系统。四.程序流程图如下:
DATA SEGMENT ;设置数据段
BUF1 DB 'THE TIME IS NOW: $'
BUF5 DB ' @@@@@ ^^^^^^^ @@@@@@ $'
BUF6 DB ' &&&&&& ####### &&&&&& $'
BUF7 DB ' 00 >o o < 00 $'
BUF8 DB ' 00 (::) 00 $'
BUF9 DB ' 00 ~~ 00 $'
BUF10 DB ' 00 !! 00 $'
BUF3 DB 'CLASS:040402206 $'
BUF4 DB 'NAME:hu ling wei $'
BUF2 DB 10
DB 10 DUP(?)
DATA ENDS
STACK SEGMENT STACK ;设置堆栈段
STACK ENDS
CODE SEGMENT ;设置代码段
ASSUME CS:CODE,DS:DATA,SS:STACK
CURSOR MACRO ROW,CLM ;设置光标位置
MOV AH,2
MOV BH,0
MOV DH,ROW
MOV DL,CLM
INT 10H
ENDM
WIN MACRO ROWL,CLML,ROWR,CLMR,COLOR ;设置窗口,位置,颜色MOV AH,6
MOV AL,0
MOV CH,ROWL
MOV CL,CLML
MOV DH,ROWR
MOV DL,CLMR
MOV BH,COLOR
INT 10H
ENDM
ASCBCD MACRO REG
INC BX
INC BX
MOV REG,[BX]
MOV CL,4
SHL REG,CL
INC BX
MOV AL,[BX]
AND AL,0FH
OR REG,AL
ENDM
BCDASC MACRO REG
INC BX
INC BX
MOV AL,REG
MOV CL,4
SHR AL,CL
OR AL,30H
MOV [BX],AL
INC BX
MOV AL,REG
AND AL,0FH
OR AL,30H
ENDM
INCBCD MACRO REG,COUNT ;BCD数加1 MOV AL,REG
INC AL
DAA
MOV REG,AL
CMP AL,COUNT
JNZ DISPY
MOV REG,0
ENDM
STRDSPY MACRO ADRS
LEA DX,ADRS
MOV AH,9
INT 21H
ENDM
CLOCK PROC FAR
START: PUSH DS ;显示字符串
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
WIN 0,0,24,79,7
WIN 6,9,18,70,01000001B ;设置窗口
CURSOR 6,25 ;设置光标
STRDSPY BUF5 ;显示字符串
CURSOR 7,25 ;设置光标
STRDSPY BUF6
CURSOR 8,25
STRDSPY BUF7
CURSOR 9,25
STRDSPY BUF8
CURSOR 10,25
STRDSPY BUF9
CURSOR 11,25
STRDSPY BUF10
CURSOR 6,9
STRDSPY BUF3
CURSOR 7,9
STRDSPY BUF4
CURSOR 14,32
STRDSPY BUF1
CURSOR 15,36
LEA DX,BUF2