单片机秒表.docx
- 文档编号:28856116
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:15
- 大小:16.48KB
单片机秒表.docx
《单片机秒表.docx》由会员分享,可在线阅读,更多相关《单片机秒表.docx(15页珍藏版)》请在冰豆网上搜索。
单片机秒表
只有一个用微机原理设计出来的,没有按照你的要求。
1.可通过M键切换显示模式:
日期(年、月、日)、时间(小时、分、秒)、秒表(小时、分、秒、1/100秒)、闹钟(小时、分、秒)。
2.在日期显示模式,可通过A键依次使年、月、日闪烁或变色,这时可通过I键加1调整。
3.在时间显示模式,可通过A键依次使小时、分、秒闪烁或变色,这时可通过I键加1调整。
4.在秒表显示模式,可通过I键切换(启动/暂停)计时,当暂停计时时可通过A键复位。
5.在闹钟显示模式,可通过A键依次使On/Off标志、小时、分、秒闪烁或变色,这时可通过I键切换On/Off标志或加1调整。
6.调整和秒表操作不影响日期和时间的准确性。
7.可通过Q键结束程序。
STACKSEGMENTSTACK
DW200DUP(?
)
STACKENDS
DATASEGMENT
WHOURDB0;秒表的时、分、秒、毫秒
WMINDB0
WSECDB0
WMSECDB0
OLD1CHDD0
SIGNALDB0
COUNTDW0
;---------------------------------------------------------------------------------------------------------------
CHOURDB0;闹钟的时、分、秒
CMINDB0
CSECDB0
;-----------------------------------------------------------------------------------------------------------------
SPACEDB2000DUP('')
PATTERNDB6DUP(''),0C9H,26DUP(0CDH),0BBH,6DUP('')
DB6DUP(''),0BAH,26DUP(20H),0BAH,6DUP('')
DB6DUP(''),0C8H,26DUP(0CDH),0BCH,6DUP('')
;----------------------------------------------------------------------------------------------------------------
DBUFFERDB8DUP(':
'),12DUP('')
DBUFFER1DB20DUP('')
DBUFFER2DB11DUP(':
'),15DUP('')
STRDB0DH,0AH,'INPUT''M''TONEXT-STATE,INPUT''Q''TOEXIT:
$',0DH,0AH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
;-------------------------------------------------------------------
PUSHAMACRO
PUSHDS
PUSHAX
PUSHBX
PUSHCX
PUSHDX
ENDM
POPAMACRO
POPDX
POPCX
POPBX
POPAX
POPDS
ENDM
;图形化界面设计
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,0003H;设置显示方式为40*25彩色文本方式
INT10H
LEADX,STR;显示提示信息
MOVAH,9
INT21H
MOVBP,OFFSETSPACE
MOVDX,0B00H
MOVCX,1000
MOVBX,0000H
MOVAX,1300H
INT10H;显示字符串,定义显示方式
;---------------------------------------------------------------
;主程序
LP1:
MOVAH,1;从键盘输入单个字符
INT21H
CMPAL,'M';AL='M'?
JNELP5
CALLDATE;显示系统日期
LP2:
MOVAH,1;从键盘输入单个字符
INT21H
CMPAL,'M';AL='M'?
JNELP5
CALLTIME;显示系统时间
LP3:
MOVAH,1;从键盘输入单个字符
INT21H
CMPAL,'M';AL='M'?
JNELP4
CALLSTOPWATCH;显示秒表
LP4:
MOVAH,1;从键盘输入单个字符
INT21H
CMPAL,'M';AL='M'?
JNELP5
CALLRING
LP5:
CMPAL,'Q';AL='Q'?
JNELP1
MOVAH,4CH;返回DOS状态
INT21H
;---------------------------------------------------------------
;显示日期子程序
DATEPROCNEAR
DISPLAY:
MOVAH,2AH;取日期CX:
DH:
DL=年:
月:
日AL=星期
INT21H
MOVSI,0
MOVAX,CX
MOVBX,100
DIVBL
MOVBL,AH
CALLBCDASC1;日期数值转换成相应的ASCII码字符
MOVAL,BL
CALLBCDASC1
INCSI
MOVAL,DH
CALLBCDASC1
INCSI
MOVAL,DL
CALLBCDASC1
MOVBP,OFFSETDBUFFER1
MOVDX,0C0DH
MOVCX,20
MOVBX,004EH
MOVAX,1301H
INT10H
MOVAH,02H;设置光标位置
MOVDX,0300H
MOVBH,0
INT10H
MOVBX,0018H
REPEA:
MOVCX,0FFFFH;延时
REPEAT:
LOOPREPEAT
DECBX
JNZREPEA
MOVAH,01H;读键盘缓冲区字符到AL寄存器
INT16H
JEDISPLAY
JMPLP2
MOVAX,4C00H
INT21H
RET
DATEENDP
;------------------------------------------------------
;显示时间子程序
TIMEPROCNEAR
DISPLAY1:
MOVSI,0
MOVBX,100
DIVBL
MOVAH,2CH;取时间CH:
CL=时:
分DH:
DL=秒:
1/100秒
INT21H
MOVAL,CH
CALLBCDASC;将时间数值转换成ASCII码字符
INCSI
MOVAL,CL
CALLBCDASC
INCSI
MOVAL,DH
CALLBCDASC
MOVBP,OFFSETDBUFFER
MOVDX,0C0DH
MOVCX,20
MOVBX,004EH
MOVAX,1301H
INT10H
MOVAH,02H
MOVDX,0300H
MOVBH,0
INT10H
MOVBX,0018H
RE:
MOVCX,0FFFFH
REA:
LOOPREA
DECBX
JNZRE
MOVAH,01H
INT16H
JEDISPLAY1
JMPLP3
MOVAX,4C00H
INT21H
RET
TIMEENDP
;------------------------------------------------------
;显示秒表子程序
STOPWATCHPROCNEAR
DISPLAY2:
PUSHA
MOVSI,0
MOVBX,100
DIVBL
;CALLWATCH
DISP3:
MOVAX,DATA
MOVDS,AX
MOVAL,WHOUR
CALLBCDASC2;将时间数值转换成ASCII码字符
INCSI
MOVAL,WMIN
CALLBCDASC2
INCSI
MOVAL,WSEC
CALLBCDASC2
MOVAL,WMSEC
INCSI
CALLBCDASC2
MOVBP,OFFSETDBUFFER2
MOVDX,0C0DH
MOVCX,20
MOVBX,004EH
MOVAX,1301H
INT10H
MOVAH,02H
MOVDX,0300H
MOVBH,0
INT10H
MOVBX,0018H
RE2:
MOVCX,0FFFFH
REA2:
LOOPREA2
DECBX
JNZRE2
MOVAH,01H
INT16H
JEDISPLAY2
POPA
JMPLP4
MOVAX,4C00H
INT21H
RET
STOPWATCHENDP
;----------------------------------------------------------------
;显示闹钟子程序
RINGPROCNEAR
DISPLAY3:
PUSHA
MOVSI,0
MOVBX,100
DIVBL
;MOVAH,CH;取时间CH:
CL=时:
分DH:
DL=秒:
1/100秒
;INT21H
MOVAX,DATA
MOVDS,AX
MOVAL,CHOUR
CALLBCDASC;将时间数值转换成ASCII码字符
INCSI
MOVAL,CMIN
CALLBCDASC
INCSI
MOVAL,CSEC
CALLBCDASC
MOVBP,OFFSETDBUFFER
MOVDX,0C0DH
MOVCX,20
MOVBX,004EH
MOVAX,1301H
INT10H
MOVAH,02H
MOVDX,0300H
MOVBH,0
INT10H
MOVBX,0018H
RE3:
MOVCX,0FFFFH
REA3:
LOOPREA3
DECBX
JNZRE3
MOVAH,01H
INT16H
JEDISPLAY3
POPA
JMPSTART
MOVAX,4C00H
INT21H
RET
RINGENDP
;----------------------------------------------------------------
;时间数值转换成ASCII码字符子程序
BCDASCPROCNEAR
PUSHBX
CBW
MOVBL,10
DIVBL
ADDAL,'0'
MOVDBUFFER[SI],AL
INCSI
ADDAH,'0'
MOVDBUFFER[SI],AH
INCSI
POPBX
RET
BCDASCENDP
;-----------------------------------------------------------------
;日期数值转换成ASCII码字符子程序
BCDASC1PROCNEAR
PUSHBX
CBW
MOVBL,10
DIVBL
ADDAL,'0'
MOVDBUFFER1[SI],AL
INCSI
ADDAH,'0'
MOVDBUFFER1[SI],AH
INCSI
POPBX
RET
BCDASC1ENDP
;------------------------------------------------------------------
;秒表时间数值转换成ASCII码字符子程序
BCDASC2PROCNEAR
PUSHBX
CBW
MOVBL,10
DIVBL
ADDAL,'0'
MOVDBUFFER2[SI],AL
INCSI
ADDAH,'0'
MOVDBUFFER2[SI],AH
INCSI
POPBX
RET
BCDASC2ENDP
;---------------------------------------------------------------------
CODEENDS
ENDSTART
1.显示年,月、日,时、分、秒2年月日与时分秒可以分开显示。
最好是像网上那个有按M切换,或者是T是时间,M是日历
datasegment
db"00/00/0000:
00:
00",'$'
dataends
codesgsegment
assumecs:
codesg,ds:
data
start:
movax,data
movds,ax
movcx,6
movbx,0
movah,0
moval,9
s:
pushcx
pushax
out70h,al
inal,71h
movah,al
movcl,4
shrah,cl
andal,00001111b
addah,30h
addal,30h
movbyteptrds:
[bx],ah
movbyteptrds:
[bx1],al
popax
cmpal,4
jnas1
jmpshorts2
s1:
decal
s2:
cmpal,7
jneok
subal,2
ok:
decal
addbx,3
popcx
loops
movdx,0
movah,9
int21h
movax,4c00h
int21h
codesgends
endstart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 秒表