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

📄 时钟程序0701.asm

📁 一个很好用的时钟程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
          MOV    31H,#7CH
          MOV    32H,#0B6H
          MOV    33H,#6EH
          CLR    07H               ;暂停状态秒闪
          MOV    34H,#00H
LIGHT_4A4:
            RET

LIGHT_4A: JNB    ALLTIME,LIGHT_4B
          CLR    07H
          MOV    34H,#00H          ;秒闪亮与不亮
          CALL   SET_ALLTIME
          RET

LIGHT_4B: JNB    TEMP,LIGHT_4C
          JB     01H,LIGHT_4B_HEI
          CLR    07H
          MOV    34H,#00H
          MOV    30H,#9CH          ;第1位数码管内容
          MOV    31H,#02H          ;第2位数码管内容
          MOV    A,TEMPERATURE
          ANL    A,#0F0H
          SWAP   A
          MOV    B,A
          MOV    DPTR,#TAB
          MOVC   A,@A+DPTR
          MOV    32H,A             ;第3位数码管内容
          NOP
          MOV    A,TEMPERATURE
          ANL    A,#0FH
          MOV    B,A
          MOV    DPTR,#TAB
          MOVC   A,@A+DPTR
          MOV    33H,A             ;第4位数码管内容
          MOV    34H,#00H          ;秒闪亮与不亮
          RET
LIGHT_4B_HEI:
          MOV    30H,#9CH
          MOV    31H,#02H
          MOV    32H,#00H
          MOV    33H,#00H
          MOV    34H,#00H
          RET

LIGHT_4C: JNB    INTEN,LIGHT_4D
          JB     01H,LIGHT_4C_HEI
          MOV    30H,#00H          ;第1位数码管内容
          MOV    31H,#00H          ;第2位数码管内容
          MOV    32H,#00H          ;第3位数码管内容

          MOV    A,INTENSITY
          MOV    DPTR,#TAB
          MOVC   A,@A+DPTR
          MOV    33H,A             ;第4位数码管内容
          CLR    07H
          MOV    34H,#00H          ;秒闪亮与不亮
          RET
LIGHT_4C_HEI:
          MOV    30H,#00H
          MOV    31H,#00H
          MOV    32H,#00H
          MOV    33H,#00H
          MOV    34H,#00H
          RET

LIGHT_4D: JNB    SETTIME,LIGHT_4E
          JB     01H,LIGHT_4D_HEI
          SETB    07H
          MOV     34H,#01H
          CALL   RETUN0           ;恢复原来显示数据状态
          CALL   RETUN1
          CALL   RETUN2
          RET
LIGHT_4D_HEI:
          MOV    30H,#00H
          MOV    31H,#00H
          MOV    32H,#00H
          MOV    33H,#00H
          MOV    34H,#01H
          RET

LIGHT_4E: JNB    MED,LIGHT_4F
          JB     01H,LIGHT_4E_HEI
          CLR    07H
          CALL   medicine
          MOV    34H,#00H          ;秒闪不亮 ]
          RET
LIGHT_4E_HEI:
          MOV    30H,#00H
          MOV    31H,#00H
          MOV    32H,#00H
          MOV    33H,#00H
          MOV    34H,#00H
          RET

LIGHT_4F: JNB    TEMPTEST,LIGHT_QU
          CLR    07H
          MOV    34H,#00H
          MOV    30H,#9CH          ;第1位数码管内容
          MOV    31H,#02H          ;第2位数码管内容
          MOV    A,TEMPERATURE
          ANL    A,#0F0H
          SWAP   A
          MOV    B,A
          MOV    DPTR,#TAB
          MOVC   A,@A+DPTR
          MOV    32H,A             ;第3位数码管内容
          NOP
          MOV    A,TEMPERATURE
          ANL    A,#0FH
          MOV    B,A
          MOV    DPTR,#TAB
          MOVC   A,@A+DPTR
          MOV    33H,A             ;第4位数码管内容
          MOV    34H,#00H          ;秒闪亮与不亮


LIGHT_QU: RET
;****************************************************
;总时间送缓存区显示
SET_ALLTIME:MOV  A,HOUR2_ALL
          ANL    A,#0F0H
          SWAP   A
          MOV    B,A
          XRL    A,#00H
          JZ     SET_TIME1
          JMP    SET_SHOW0

SET_TIME1:MOV    30H,#00H
          MOV    A,HOUR2_ALL
          ANL    A,#0FH
          MOV    B,A
          XRL    A,#00H
          JZ     SET_TIME2
          JMP    SET_SHOW1

