收藏 分销(赏)

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

上传人:仙人****88 文档编号:8924247 上传时间:2025-03-08 格式:DOCX 页数:20 大小:210.76KB 下载积分:10 金币
下载 相关 举报
微机原理实时时钟课程设计.docx_第1页
第1页 / 共20页
微机原理实时时钟课程设计.docx_第2页
第2页 / 共20页


点击查看更多>>
资源描述
西南科技大学微机原理课程设计 题目 电子实时时钟软件设计 1 任务 Date YYYY:MM:DD Time HH:MM:SS Beep On/Off HH:MM:SS Meter 00:00:00:00 M M M M 实现如图所示电子日历时钟功能。 2 基本要求 1) 可通过M键切换显示模式:日期(年、月、日)、时间(小时、分、秒)、秒表(小时、分、秒、1/100秒)、闹钟(小时、分)。 2) 在秒表显示模式,可通过I键切换(启动/暂停)计时,当暂停计时时可通过A键复位。 3) 在闹钟显示模式,有两种输入方式 方式一:直接按格式输入时间 方式二:可通过A键依次使On/Off标志、小时、分、秒闪烁或变色,这时可通过I键切换On/Off标志或加1调整。 4) 可通过esc键结束程序。 3 扩展要求 1) 在日期显示模式,可通过A键依次使年、月、日闪烁或变色,这时可通过I键加1调整。 2) 在时间显示模式,可通过A键依次使小时、分、秒闪烁或变色,这时可通过I键加1调整。 3) 调整和秒表操作不影响日期和时间的准确性。 4) 自定义的其它扩展功能 说明:本程序为西科微机原理课程设计题目,下面的代码只实现了基本要求部分,并且秒表还存在部分问题(秒表模式修改了定时器0,结束后对时间略有影响,测试闹钟时可以直接在秒表模式下,按q键跳过秒表模式),代码仅供参考,欢迎对其繁琐处进行修改,调试。 各部分程序流程图: 该过程与代码略有不同,处理on/off 位是后来添加的代码,流程图没有加入 DATA SEGMENT UIS DB 0DH,0AH,10 dup(0),50 DUP('*'),'$' UIE DB 0DH,0AH,10 dup(0),50 DUP('*'),'$';界面字符 MSG1 DB "THE DATA IS $" MSG2 DB "THE TIME IS $" MSGIN DB "PLEASE CHOOSE INPUT METHODS:",0DH,0AH DB 21 DUP(" "),"PRESS A FOR A/I METHOD,OR FOR DIRECT METHOD$" MSGDIR DB "PLEASE INPUT LIKE THIS: OO:00",0DH,0AH DB 21 DUP(" "),"PRESS ENTER TO CONFIRM $" MSGWARN DB "ERROR!PLEASE ENTER AGAIN$" MSGAI DB "PRESS a TO CHANGE POSITION ",0DH,0AH DB 21 DUP(" "),"i TO CHANGE VALUE,ENTER TO CONFIRM $" MSGSEC DB "PRESS i TO START AND STOP ",0DH,0AH DB 21 DUP(" "),"q TO QUIT,a TO CLEAR IF IT HAS STOPED $" NULINE DB 25 DUP(?),'$' ;清空行 KSBUF DB 6,0,6 DUP(?) KEYNUM DB ? MODE DB ? DAY DB ? MON DB ? YEAR DW ? SEC DB ? MSEC DB ? MIN DB ? HOUR DB ? BEEPHOUR DB 0 ,0 BEEPMIN DB 0,0 SWIOFF DB "FF$" SWION DB "N $" SETSTR DB "00:00 OFF/ON",'$' WSTR DB "00:00:00 ",'$' BFLAG DB 0 SFLAG DB 0 INISEG DW 0 INIOFF DW 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX CALL CLEAR CALL CREATUI MOV MODE,0 CALL SOUND AGAIN: CALL REFRESH ;刷新时间日期 ;******BFALG 为闹钟与秒表标志位。下面为处理闹钟 CMP BFLAG,0 JE SETMOU CMP BFLAG,1 JNE CRING CALL CHESTART JMP SETMOU CRING: CALL CHESTOP JMP SETMOU JMAGAN: JMP AGAIN ;二级跳转 SETMOU: MOV DX,0815H MOV AH,02 MOV BH,0 INT 10H ;设置光标 ;模式判断*********** CMP MODE,0 JE MODE0 CMP MODE,1 JE MODE1 CMP MODE,2 JE MODE2 CMP MODE,3 JE MODE3 MODE0: CALL TIMESHOW JMP KEYSCAN MODE1: CALL DATESHOW JMP KEYSCAN MODE2: CALL BEEP MOV MODE,03H JMP KEYSCAN MODE3: CALL SEDWHATCH MOV MODE,0H ;键盘扫描********* KEYSCAN:MOV AH,0BH INT 21H CMP AL,00 JE AGAIN MOV AH,08H INT 21H CMP AL,1BH JZ STOP CMP AL,'m' JNE AGAIN INC MODE CMP MODE,4 JNE JMAGAN MOV MODE,0 JMP JMAGAN STOP: MOV AH,4CH INT 21H ;*******时间日期刷新***** REFRESH PROC PUSH AX PUSH CX PUSH DX MOV AH,2AH INT 21H MOV DAY,DL MOV MON,DH MOV YEAR,CX MOV AH,2CH INT 21H MOV HOUR,CH MOV MIN,CL MOV SEC,DH MOV MSEC,DL POP DX POP CX POP AX RET REFRESH ENDP ;********年月日显示 DATESHOW PROC PUSH AX PUSH CX PUSH DX MOV DX,OFFSET MSG1 MOV AH,09 INT 21H MOV AX,YEAR ;取年 CALL BTOBCD MOV DL,'/' MOV AH,02H INT 21H MOV AH,0 MOV Al,MON ;月 CALL BTOBCD MOV DL,'/' MOV AH,02H INT 21H MOV AH,0 MOV AL,DAY ;日 CALL BTOBCD MOV DX,OFFSET NULINE MOV AH,09 INT 21H POP DX POP CX POP AX RET DATESHOW ENDP ;*********时间显示 TIMESHOW PROC PUSH AX PUSH BX PUSH CX PUSH DX MOV DX,OFFSET MSG2 MOV AH,09 INT 21H MOV AH,0 MOV AL,HOUR ;取时 CALL BTOBCD MOV DL,':' MOV AH,02H INT 21H MOV AH,0 MOV AL,MIN ;分 CALL BTOBCD MOV DL,':' MOV AH,02H INT 21H MOV AH,0 MOV AL,SEC ;秒 CALL BTOBCD CMP SFLAG,0 JE TOCLR MOV DL,':' MOV AH,02H INT 21H MOV AH,0 MOV AL,MSEC ;10M秒 CALL BTOBCD TOCLR: MOV DX,OFFSET NULINE MOV AH,09 INT 21H POP DX POP CX POP BX POP AX RET TIMESHOW ENDP ;将二进制转化为BCD码并显示 BTOBCD PROC PUSH DX PUSH BX PUSH CX MOV CX,0 MOV BX,10 BTOD: MOV DX,0 DIV BX PUSH DX INC CL CMP AX,0 JA BTOD SHOW: POP DX ADD DL,30h MOV AH,02h INT 21h LOOP SHOW POP CX POP BX POP DX RET BTOBCD ENDP ;*****闹钟设定****** BEEP PROC MOV DX,0715H MOV AH,02 MOV BH,0 INT 10H MOV DX,OFFSET MSGIN MOV AH,09 INT 21H CMP BFLAG,2;设定时还在响,那么关闭 JNE SETM IN AL,61H AND AL,0FDH OUT 61H,AL SETM: MOV DX,0715H MOV AH,02 MOV BH,0 INT 10H MOV AH,07H INT 21H CMP AL,'a' JE INA ;选择输入方式,a为切换输入,其他键为键盘直接输入 MOV DX,OFFSET MSGDIR MOV AH,09 INT 21H MOV DX,0915H MOV AH,02 MOV BH,0 INT 10H MOV DX,OFFSET KSBUF MOV AH,10 INT 21H ;键盘输入字符存入缓存区 MOV BFLAG,1 MOV SI,OFFSET KSBUF+1 MOV CL,BYTE PTR[SI] MOV BX,10 INC SI AND BYTE PTR[SI],0FH MOV AL,BYTE PTR[SI] MUL BL INC SI AND BYTE PTR[SI],0FH ADD AL,BYTE PTR[SI] MOV BEEPHOUR,AL ADD SI,2 AND BYTE PTR[SI],0FH MOV AL,BYTE PTR[SI] MUL BL INC SI AND BYTE PTR[SI],0FH ADD AL,BYTE PTR[SI] MOV BEEPMIN,AL JMP TOEND INA: MOV DX,OFFSET MSGAI ;A/I切换输入方式 MOV AH,09 INT 21H MOV DX,0915H MOV AH,02 MOV BH,0 INT 10H MOV DX,OFFSET SETSTR MOV AH,09 INT 21H MOV DX,0915H MOV AH,02 MOV BH,0 INT 10H MOV SI,OFFSET BEEPHOUR ;*****a键切换光标位置********* KASCAN: MOV AH,0BH INT 21H CMP AL,00 JE KASCAN MOV AH,08H INT 21H MOV KEYNUM,AL CMP AL,'a' JNE KISCAN MOV BH,0 MOV AH,03H INT 10H INC DL INC SI CMP DL,17H JE TOMI CMP DL,1AH JE TOSW CMP DL,22H JE TOHO JMP SETF TOMI: INC DL JMP SETF TOSW: MOV DL,21H JMP SETF TOHO: MOV DL,15H MOV SI,OFFSET BEEPHOUR SETF: MOV AH,02H INT 10H KAJMP: JMP KASCAN ;*****i键改变光标处字符***** KISCAN: CMP KEYNUM,'i' JNE JKCR0 MOV AH,08H;读光标处字符 INT 10H INC AL INC BYTE PTR[SI] CMP SI,OFFSET BEEPHOUR JE JUGHOR CMP SI,OFFSET BEEPHOUR+1 JE JUGHOR2 CMP SI,OFFSET BEEPHOUR+2 JE JUGMIN CMP SI,OFFSET BEEPHOUR+3 JE JUGMIN2 CMP SI,OFFSET BEEPHOUR+4 JE CHGSW JMP JUGHOR JKCR0: JMP KCR JUGHOR: CMP AL,32H JNA PRINT MOV BYTE PTR[SI],0 MOV AL,30H JMP PRINT JUGHOR2:CMP BEEPHOUR,2H JE TO2 CMP AL,39H JNA PRINT MOV BYTE PTR[SI],0 MOV AL,30H JMP PRINT TO2: CMP AL,34H JNA PRINT MOV BYTE PTR[SI],0 MOV AL,30H JMP PRINT JUGMIN: CMP AL,35H JNA PRINT MOV BYTE PTR[SI],0 MOV AL,30H JMP PRINT JUGMIN2:CMP AL,39H JNA PRINT MOV BYTE PTR[SI],0 MOV AL,30H JMP PRINT CHGSW: DEC BYTE PTR[SI] CMP BFLAG,0 JE TOON MOV BFLAG,0 MOV DX,OFFSET SWIOFF JMP PRISW TOON: MOV BFLAG,1 MOV DX,OFFSET SWION PRISW: MOV AH,09H INT 21H MOV DX,0921H MOV AH,02 MOV BH,0 INT 10H JMP KAJMP0 PRINT: MOV CX,1H MOV BX,07H MOV AH,09H INT 10H KAJMP0: JMP KAJMP KCR: CMP KEYNUM,0DH JNE KAJMP0 MOV AL,BEEPHOUR MOV BX,10 MUL BL ADD AL,BEEPHOUR+1 MOV BEEPHOUR,AL MOV AL,BEEPMIN MUL BL ADD AL,BEEPMIN+1 MOV BEEPMIN,AL TOEND: RET BEEP ENDP CHESTART PROC MOV CH,HOUR MOV CL,MIN CMP BEEPHOUR,CH JNE RETURN CMP BEEPMIN,CL JNE RETURN IN AL,61H OR AL,2 OUT 61H,AL INC BFLAG RETURN: RET CHESTART ENDP CHESTOP PROC MOV CL,SEC CMP CL,3 JB ESCP IN AL,61H AND AL,0FDH OUT 61H,AL AND BFLAG,0 ESCP: RET CHESTOP ENDP SOUND PROC MOV AL,10110110B OUT 43H,AL MOV DX,0012H MOV AX,34DEH MOV DI,1000 DIV DI OUT 42H,AL MOV AL,AH OUT 42H,AL IN AL,61H AND AL,0FDH OUT 61H,AL IN AL,61H OR AL,1 OUT 61H,AL RET SOUND ENDP ;*********以下为秒表部分************ SEDWHATCH PROC MOV DX,0715H MOV AH,02 MOV BH,0 INT 10H MOV DX,OFFSET MSGSEC MOV AH,09 INT 21H MOV DX,0915H MOV AH,02 MOV BH,0 INT 10H CLI MOV AL,1CH MOV AH,35H INT 21H MOV INISEG,ES MOV INIOFF,BX SHOWINI:MOV DX,0915H MOV AH,02 MOV BH,0 INT 10H MOV DX,OFFSET WSTR MOV AH,09 INT 21H KSCANW: MOV AH,0BH INT 21H CMP AL,00 JE KSCANW MOV AH,08H INT 21H CMP AL,'q' JE QTIME CMP AL,'i' JE TOI CMP AL,'a' JNE KSCANW CMP SFLAG,1 JE KSCANW JMP SHOWINI TOI: MOV SFLAG,1 MOV HOUR,0 MOV MIN,0 MOV SEC,0 MOV MSEC,0 CALL INITIR WSTART: MOV DX,0915H MOV AH,02 MOV BH,0 INT 10H CALL TIMESHOW WSTOP: MOV AH,0BH INT 21H CMP AL,00 JE WSTART MOV AH,08H INT 21H CMP AL,'i' JNE WSTART MOV SFLAG,0 JMP KSCANW QTIME: CLI PUSH DS MOV DX,INIOFF MOV DS,INISEG MOV AL,1CH MOV AH,25H INT 21H STI POP DS MOV AL, 00110100B OUT 43H, AL MOV AL,0FFH OUT 40H,AL OUT 40H,AL MOV DX,0715H MOV AH,02 MOV BH,0 INT 10H MOV DX,OFFSET NULINE MOV AH,09 INT 21H MOV DX,0915H MOV AH,02 MOV BH,0 INT 10H MOV DX,OFFSET NULINE MOV AH,09 INT 21H RET SEDWHATCH ENDP INITIR PROC CLI ;初始化8253计时器0,先送低八位,再送高八位,工作方式3,二进制计数方式 MOV AL, 00110110B OUT 43H, AL MOV AX, 11932 ;计数初值送AX OUT 40H, AL MOV AL,AH OUT 40H,AL PUSH DS MOV DX,OFFSET TIMER MOV AX,SEG TIMER MOV DS,AX MOV AX,251CH INT 21H POP DS RET INITIR ENDP TIMER PROC PUSH AX PUSH DS MOV AX,DATA MOV DS,AX INC MSEC CMP MSEC,100 JNE QUIT MOV MSEC,0 INC SEC CMP SEC,60 JNE QUIT AND SEC,0H INC MIN CMP MIN,60 JNE QUIT INC HOUR AND MIN,0H QUIT: POP AX MOV DS,AX POP AX STI IRET TIMER ENDP CREATUI PROC PUSH AX PUSH BX PUSH DX MOV DX,OFFSET UIS MOV AH,09 INT 21H MOV DX,1000H MOV AH,02 MOV BH,0 INT 10H MOV DX,OFFSET UIE MOV AH,09 INT 21H POP DX POP BX POP AX RET CREATUI ENDP CLEAR PROC MOV AX,0002H INT 10H RET CLEAR ENDP CODE ENDS END START
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服