微机课程设计之数字时钟程序.docx

上传人:b****5 文档编号:8568876 上传时间:2023-01-31 格式:DOCX 页数:12 大小:52.62KB
下载 相关 举报
微机课程设计之数字时钟程序.docx_第1页
第1页 / 共12页
微机课程设计之数字时钟程序.docx_第2页
第2页 / 共12页
微机课程设计之数字时钟程序.docx_第3页
第3页 / 共12页
微机课程设计之数字时钟程序.docx_第4页
第4页 / 共12页
微机课程设计之数字时钟程序.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

微机课程设计之数字时钟程序.docx

《微机课程设计之数字时钟程序.docx》由会员分享,可在线阅读,更多相关《微机课程设计之数字时钟程序.docx(12页珍藏版)》请在冰豆网上搜索。

微机课程设计之数字时钟程序.docx

微机课程设计之数字时钟程序

HappyBirthdayToYou

                                                         一、运行界面

              

 

                                                             二、 程序

;***********************************定义数据段*********************************

DATASEGMENT                                 

DATEDIS    DB' 0000-00-00','$'                          ;日期显示           

TIMEDIS    DB'00:

00:

00','$'                                ;时间显示

LIGHT_ON DB'LIGHT_ON','$'                             ;模拟灯开                 

LIGHT_OFFDB'LIGHT_OFF','$'                             ;模拟灯关

SET_FAIL            DB'SETFAIL!

                              ','$'    ;更改响铃、广播失败                                      

SET_SUCCE_RADDB'CHANGEVADIOSUCCESS(45M)!

','$'    ;更改广播成功

SET_SUCCE_RIN DB'CHANGERING SUCCESS(10M)!

','$'      ;更改响铃成功

SET_RAD0           DB'                                       ','$'

SET_RIN0            DB'                                       ','$'

TIME_RINGDB  07H,08H,09H,0AH,0BH,0CH,0DH;7~20点会整点或过5分打铃

                 DB  0EH,0FH,10H,11H,12H,13H,14H  ;10:

30会广播(默认)

FLAGDB00H               ;控制一分之内只响铃一次(不控制会一直响)

NOW_GUDB00H        ;区分手动广播和默认广播

RING_RECOVERDB00H;恢复打铃时间(5分钟)

RADIO_RECOVERDB00H;恢复广播时间

TIME_SET    DB 05H   ;默认响铃分(5分钟)                                

TIME_TWO  DB 0AH  ;手动设置打铃(10分钟)                          

TIME_SET0  DB 00H   ;默认响铃(0分钟)                             

TIME_MUS  DB 1EH   ;默认广播(30分钟)                     

TIME_MUSTWODB45;手动设置广播(45分钟)                                    

         

MUS_FREG    DW262,262,294,262,349         ;广播频率表              

                    DW330,262,262,294,262                       

                    DW392,349,262,262,523                                                     

                    DW440,349,262,262,466                                       

                    DW466,440,262,392,349,-1         

MUS_FREG1 DW393,393,393,294,-2            ;响铃频率表    

                   DW495,495,495,393,-2

                   DW393,495,589,589,-2

                   DW525,495,441,-2

                   DW441,495,525,-2,525,-2

                   DW495,441,495,393,-2

                   DW393,495,441,294,-2

                   DW371,441,393,-1

STR1  DB'*********************Functiondeclaration*****************',0DH,0AH,'$'

STR2  DB'  OpenLight CloseLight Radio Ring ',0DH,0AH,'$'    

STR3  DB'        ChangeRadio      ChangeRing              ',0DH,0AH,'$'    

STR4  DB'**********************************************************',0DH,0AH,'$' 

STR5  DB'                                                                                         ',0DH,0AH,'$' 

STR6  DB'                                                                                         ',0DH,0AH,'$';灯、时间的状态显示处

STR7  DB'                                                                                        ',0DH,0AH,'$' ;修改后的状态显示处

STR8  DB'**********************************************************',0DH,0AH,'$' 

DATAENDS 

;********************************定义堆栈段***********************************

