⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 时钟程序0701.asm

📁 一个很好用的时钟程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
          POP    06H
          POP    05H
          POP    04H
          POP    03H
          POP    02H
          POP    01H
          POP    00H
          POP    ACC
          POP    PSW
          RETI
          NOP
          NOP
CPL_B1:   MOV    SECOND,#00H           ;迢过一分钟秒个十位清零
          MOV    32H,#0FCH
          MOV    33H,#0FCH

          MOV    A,#01H                ;分钟加1
          ADD    A,MINUTE
          DA     A                     ;分钟单元换算成BCD码
          MOV    MINUTE,A
          NOP
          NOP
          MOV    A,#01H                ;预置计数分钟加1
          ADD    A,MINUTE_STEP
          DA     A                     ;换算成BCD码
          MOV    MINUTE_STEP,A
          NOP
          NOP
          MOV    53H,MINUTE            ;取出分钟个十位单元
          MOV    54H,MINUTE
          MOV    A,#0FH
          ANL    A,53H
          MOV    53H,A
          MOV    A,#0F0H
          ANL    A,54H
          SWAP   A
          MOV    54H,A
          MOV    DPTR,#TAB
          MOV    A,53H
          MOVC   A,@A+DPTR

          JB     TEMPTEST,CPL_3         ;非时间档秒个位不更新
          JB     ALLTIME,CPL_3
          JB     INTEN,CPL_3
          JB     MED,CPL_3
          JB     SETTIME,CPL_3
          JB     TEMP,CPL_3
          MOV    33H,A
CPL_3:    MOV    A,54H
          MOVC   A,@A+DPTR
          JB     TEMPTEST,CPL_4         ;非时间档秒个位不更新
          JB     ALLTIME,CPL_4
          JB     INTEN,CPL_4
          JB     MED,CPL_4
          JB     SETTIME,CPL_4
          JB     TEMP,CPL_4
          MOV    32H,A
CPL_4:
 ;**************************
          MOV    A,54H
          CJNE   A,#06H,CPL_C      ;分钟单元不满60退出
          JMP    CPL_C1            ;分钟单元满60小时单元加1
 CPL_C:   CALL   CPL_ABCD
          POP    07H
          POP    06H
          POP    05H
          POP    04H
          POP    03H
          POP    02H
          POP    01H
          POP    00H
          POP    ACC
          POP    PSW
          RETI

          NOP
          NOP
 CPL_C1:  MOV    MINUTE,#00H          ;分钟显示单元清零
          MOV    30H,#0FCH
          MOV    31H,#0FCH
 ;****************************
          MOV    A,#01H
          ADD    A,HOUR             ;小时单元加1
          DA     A                 ;小时单元换算成BCD码
          MOV    HOUR,A
          NOP
          NOP
          MOV    55H,HOUR           ;取出小时单元中的个十位单元
          MOV    56H,HOUR
          MOV    A,#0FH
          ANL    A,55H
          MOV    55H,A
          MOV    A,#0F0H
          ANL    A,56H
          SWAP   A
          MOV    56H,A
 ;***************
          MOV    DPTR,#TAB
          MOV    A,55H
          MOVC   A,@A+DPTR
          JB     TEMPTEST,CPL_5         ;非时间档秒个位不更新
          JB     ALLTIME,CPL_5
          JB     INTEN,CPL_5
          JB     MED,CPL_5
          JB     SETTIME,CPL_5
          JB     TEMP,CPL_5
          MOV    31H,A
          NOP
          NOP
CPL_5:    MOV    A,56H
          MOVC   A,@A+DPTR
          JB     TEMPTEST,CPL_6         ;非时间档秒个位不更新
          JB     ALLTIME,CPL_6
          JB     INTEN,CPL_6
          JB     MED,CPL_6
          JB     SETTIME,CPL_6
          JB     TEMP,CPL_6
          MOV    30H,A
 ;**************************
CPL_6:    MOV    A,HOUR
          CJNE   A,#100,CPL_D      ;不满100个小时退出
          MOV    HOUR,#00H          ;满100个小时清小时单元
          JMP    CPL_D1
CPL_D:    CALL   CPL_ABCD

CPL_D1:   POP    07H
          POP    06H
          POP    05H
          POP    04H
          POP    03H
          POP    02H
          POP    01H
          POP    00H
          POP    ACC
          POP    PSW
          RETI
;*******************************************
CPL_ABCD:  JB     07H,CPL_ABCD1    ;07H决定秒闪指示灯是否亮
           MOV    34H,#00H
           JMP    CPL_ABCD2