SET_TIME2:MOV    31H,#00H
          MOV    A,HOUR1_ALL
          ANL    A,#0F0H
          SWAP   A
          MOV    B,A
          XRL    A,#00H
          JZ     SET_TIME3
          JMP    SET_SHOW2

SET_TIME3:MOV    32H,#00H
          JMP    SET_SHOW3

SET_SHOW0:MOV  A,HOUR2_ALL
          ANL    A,#0F0H
          SWAP   A
          MOV    DPTR,#TAB
          MOVC   A,@A+DPTR
          MOV    30H,A

SET_SHOW1:MOV    A,HOUR2_ALL
          ANL    A,#0FH
          MOV    DPTR,#TAB
          MOVC   A,@A+DPTR
          MOV    31H,A

SET_SHOW2:MOV    A,HOUR1_ALL
          ANL    A,#0F0H
          SWAP   A
          MOV    DPTR,#TAB
          MOVC   A,@A+DPTR
          MOV    32H,A

SET_SHOW3:MOV    A,HOUR1_ALL
          ANL    A,#0FH
          MOV    DPTR,#TAB
          MOVC   A,@A+DPTR
          MOV    33H,A

          RET
;************************************************************************************
;药量送缓存区显示
;****************************************************
medicine: MOV    A,MED_H
          ANL    A,#0F0H
          SWAP   A
          MOV    B,A
          XRL    A,#00H
          JZ     medicine1
          JMP    medicine_SHOW0

medicine1:MOV    30H,#00H
          MOV    A,MED_H
          ANL    A,#0FH
          MOV    B,A
          XRL    A,#00H
          JZ     medicine2
          JMP    medicine_SHOW1

medicine2:MOV    31H,#00H
          MOV    A,MED_L
          ANL    A,#0F0H
          SWAP   A
          MOV    B,A
          XRL    A,#00H
          JZ     medicine3
          JMP    medicine_SHOW2

medicine3:MOV    32H,#00H
          JMP    medicine_SHOW3

medicine_SHOW0:MOV  A,MED_H
          ANL    A,#0F0H
          SWAP   A
          MOV    DPTR,#TAB
          MOVC   A,@A+DPTR
          MOV    30H,A

medicine_SHOW1:MOV    A,MED_H
          ANL    A,#0FH
          MOV    DPTR,#TAB
          MOVC   A,@A+DPTR
          MOV    31H,A

medicine_SHOW2:MOV    A,MED_L
          ANL    A,#0F0H
          SWAP   A
          MOV    DPTR,#TAB
          MOVC   A,@A+DPTR
          MOV    32H,A

medicine_SHOW3:MOV    A,MED_L
          ANL    A,#0FH
          MOV    DPTR,#TAB
          MOVC   A,@A+DPTR
          MOV    33H,A

          RET
;************************************************************************************

ANT_START:
          JB     06H,START_QU      ;防抖时间未到退出
          MOV    A,25H             ;START查询子程序
          MOV    B,A
          MOV    C,P1.7            ;取样比较
          MOV    ACC.0,C
          MOV    25H,A
          XRL    A,B
          JZ     START_QU          ;没有变化退出

          JB     P1.7,START_QU
          CLR    01H                ;按下键时必须亮数码管
          MOV    72H,#0FFH          ;置亮时限
          MOV    73H,#2
          NOP
          NOP
          SETB   06H
          MOV    2EH,#0A0H         ;置防抖时限
          MOV    2FH,#01H          ;置防抖延时限
          JB     MED,START_PUT     ;在设置档按下键存储数据
          JB     SETTIME,START_PUT     ;在设置档按下键存储数据
          JB     TEMP,START_PUT     ;在设置档按下键存储数据
          JB     INTEN,START_PUT     ;在设置档按下键存储数据
          JB     TEMPTEST,START_QU      ;在总时间档按下键不理会
          JB     ALLTIME,START_QU  ;在温度档不理会
          JB     02H,START_STOP    ;在运行状态下按下开始键进入暂停
          JB     03H,START_GOTO    ;在暂停状态下按下进入雾化状态
          JMP    START_SELECT  ;在待机时判断雾化水还是雾化药
START_QU: RET
;*****************************
START_STOP:
          SETB   03H               ;暂停状态
          CLR    02H               ;终止运行
          CLR    TR1               ;停止计时
          MOV    30H,#0CEH         ;显示暂停“PUSH”
          MOV    31H,#7CH
          MOV    32H,#0B6H
          MOV    33H,#6EH
          CLR    07H               ;暂停状态秒闪
          MOV    34H,#00H
          CLR    WUQI              ;暂停关雾化
          RET
;*****************************
START_GOTO:
          SETB   TR1               ;启动计时中断
          SETB   MOTOR             ;启动风扇
          SETB   02H               ;运行状态
          CLR    03H
          RET
;*****************************
START_SELECT:
          SETB   EA
          SETB   TR1
          SETB   ET1
          SETB   02H
          CLR    03H
          MOV    A,MED_H
          XRL    A,#00H
          JZ     SELECT_1        ;如果高字节没有药量查个位
          JMP    SELECT_2
SELECT_1: MOV    A,MED_L
          XRL    A,#00H
          JZ     SELECT_WATER     ;如果高低字节都没有药量只得转化雾化水
SELECT_2: SETB   WUZH             ;在设定药量雾化药
          JMP    SELECT_QU

SELECT_WATER:
          CLR    WUZH             ;雾化水
SELECT_QU:
          RET
;*****************************************************************************************
;***************************************************
START_PUT:

          MOV    70H,20H          ;写状态标志位
          MOV    71H,21H
          MOV    R0,#70H
          MOV    R6,#2
          CALL   WEEPROM          ;写EEPROM雾化状态数据
          CALL   DELAY
          MOV    R0,#60H
          MOV    R6,#8
          CALL   WEEPROM
          CALL   DELAY
          MOV    R0,#68H
          MOV    R6,#8
          CALL   WEEPROM

          MOV    30H,#02H         ;第1位数码管内容
          MOV    31H,#02H         ;第2位数码管内容
          MOV    32H,#02H         ;第3位数码管内容
          MOV    33H,#02H         ;第4位数码管内容
          MOV    34H,#00H         ;秒闪亮与不亮
          CALL   DELAY

PUT_QU:   RET
;************************************************************************************
ANT_ADD:  JB     06H,ADD_QU        ;防抖时间未到退出
          MOV    A,23H             ;ADD查询子程序
          MOV    B,A
          MOV    C,P1.4            ;取样比较
          MOV    ACC.0,C
          MOV    23H,A
          XRL    A,B
          JZ     ADD_QU             ;没有变化退出

          JB     18H,ADD_QU
          CLR    01H                ;按下键时必须亮数码管
          MOV    72H,#0FFH          ;置亮时限
          MOV    73H,#2
          MOV    5EH,#0FFH          ;置连发时限
          MOV    5FH,#3
          SETB   06H
          MOV    2EH,#0A0H          ;置防抖时限
          MOV    2FH,#01H           ;置防抖延时限
          CALL   RETUN_EQU          ;返回时间档延时时限
          JB     MED,ADD_MED        ;药量调整
          JB     ALLTIME,ADD_QU
          JB     TEMP,ADD_TEM
          JB     INTEN,ADD_WU_INC
          JB     TIME,ADD_QU
          JB     TEMPTEST,ADD_QU
          JB     02H,ADD_QU         ;在运行时按下无效

          MOV    SECOND,#00H           ;秒清零
          ;MOV    A,MINUTE              ;分个位清零,保留十位
          ;ANL    A,#0F0H
          ;MOV    MINUTE,A
          MOV    A,MINUTE              ;分加10
          ADD    A,#1
          DA     A
          MOV    MINUTE,A
          ANL    A,#0F0H
          XRL    A,#60H
          JNZ    ADD_1
          MOV    MINUTE,#00H
          MOV    A,HOUR
          ADD   A,#01H
          DA     A
          MOV    HOUR,A
ADD_1:    SETB   05H               ;在暂停时有调整置标志
ADD_QU:   RET
;ADD查询子程序结束
ADD_TEM:
          MOV    A,TEMPERATURE
          INC    A
          DA     A
          MOV    TEMPERATURE,A
          CLR    C
          CJNE   A,#40H,ADD_TEM1          ;温度单元不迢过40,不迢过按下才有效
ADD_TEM1: JC     ADD_TEM_QU
          MOV    TEMPERATURE,#40H
ADD_TEM_QU: RET
;********************************************
ADD_WU_INC:
           MOV    A,INTENSITY
           INC    A
           MOV    INTENSITY,A
           CLR    C
           CJNE   A,#05H,ADD_INC_1
ADD_INC_1: JC     ADD_INC_QU
           MOV    INTENSITY,#05H         ;不迢过5,不迢过按下才有效
ADD_INC_QU:MOV    49H,#00H         ;按下键雾化时间间隔计数清零
           RET
;*********************************************
ADD_MED:
           ;CLR    00H                ;开机在药量档按下加或减键终止待机状态
           MOV    A,MED_L
           ADDC   A,#10
           DA     A
           MOV    MED_L,A
           MOV    A,MED_H
           ADDC   A,#00H
           DA     A
           MOV    MED_H,A
           XRL    A,#1

⌨️ 快捷键说明

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