微机实时时钟课程设计.docx

上传人:b****2 文档编号:3206153 上传时间:2023-05-05 格式:DOCX 页数:24 大小:17.97KB
下载 相关 举报
微机实时时钟课程设计.docx_第1页
第1页 / 共24页
微机实时时钟课程设计.docx_第2页
第2页 / 共24页
微机实时时钟课程设计.docx_第3页
第3页 / 共24页
微机实时时钟课程设计.docx_第4页
第4页 / 共24页
微机实时时钟课程设计.docx_第5页
第5页 / 共24页
微机实时时钟课程设计.docx_第6页
第6页 / 共24页
微机实时时钟课程设计.docx_第7页
第7页 / 共24页
微机实时时钟课程设计.docx_第8页
第8页 / 共24页
微机实时时钟课程设计.docx_第9页
第9页 / 共24页
微机实时时钟课程设计.docx_第10页
第10页 / 共24页
微机实时时钟课程设计.docx_第11页
第11页 / 共24页
微机实时时钟课程设计.docx_第12页
第12页 / 共24页
微机实时时钟课程设计.docx_第13页
第13页 / 共24页
微机实时时钟课程设计.docx_第14页
第14页 / 共24页
微机实时时钟课程设计.docx_第15页
第15页 / 共24页
微机实时时钟课程设计.docx_第16页
第16页 / 共24页
微机实时时钟课程设计.docx_第17页
第17页 / 共24页
微机实时时钟课程设计.docx_第18页
第18页 / 共24页
微机实时时钟课程设计.docx_第19页
第19页 / 共24页
微机实时时钟课程设计.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机实时时钟课程设计.docx

《微机实时时钟课程设计.docx》由会员分享,可在线阅读,更多相关《微机实时时钟课程设计.docx(24页珍藏版)》请在冰点文库上搜索。

微机实时时钟课程设计.docx

微机实时时钟课程设计

DATASEGMENT

UISDB0DH,0AH,10dup(0),50DUP('*'),'$'

UIEDB0DH,0AH,10dup(0),50DUP('*'),'$';界面字符

MSG1DB"Thedateis:

$"

MSG2DB"Thetimeis:

$"

MSGINDB"Pleaseselectinputmethods:

",0DH,0AH

DB21DUP(""),"Pressaforsingle,pressiforall$"

MSGDIRDB"Pleaseinputlikethis:

OO:

00",0DH,0AH

DB21DUP(""),"Pressentertocontinue$"

MSGWARNDB"Error!

Pleaseenteragain$"

MSGAIDB"Pressatochangeposition",0DH,0AH

DB21DUP(""),"itochangevalue,entertocontinue$"

MSGSECDB"Pressitostartorstop",0DH,0AH

DB21DUP(""),"Pressqtoquit,atoclearwhenitwasstoped$"

NULINEDB25DUP(?

),'$';清空行