CPL_ABCD1: MOV    34H,#01H
CPL_ABCD2: MOV    A,MINUTE_STEP      ;运行时间与预置时间的小时比较,时间没到退出
           XRL    A,MINUTE_SET
           JNZ    CPL_ABCD3
           NOP
           NOP
           CLR    WUZH              ;时间到转换到雾化水
           ;CLR    MOTOR             ;时间到关风扇
           ;CLR    WUQI             ;时间到关雾化
           NOP
           NOP
           ;CLR    TR1              ;并不关实时时间
           ;SETB   00H              ;时间到,由运行状态变为待机状态
           ;CLR    02H              ;关运行标志
           ;CLR    03H              ;关暂停标志
           ;SETB   07H              ;秒闪常亮
           ;MOV    34H,#01H
           NOP
           NOP
           ;CLR    BEE             ;时间到启动音乐片

           nop
           nop
           SETB    TR2
           CLR     TR0
           MOV    A,#0F7H
           CALL   XS_OUT
           NOP
           NOP
           MOV    A,#9EH
           CALL   XS_OUT
           SETB   STROBE              ;锁存
           CLR    STROBE
           CALL   MUSIC
           CLR    TR2
           SETB   TR0
           nop
           nop
           CLR    BEE              ;判断喇叭电流
           ;MOV    4AH,#0FFH        ;音乐片终止软延时
           ;MOV    4BH,#45H
           ;MOV    4CH,#01H
CPL_ABCD3: RET
;*****************************************************************************
TAB:
DB	  0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H
DB	  0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH,00H
;*****************************************************************************

;**************************************
ANT_SET0:  JB     06H,SET_0_QU        ;防抖时间未到退出
          MOV    A,22H             ;SET查询子程序
          MOV    B,A
          MOV    C,P1.0            ;取样比较
          MOV    ACC.0,C
          MOV    22H,A
          XRL    A,B
          JZ     SET_0_QU            ;没有变化退出

          JB     10H,SET_0_QU

          ;CLR    04H               ;开机按下任何键终止开机状态
          SETB   06H               ;按下防抖标志置位
          MOV    2EH,#0A0H         ;置防抖时限
          MOV    2FH,#01H          ;置防抖延时限
          CALL   RETUN_EQU         ;返回时间档延时时限
          SETB   MED
          CLR    SETTIME
          CLR    ALLTIME
          CLR    INTEN
          CLR    TIME
          CLR    TEMPTEST
          CLR    TEMP
          ;CALL   SELECTION
SET_0_QU: RET
;**************************************
ANT_SET1:  JB     06H,SET_1_QU        ;防抖时间未到退出
          MOV    A,26H             ;SET查询子程序
          MOV    B,A
          MOV    C,P1.1            ;取样比较
          MOV    ACC.0,C
          MOV    26H,A
          XRL    A,B
          JZ     SET_1_QU            ;没有变化退出

          JB     P1.1,SET_1_QU

          ;CLR    04H               ;开机按下任何键终止开机状态
          SETB   06H               ;按下防抖标志置位
          MOV    2EH,#0A0H         ;置防抖时限
          MOV    2FH,#01H          ;置防抖延时限
          CALL   RETUN_EQU         ;返回时间档延时时限
          CLR    MED
          CLR    SETTIME
          CLR    ALLTIME
          SETB   INTEN
          CLR    TIME
          CLR    TEMPTEST
          CLR    TEMP
          ;CALL   SELECTION
SET_1_QU:  RET
;**************************************
ANT_SET2:  JB     06H,SET_2_QU     ;防抖时间未到退出
          MOV    A,27H             ;SET查询子程序
          MOV    B,A
          MOV    C,P1.2            ;取样比较
          MOV    ACC.0,C
          MOV    27H,A
          XRL    A,B
          JZ     SET_2_QU          ;没有变化退出

          JB     P1.2,SET_2_QU

          ;CLR    04H               ;开机按下任何键终止开机状态
          SETB   06H               ;按下防抖标志置位
          MOV    2EH,#0A0H         ;置防抖时限
          MOV    2FH,#01H          ;置防抖延时限
          CALL   RETUN_EQU         ;返回时间档延时时限
          CLR    TEMP
          CLR    MED
          SETB   SETTIME
          CLR    ALLTIME
          CLR    INTEN
          CLR    TIME
          CLR    TEMPTEST
          ;CALL   SELECTION
SET_2_QU: RET
;**************************************
ANT_SET3:  JB     06H,SET_3_QU        ;防抖时间未到退出
          MOV    A,28H             ;SET查询子程序
          MOV    B,A
          MOV    C,P1.3            ;取样比较
          MOV    ACC.0,C
          MOV    28H,A
          XRL    A,B
          JZ     SET_3_QU            ;没有变化退出

          JB     P1.3,SET_3_QU

          ;CLR    04H               ;开机按下任何键终止开机状态
          SETB   06H               ;按下防抖标志置位
          MOV    2EH,#0A0H         ;置防抖时限
          MOV    2FH,#01H          ;置防抖延时限
          CALL   RETUN_EQU         ;返回时间档延时时限
          CLR    MED
          CLR    SETTIME
          CLR    ALLTIME
          CLR    INTEN
          CLR    TIME
          CLR    TEMPTEST
          SETB   TEMP
          ;CALL   SELECTION