STACKSEGMENT

   STA DW255DUP(?

 TOPEQU$-STA;50

STACKENDS

;**********************************数据段*************************************

CODESEGMENT

 ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MAIN     PROCFAR

 MOVAX,DATA

  MOVDS,AX

 MOVAX,STACK

 MOVSS,AX

 MOVAX,TOP

              MOVSP,AX      ;各段初始化

              CLI                              

              MOVAL,1CH

              MOVAH,35H

              INT21H 

              PUSHES                        

              PUSHBX                    

              PUSHDS             

              MOVDX,OFFSETCLOCK

             MOVAX,SEGCLOCK

             MOVDS,AX                   

             MOVAX,251CH

             INT21H             ;写入新的中断向量(CLOCK)             

             POPDS 

             CALLINITIAL    ;屏面初始化           

             STI                           

SHOW    MACROSTR     ;显示字符串函数

 LEADX,STR

 MOVAH,9

 INT21H

ENDM      

SHOWH:

  CALLDELAY_SOFT  ;软件延时函数

               MOVAH,0BH

               INT21H                 ;读键盘状态

               CMPAL,00H

               JZCONTINU          ;无键按下继续等待

               MOVAH,08H          

               INT21H                 ;读取键值

               CMPAL,4FH            ;若是O就开灯

               JZOPEN_LIGHT      

               CMPAL,43H            ;若是C就关灯

               JZ CLOSE_LIGHT

               CMPAL,4DH           ;若是M就开音乐广播(手动控制)

               JZ   PLAY_MUSIC

               CMPAL,52H           ;若是R就打铃(手动控制)

               JZRING                    

               CMPAL,56H           ;若是V就修改广播时间

              JZSET_VODZ

              CMPAL,54H           ;若果是T就修改打铃时间

              JZ SET_TIME

              CMPAL,1BH           ;退出键ESC   

              JZEXIT1

              JMPSHOWH               

CONTINU:

    JMPSHOWH

OPEN_LIGHT:

MOVDH,06H  ;开灯

                    MOVDL,03H

                    MOVBX,00H

                    MOVAH,02H

                    INT10H 

                    SHOWLIGHT_ON

                    JMPSHOWH

CLOSE_LIGHT:

MOVDH,06H ;关灯

                    MOVDL,03H

                    MOVBX,00H

                    MOVAH,02H

                    INT10H

                    SHOWLIGHT_OFF

                    JMPSHOWH 

PLAY_MUSIC:

   MOV  AL,01H      ;播放广播

                    MOV  NOW_GU,AL

                       CALL MUSIC   

                       MOVAL,00H

                       MOV  NOW_GU,AL           

                      JMPSHOWH

 RING:

           CALLSOUND;打铃

                      JMPSHOWH

SET_VODZ:

  CMPRADIO_RECOVER,00H;恢复广播时间

                    JZSETVODZ          

                    MOV AL,00H

                    MOVRADIO_RECOVER,AL

                     MOVDH,09H

                    MOVDL,0FH

                    MOVBX,00H

                    MOVAH,02H

                    INT10H

                    MOVAL,30

                    MOVTIME_MUS,AL

                    SHOWSET_RAD0  

                   JMPSHOWH 

EXIT1:

          JMPEXIT

SET_TIME:

     CMPRING_RECOVER,00H;恢复打铃时间

                      JZSETTIME           

                    MOVAL,00H

                    MOVRING_RECOVER,AL

                     MOVDH,08H

                    MOVDL,0FH

                    MOVBX,00H

                    MOVAH,02H

                    INT10H

                   MOVAL,05H

                    MOVTIME_SET,AL

                    SHOWSET_RIN0  

                   JMPSHOWH

SETTIME:

      MOVAL,01H                 ;设置打铃时间

                    MOVRING_RECOVER,AL

                    MOVDH,08H

                    MOVDL,0FH

                    MOVBX,00H

                    MOVAH,02H

                    INT10H

                   CALLSET_TM

                  JMPSHOWH

                  

SETVODZ:

     MOVAL,01H               ;设置广播时间

                    MOVRADIO_RECOVER,AL

                    MOVDH,09H

                    MOVDL,0FH

                    MOVBX,00H

                    MOVAH,02H

                    INT10H

                   CALL SET_VOD

                   JMPSHOWH

EXIT:

POPBX                                     ;退出程序

       POPES

       MOVDX,BX

       MOVBX,ES

       MOVDS,BX

       MOVAX,251CH

       INT21H

       MOVAH,4CH

       INT21H

       RET

MAINENDP

INITIALPROCNEAR                      ;初始化程序

           SHOWSTR1

           SHOWSTR2

           SHOWSTR3

           SHOWSTR4

           SHOWSTR5

           SHOWSTR6

           SHOWSTR7

           SHOWSTR8

           RET

INITIALENDP

;*********************************修改打铃、广播时间************

SET_VOD   PROCNEAR

                      CLI

                      MOVAL,TIME_MUSTWO

                      MOVTIME_MUS,AL

                      SHOWSET_SUCCE_RAD

                      STI

                      RET

SET_VOD      ENDP

SET_TM   PROCNEAR

                      CLI

                      MOVAL,TIME_TWO

                      MOVTIME_SET,AL

                      SHOWSET_SUCCE_RIN

                      STI

                      RET

SET_TM         ENDP

;**************************软件延时程序************************

DELAY_SOFT PROCNEAR

                    PUSHCX

                    MOVCX,0FFFFH                

 CYCLE:

         MOVAL,AH

                    MOVBX,0FFFFH

 CYCLE1:

       MOVAL,AH

                    DECBX

                    CMPBX,0

                    JNZ   CYCLE1

                    LOOPCYCLE

                    POPCX

                    RET

 DELAY_SOFT  ENDP                              

;***********************中断服务程序***************************

CLOCKPROCNEAR

     PUSHDS

     MOVAX,DATA                 

     MOVDS,AX

     CALLDATEDISPLAY

     CALLTIMEDISPLAY 

     POPDS

     IRET

CLOCKENDP  

;************************中断程序完******************************

;******************************年份显示子程序********************

DATEDISPLAYPROCNEAR

               PUSHSI

 MOVAH,2AH                 ;取当前系统日期

 INT21H

 MOVAX,CX                   

 MOVBX,10                       

 LEASI,DATEDIS+4           

 MOVCX,4                     

 PUSHDX                 

TAB:

        XORDX,DX               

 DIVBX                      

 ADDDL,30H               

 MOV[SI],DL                

 DECSI                     

 LOOPTAB                  

 POPDX                    

 MOVAL,DL                     

 XORAH,AH                    

 DIVBL

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

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1