KSBUFDB6,0,6DUP(?

KEYNUMDB?

MODEDB?

DAYDB?

MONDB?

YEARDW?

SECDB?

MSECDB?

MINDB?

HOURDB?

BEEPHOURDB0,0

BEEPMINDB0,0

SWIOFFDB"FF$"

SWIONDB"N$"

SETSTRDB"00:

00OFF/ON",'$'

WSTRDB"00:

00:

00",'$'

BFLAGDB0

SFLAGDB0

INISEGDW0

INIOFFDW0

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

CALLCLEAR

CALLCREATUI

MOVMODE,0

CALLSOUND

AGAIN:

CALLREFRESH;刷新时间日期

;******BFALG为闹钟与秒表标志位。

下面为处理闹钟

CMPBFLAG,0

JESETMOU

CMPBFLAG,1

JNECRING

CALLCHESTART

JMPSETMOU

CRING:

CALLCHESTOP

JMPSETMOU

JMAGAN:

JMPAGAIN;二级跳转

SETMOU:

MOVDX,0815H

MOVAH,02

MOVBH,0

INT10H;设置光标

;模式判断***********

CMPMODE,0

JEMODE0

CMPMODE,1

JEMODE1

CMPMODE,2

JEMODE2

CMPMODE,3

JEMODE3

MODE0:

CALLTIMESHOW

JMPKEYSCAN

MODE1:

CALLDATESHOW

JMPKEYSCAN

MODE2:

CALLBEEP

MOVMODE,03H

JMPKEYSCAN

MODE3:

CALLSEDWHATCH

MOVMODE,0H

;键盘扫描*********

KEYSCAN:

MOVAH,0BH

INT21H

CMPAL,00

JEAGAIN

MOVAH,08H

INT21H

CMPAL,1BH

JZSTOP

CMPAL,'q'

JEEXIT

CMPAL,'m'

JNEAGAIN

INCMODE

CMPMODE,4

JNEJMAGAN

MOVMODE,0

JMPJMAGAN

STOP:

MOVAH,4CH

INT21H

;*******时间日期刷新*****

REFRESHPROC

PUSHAX

PUSHCX

PUSHDX

MOVAH,2AH

INT21H

MOVDAY,DL

MOVMON,DH

MOVYEAR,CX

MOVAH,2CH

INT21H

MOVHOUR,CH

MOVMIN,CL

MOVSEC,DH

MOVMSEC,DL

POPDX

POPCX

POPAX

RET

REFRESHENDP

;********年月日显示

DATESHOWPROC

PUSHAX

PUSHCX

PUSHDX

MOVDX,OFFSETMSG1

MOVAH,09

INT21H

MOVAX,YEAR;取年

CALLBTOBCD

MOVDL,'/'

MOVAH,02H

INT21H

MOVAH,0

MOVAl,MON;月

CALLBTOBCD

MOVDL,'/'

MOVAH,02H

INT21H

MOVAH,0

MOVAL,DAY;日

CALLBTOBCD

MOVDX,OFFSETNULINE

MOVAH,09

INT21H

POPDX

POPCX

POPAX

RET

DATESHOWENDP

;*********时间显示

TIMESHOWPROC

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVDX,OFFSETMSG2

MOVAH,09

INT21H

MOVAH,0

MOVAL,HOUR;取时

CALLBTOBCD

MOVDL,':

'

MOVAH,02H

INT21H

MOVAH,0

MOVAL,MIN;分

CALLBTOBCD

MOVDL,':

'

MOVAH,02H

INT21H

MOVAH,0

MOVAL,SEC;秒

CALLBTOBCD

CMPSFLAG,0

JETOCLR

MOVDL,':

'

MOVAH,02H

INT21H

MOVAH,0

MOVAL,MSEC;10M秒

CALLBTOBCD

TOCLR:

MOVDX,OFFSETNULINE

MOVAH,09

INT21H

POPDX

POPCX

POPBX

POPAX

RET

TIMESHOWENDP

;将二进制转化为BCD码并显示

BTOBCDPROC

PUSHDX

PUSHBX

PUSHCX

MOVCX,0

MOVBX,10

BTOD:

MOVDX,0

DIVBX

PUSHDX

INCCL

CMPAX,0

JABTOD

SHOW:

POPDX

ADDDL,30h

MOVAH,02h

INT21h

LOOPSHOW

POPCX

POPBX

POPDX

RET

BTOBCDENDP

;*****闹钟设定******

BEEPPROC

MOVDX,0715H

MOVAH,02

MOVBH,0

INT10H

MOVDX,OFFSETMSGIN

MOVAH,09

INT21H

CMPBFLAG,2;设定时还在响,那么关闭

JNESETM

INAL,61H

ANDAL,0FDH

OUT61H,AL

SETM:

MOVDX,0715H

MOVAH,02

MOVBH,0

INT10H

MOVAH,07H

INT21H

CMPAL,'a'

JEINA;选择输入方式,a为切换输入,其他键为键盘直接输入

MOVDX,OFFSETMSGDIR

MOVAH,09

INT21H

MOVDX,0915H

MOVAH,02

MOVBH,0

INT10H

MOVDX,OFFSETKSBUF

MOVAH,10

INT21H;键盘输入字符存入缓存区

MOVBFLAG,1

MOVSI,OFFSETKSBUF+1

MOVCL,BYTEPTR[SI]

MOVBX,10

INCSI

ANDBYTEPTR[SI],0FH

MOVAL,BYTEPTR[SI]

MULBL

INCSI

ANDBYTEPTR[SI],0FH

ADDAL,BYTEPTR[SI]

MOVBEEPHOUR,AL

ADDSI,2

ANDBYTEPTR[SI],0FH

MOVAL,BYTEPTR[SI]

MULBL

INCSI

ANDBYTEPTR[SI],0FH

ADDAL,BYTEPTR[SI]

MOVBEEPMIN,AL

JMPTOEND

INA:

MOVDX,OFFSETMSGAI;A/I切换输入方式

MOVAH,09

INT21H

MOVDX,0915H

MOVAH,02

MOVBH,0

INT10H

MOVDX,OFFSETSETSTR

MOVAH,09

INT21H

MOVDX,0915H

MOVAH,02

MOVBH,0

INT10H

MOVSI,OFFSETBEEPHOUR

;*****a键切换光标位置*********

KASCAN:

MOVAH,0BH

INT21H

CMPAL,00

JEKASCAN

MOVAH,08H

INT21H

MOVKEYNUM,AL

CMPAL,'a'

JNEKISCAN

MOVBH,0

MOVAH,03H

INT10H

INCDL

INCSI

CMPDL,17H

JETOMI

CMPDL,1AH

JETOSW

CMPDL,22H

JETOHO

JMPSETF

TOMI:

INCDL

JMPSETF

TOSW:

MOVDL,21H

JMPSETF

TOHO:

MOVDL,15H

MOVSI,OFFSETBEEPHOUR

SETF:

MOVAH,02H

INT10H

KAJMP:

JMPKASCAN

;*****i键改变光标处字符*****

KISCAN:

CMPKEYNUM,'i'

JNEJKCR0

MOVAH,08H;读光标处字符

INT10H

INCAL

INCBYTEPTR[SI]

CMPSI,OFFSETBEEPHOUR

JEJUGHOR

CMPSI,OFFSETBEEPHOUR+1

JEJUGHOR2

CMPSI,OFFSETBEEPHOUR+2

JEJUGMIN

CMPSI,OFFSETBEEPHOUR+3

JEJUGMIN2

CMPSI,OFFSETBEEPHOUR+4

JECHGSW

JMPJUGHOR

JKCR0:

JMPKCR

JUGHOR:

CMPAL,32H

JNAPRINT

MOVBYTEPTR[SI],0

MOVAL,30H

JMPPRINT

JUGHOR2:

CMPBEEPHOUR,2H

JETO2

CMPAL,39H

JNAPRINT

MOVBYTEPTR[SI],0

MOVAL,30H

JMPPRINT

TO2:

CMPAL,34H

JNAPRINT

MOVBYTEPTR[SI],0

MOVAL,30H

JMPPRINT

JUGMIN:

CMPAL,35H

JNAPRINT

MOVBYTEPTR[SI],0

MOVAL,30H

JMPPRINT

JUGMIN2:

CMPAL,39H

JNAPRINT

MOVBYTEPTR[SI],0

MOVAL,30H

JMPPRINT

CHGSW:

DECBYTEPTR[SI]

CMPBFLAG,0

JETOON

MOVBFLAG,0

MOVDX,OFFSETSWIOFF

JMPPRISW

TOON:

MOVBFLAG,1

MOVDX,OFFSETSWION

PRISW:

MOVAH,09H

INT21H

MOVDX,0921H

MOVAH,02

MOVBH,0

INT10H

JMPKAJMP0

PRINT:

MOVCX,1H

MOVBX,07H

MOVAH,09H

INT10H

KAJMP0:

JMPKAJMP

KCR:

CMPKEYNUM,0DH

JNEKAJMP0

MOVAL,BEEPHOUR

MOVBX,10

MULBL

ADDAL,BEEPHOUR+1

MOVBEEPHOUR,AL

MOVAL,BEEPMIN

MULBL

ADDAL,BEEPMIN+1

MOVBEEPMIN,AL

TOEND:

RET

BEEPENDP

CHESTARTPROC

MOVCH,HOUR

MOVCL,MIN

CMPBEEPHOUR,CH

JNERETURN

CMPBEEPMIN,CL

JNERETURN

INAL,61H

ORAL,2

OUT61H,AL

INCBFLAG

RETURN:

RET

CHESTARTENDP

CHESTOPPROC

MOVCL,SEC

CMPCL,3

JBESCP

INAL,61H

ANDAL,0FDH

OUT61H,AL

ANDBFLAG,0

ESCP:

RET

CHESTOPENDP

SOUNDPROC

MOVAL,10110110B

OUT43H,AL

MOVDX,0012H

MOVAX,34DEH

MOVDI,1000

DIVDI

OUT42H,AL

MOVAL,AH

OUT42H,AL

INAL,61H

ANDAL,0FDH

OUT61H,AL

INAL,61H

ORAL,1

OUT61H,AL

RET

SOUNDENDP

;*********以下为秒表部分************

SEDWHATCHPROC

MOVDX,0715H

MOVAH,02

MOVBH,0

INT10H

MOVDX,OFFSETMSGSEC

MOVAH,09

INT21H

MOVDX,0915H

MOVAH,02

MOVBH,0

INT10H

CLI

MOVAL,1CH

MOVAH,35H

INT21H

MOVINISEG,ES

MOVINIOFF,BX

SHOWINI:

MOVDX,0915H

MOVAH,02

MOVBH,0

INT10H

MOVDX,OFFSETWSTR

MOVAH,09

INT21H

TO:

MOVHOUR,0

MOVMIN,0

MOVSEC,0

MOVMSEC,0

KSCANW:

MOVAH,0BH

INT21H

CMPAL,00

JEKSCANW

MOVAH,08H

INT21H

CMPAL,'q'

JEEXIT

CMPAL,'m'

JEQTIME

CMPAL,'i'

JETOI

CMPAL,'a'

JNEKSCANW

CMPSFLAG,1

JEKSCANW

JMPTO

TOI:

MOVSFLAG,1

CALLINITIR

WSTART:

MOVDX,0915H

MOVAH,02

MOVBH,0

INT10H

CALLTIMESHOW

WSTOP:

MOVAH,0BH

INT21H

CMPAL,00

JEWSTART

MOVAH,08H

INT21H

CMPAL,'i'

JNEWSTART

MOVSFLAG,0

JMPKSCANW

QTIME:

CLI

PUSHDS

MOVDX,INIOFF

MOVDS,INISEG

MOVAL,1CH

MOVAH,25H

INT21H

STI

POPDS

MOVAL,00110100B

OUT43H,AL

MOVAL,0FFH

OUT40H,AL

OUT40H,AL

MOVDX,0715H

MOVAH,02

MOVBH,0

INT10H

MOVDX,OFFSETNULINE

MOVAH,09

INT21H

MOVDX,0915H

MOVAH,02

MOVBH,0

INT10H

MOVDX,OFFSETNULINE

MOVAH,09

INT21H

RET

SEDWHATCHENDP

INITIRPROC

CLI

;初始化8253计时器0,先送低八位,再送高八位,工作方式3,二进制计数方式

MOVAL,00110110B

OUT43H,AL

MOVAX,11932;计数初值送AX

OUT40H,AL

MOVAL,AH

OUT40H,AL

PUSHDS

MOVDX,OFFSETTIMER

MOVAX,SEGTIMER

MOVDS,AX

MOVAX,251CH

INT21H

POPDS

RET

INITIRENDP

TIMERPROC

PUSHAX

PUSHDS

MOVAX,DATA

MOVDS,AX

INCMSEC

CMPMSEC,100

JNEQUIT

MOVMSEC,0

INCSEC

CMPSEC,60

JNEQUIT

ANDSEC,0H

INCMIN

CMPMIN,60

JNEQUIT

INCHOUR

ANDMIN,0H

QUIT:

POPAX

MOVDS,AX

POPAX

STI

IRET

TIMERENDP

CREATUIPROC

PUSHAX

PUSHBX

PUSHDX

MOVDX,OFFSETUIS

MOVAH,09

INT21H

MOVDX,1000H

MOVAH,02

MOVBH,0

INT10H

MOVDX,OFFSETUIE

MOVAH,09

INT21H

POPDX

POPBX

POPAX

RET

CREATUIENDP

CLEARPROC

MOVAX,0002H

INT10H

RET

CLEARENDP

EXIT:

MOVAH,4CH;返回DOS状态

INT21H

CODEENDS

ENDSTART

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2