SET_3_QU: RET
;**************************************
ANT_SET4:  JB     06H,SET_4_QU     ;防抖时间未到退出
          MOV    A,29H             ;SET查询子程序
          MOV    B,A
          MOV    C,P1.6            ;取样比较
          MOV    ACC.0,C
          MOV    29H,A
          XRL    A,B
          JZ     SET_4_QU          ;没有变化退出

          JB     P1.6,SET_4_QU

          ;CLR    04H               ;开机按下任何键终止开机状态
          SETB   06H               ;按下防抖标志置位
          MOV    2EH,#0A0H         ;置防抖时限
          MOV    2FH,#01H          ;置防抖延时限
          CALL   RETUN_EQU         ;返回时间档延时时限
          CPL    CHANGE
          JB     CHANGE,SET_4_1
          CLR    MED
          CLR    SETTIME
          CLR    ALLTIME
          CLR    INTEN
          CLR    TIME
          SETB   TEMPTEST
          CLR    TEMP
          JMP    SET_4_2
SET_4_1:  CLR    MED
          CLR    SETTIME
          CLR    INTEN
          CLR    TIME
          CLR    TEMPTEST
          CLR    TEMP
          SETB   ALLTIME
SET_4_2:  ;CALL   SELECTION
SET_4_QU: RET
;**************************************
SELECTION:
ANT_SET_A:JB     TIME,LIGHT_1       ;是时间档送显示
          ;MOV    45H,#0FFH         ;不是时间档屏蔽显示
          JMP    LIGHT_1A
LIGHT_1:  MOV    45H,#0FFH
          MOV    46H,#0FFH
          MOV    47H,#0FFH
          MOV    48H,#0FFH
          RET

LIGHT_1A: JB     ALLTIME,LIGHT_2       ;是总时间档送显示
          ;MOV    46H,#0FFH
          JMP    LIGHT_2A
LIGHT_2:
          MOV    45H,#0FFH
          MOV    46H,#0FFH
          MOV    47H,#0FFH
          MOV    48H,#0FFH
          RET

LIGHT_2A: JB     SETTIME,LIGHT_3       ;是温度档送显示
          MOV    47H,#0FFH
          JMP    LIGHT_3A
LIGHT_3:
          MOV    47H,#0FEH
          MOV    45H,#0FFH
          MOV    46H,#0FFH
          ;MOV    47H,#0FFH
          MOV    48H,#0FFH
          RET

LIGHT_3A: JB     INTEN,LIGHT_3B      ;是雾化强度档送显示
          MOV    46H,#0FFH
          JMP    LIGHT_333
LIGHT_3B:
          MOV    46H,#0FDH
          MOV    45H,#0FFH
          ;MOV    46H,#0FFH
          MOV    47H,#0FFH
          MOV    48H,#0FFH
          RET


LIGHT_333:JB     MED,LIGHT_333A    ;是雾化强度档送显示
          MOV    45H,#0FFH         ;不是时间档屏蔽显示
          JMP    LIGHT_444
LIGHT_333A:
          MOV    45H,#0FBH
          ;MOV    45H,#0FFH
          MOV    46H,#0FFH
          MOV    47H,#0FFH
          MOV    48H,#0FFH
          RET

LIGHT_444:JB     TEMP,LIGHT_444A    ;是雾化强度档送显示
          MOV    48H,#0FFH
          JMP    SET_QU
LIGHT_444A:
          MOV    48H,#7FH
          MOV    45H,#0FFH
          MOV    46H,#0FFH
          MOV    47H,#0FFH
          ;MOV    48H,#0FFH
          RET


SET_QU:   RET
;SET查询子程序结束
;**************************************************************************************
LIGHT_4:  JNB    TIME,LIGHT_4A
          JB     03H,LIGHT_4A3
          ;JB     00H,LIGHT_4A2     ;是待机状态一直点亮秒闪
          JNB    03H,LIGHT_4A1     ;是暂停状态一直点亮秒闪
          JMP    LIGHT_4A1
LIGHT_4A2:SETB   07H
          MOV    34H,#01H
LIGHT_4A1:CALL   RETUN0           ;恢复原来显示数据状态
          CALL   RETUN1
          CALL   RETUN2
          JMP    LIGHT_4A4
LIGHT_4A3:MOV    30H,#0CEH         ;显示暂停“PUSH”

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -