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

📄 clock_v1.dt

📁 Em78p447四位数LED DISPLAY计时,累加/倒数/闹铃/时钟/
💻 DT
📖 第 1 页 / 共 4 页
字号:
PP              INC             CLOCK_SEC_L     ;; INCREASE CLOCK ONE SECOND
                MOV             A,@0X0A         ;; CHECK IF OVER 10 SECOND
                XOR             A,CLOCK_SEC_L   ;;       THAN ADJUST
                JBS             STATUS,Z_FLAG   ;;
                JMP             CHECK_ALARM     ;;
;;                                              ;;
                CLR             CLOCK_SEC_L     ;;
                INC             CLOCK_SEC_H     ;;
;;
                MOV             A,@0X06         ;;
                XOR             A,CLOCK_SEC_H   ;;
                JBS             STATUS,Z_FLAG   ;;
                JMP             CHECK_ALARM     ;;
;;                                              ;;
                CLR             CLOCK_SEC_H     ;;
                INC             CLOCK_MIN_L     ;;
                MOV             A,@0X0A         ;;
                XOR             A,CLOCK_MIN_L   ;;
                JBS             STATUS,Z_FLAG   ;;
                JMP             CHECK_ALARM     ;;
;;                                              ;;
                CLR             CLOCK_MIN_L     ;;
                INC             CLOCK_MIN_H     ;;
                MOV             A,@0X06         ;;
                XOR             A,CLOCK_MIN_H   ;;
                JBS             STATUS,Z_FLAG   ;;
                JMP             CHECK_ALARM     ;;
;;                                              ;;
                CLR             CLOCK_MIN_H     ;;
                INC             CLOCK_HR_L      ;;
;;                                              ;;
                MOV             A,@0X04         ;;
                XOR             A,CLOCK_HR_L    ;;
                JBS             STATUS,Z_FLAG   ;;
                JMP             NOT_OVER_24     ;;
                MOV             A,@0X02         ;;
                XOR             A,CLOCK_HR_H    ;;
                JBS             STATUS,Z_FLAG   ;;
                JMP             NOT_OVER_24     ;;
;;                                              ;;
                CLR             CLOCK_HR_L      ;;
                CLR             CLOCK_HR_H      ;;
                JMP             CHECK_ALARM     ;;
;;                                              ;;
NOT_OVER_24     MOV             A,@0X0A         ;;
                XOR             A,CLOCK_HR_L    ;;
                JBS             STATUS,Z_FLAG   ;;
                JMP             CHECK_ALARM     ;;
;;                                              ;;
                CLR             CLOCK_HR_L      ;;
                INC             CLOCK_HR_H      ;;
;;----------------------------------------------------------------------------
CHECK_ALARM     JBS             PORT_5,1
                JMP             CHECK_TIMER
                JBC             PORT_5,2
                JMP             CHECK_TIMER
;;
                JBS             ALARM_STATUS,ALARM_TIME_ON
                JMP             TEST_ALARM
                MOV             A,CLOCK_SEC_L
                JBS             STATUS,Z_FLAG
                JMP             SHOW_WHAT
                MOV             A,@0X00
                XOR             A,CLOCK_SEC_H
                JBC             STATUS,Z_FLAG
                BS              PORT_6,1
                MOV             A,@0X03
                XOR             A,CLOCK_SEC_H
                JBC             STATUS,Z_FLAG
                BS              PORT_6,1
;;
TEST_ALARM      MOV             A,CLOCK_SEC_L
                JBS             STATUS,Z_FLAG
                JMP             CHECK_TIMER
                MOV             A,CLOCK_SEC_H
                JBS             STATUS,Z_FLAG
                JMP             SHOW_WHAT
;;
                MOV             A,CLOCK_MIN_L
                XOR             A,ALARM_MIN_L
                JBS             STATUS,Z_FLAG
                JMP             SHOW_WHAT
;;
                MOV             A,CLOCK_MIN_H
                XOR             A,ALARM_MIN_H
                JBS             STATUS,Z_FLAG
                JMP             SHOW_WHAT
;;
                MOV             A,CLOCK_HR_L
                XOR             A,ALARM_HR_L
                JBS             STATUS,Z_FLAG
                JMP             SHOW_WHAT
;;
                MOV             A,CLOCK_HR_H
                XOR             A,ALARM_HR_H
                JBS             STATUS,Z_FLAG
                JMP             SHOW_WHAT
;;
                BS              ALARM_STATUS,ALARM_TIME_ON
                BS              PORT_6,1
                CALL            LOAD10SEC

                JMP             SHOW_WHAT
;;----------------------------------------------------------------------------
CHECK_TIMER     JBS             TIMER_STATUS,START_STOP_BIT
                JMP             CHK_STOP_WATCH
;;
                MOV             A,TIMER_SEC_L   ;;
                JBC             STATUS,Z_FLAG
                JMP             BORROW_10SEC
                DEC             TIMER_SEC_L
                JMP             SHOW_WHAT
;;
BORROW_10SEC    MOV             A,TIMER_SEC_H
                JBC             STATUS,Z_FLAG
                JMP             BORROW_1MIN
                MOV             A,@0X09
                MOV             TIMER_SEC_L,A
                DEC             TIMER_SEC_H
                JMP             SHOW_WHAT
;;
BORROW_1MIN     MOV             A,TIMER_MIN_L
                JBC             STATUS,Z_FLAG
                JMP             BORROW_10MIN
                MOV             A,@0X09
                MOV             TIMER_SEC_L,A
                MOV             A,@0X05
                MOV             TIMER_SEC_H,A
                DEC             TIMER_MIN_L
                JMP             SHOW_WHAT
;;
BORROW_10MIN    MOV             A,TIMER_MIN_H
                JBC             STATUS,Z_FLAG
                JMP             BORROW_1HR
                MOV             A,@0X09
                MOV             TIMER_SEC_L,A
                MOV             A,@0X05
                MOV             TIMER_SEC_H,A
                MOV             A,@0X09
                MOV             TIMER_MIN_L,A
                DEC             TIMER_MIN_H
                JMP             SHOW_WHAT
;;
BORROW_1HR      MOV             A,TIMER_HR_L    ;;
                JBC             STATUS,Z_FLAG   ;;
                JMP             TIMER_ZERO
                MOV             A,@0X05
                MOV             TIMER_MIN_H,A
                MOV             A,@0X09
                MOV             TIMER_MIN_L,A
                MOV             A,@0X05
                MOV             TIMER_SEC_H,A
                MOV             A,@0X09
                MOV             TIMER_SEC_L,A
                DEC             TIMER_HR_L
                JMP             SHOW_WHAT
;;
TIMER_ZERO      BC              PORT_6,2
                JBS             TIMER_STATUS,REACH_ZERO
;;              BS              PORT_6,1
;;              BS              TIMER_STATUS,REACH_ZERO
;;;;
;;TIMER_ZERO1     INC             SEC30
;;                MOV             A,@0X1E
;;                XOR             A,SEC30
;;                JBS             STATUS,Z_FLAG
;;                JMP             SHOW_WHAT
;;                BC              TIMER_STATUS,REACH_ZERO
;;                CLR             SEC30
                JMP             SHOW_WHAT
;;----------------------------------------------------------------------------
CHK_STOP_WATCH  JBS             TIMER_STATUS,UP_TIMER_ON
                JMP             SHOW_WHAT
                JBS             TIMER_STATUS,UP_TIMER_STOP
                JMP             SHOW_WHAT
;;
                INC             WATCH_SEC_L     ;; INCREASE WATCH ONE SECOND
                MOV             A,@0X0A         ;; CHECK IF OVER 10 SECOND
                XOR             A,WATCH_SEC_L   ;;       THAN ADJUST
                JBS             STATUS,Z_FLAG   ;;
                JMP             SHOW_WHAT       ;;
;;                                              ;;
                CLR             WATCH_SEC_L     ;;
                INC             WATCH_SEC_H     ;;
                MOV             A,@0X06         ;;
                XOR             A,WATCH_SEC_H   ;;
                JBS             STATUS,Z_FLAG   ;;
                JMP             SHOW_WHAT       ;;
;;                                              ;;
                CLR             WATCH_SEC_H     ;;
                INC             WATCH_MIN_L     ;;
                MOV             A,@0X0A         ;;
                XOR             A,WATCH_MIN_L   ;;
                JBS             STATUS,Z_FLAG   ;;
                JMP             SHOW_WHAT       ;;
;;                                              ;;
                CLR             WATCH_MIN_L     ;;
                INC             WATCH_MIN_H     ;;
                MOV             A,@0X06         ;;
                XOR             A,WATCH_MIN_H   ;;
                JBS             STATUS,Z_FLAG   ;;
                JMP             SHOW_WHAT       ;;
;;                                              ;;
                CLR             WATCH_MIN_H     ;;
                INC             WATCH_HR_L      ;;
;;                                              ;;
                MOV             A,@0X04         ;;
                XOR             A,WATCH_HR_L    ;;
                JBS             STATUS,Z_FLAG   ;;
                JMP             NOT_OVER_24W    ;;
                MOV             A,@0X02         ;;
                XOR             A,WATCH_HR_H    ;;
                JBS             STATUS,Z_FLAG   ;;
                JMP             NOT_OVER_24W    ;;
;;                                              ;;
                CLR             WATCH_HR_L      ;;
                CLR             WATCH_HR_H      ;;
                JMP             SHOW_WHAT       ;;
;;                                              ;;
NOT_OVER_24W    MOV             A,@0X0A         ;;
                XOR             A,WATCH_HR_L    ;;
                JBS             STATUS,Z_FLAG   ;;
                JMP             SHOW_WHAT       ;;
;;                                              ;;
                CLR             WATCH_HR_L      ;;
                INC             WATCH_HR_H      ;;
;;----------------------------------------------------------------------------
SHOW_WHAT       JBC             PORT_5,0
                JMP             XXX
                JBS             TEST_LOOP,0
                JMP             SHOW_TEST

XXX             JBS             PORT_5,1        ;;
                JMP             SHOW_TIMER      ;;
;;                                              ;;
                JBS             PORT_5,2        ;;
                JMP             SHOW_ALARM      ;;
;;----------------------------------------------------------------------------
SHOW_CLOCK      MOV             A,H_5MIN
                JBS             STATUS,Z_FLAG
                JMP             NOT_OVER_5MIN
                MOV             A,L_5MIN
                JBS             STATUS,Z_FLAG
                JMP             NOT_OVER_5MIN
;;
                CLR             DISPLAY1
                CLR             DISPLAY2
                CLR             DISPLAY3
                CLR             DISPLAY4
;;              BC              PORT_6,3
                JMP             INTERRUPT_OVER
;;
NOT_OVER_5MIN   NOP
                MOV             A,CLOCK_HR_H
                JBC             STATUS,Z_FLAG
                MOV             A,@0X0A
                CALL            LED_TABLE
                MOV             DISPLAY1,A
                MOV             A,CLOCK_HR_L
                CALL            LED_TABLE
                MOV             DISPLAY2,A
                BS              DISPLAY2,7
                MOV             A,CLOCK_MIN_H
                CALL            LED_TABLE
                MOV             DISPLAY3,A
                MOV             A,CLOCK_MIN_L
                CALL            LED_TABLE
                MOV             DISPLAY4,A
                JBS             DOT_FLASH,0
                BC              DISPLAY2,7
                JMP             INTERRUPT_OVER
;;----------------------------------------------------------------------------
SHOW_TIMER      NOP
                JBC             TIMER_STATUS,UP_TIMER_ON
                JMP             SHOW_UP_TIMER
;;
                MOV             A,TIMER_HR_L
                JBS             STATUS,Z_FLAG
                JMP             SHOW_TIMER_H
;;
SHOW_TIMER_L    MOV             A,TIMER_MIN_H
                JBC             STATUS,Z_FLAG
                MOV             A,@0X0A
                CALL            LED_TABLE
                MOV             DISPLAY1,A
                MOV             A,TIMER_MIN_L
                CALL            LED_TABLE
                MOV             DISPLAY2,A
                BS              DISPLAY2,7
                MOV             A,TIMER_SEC_H
                CALL            LED_TABLE
                MOV             DISPLAY3,A
                MOV             A,TIMER_SEC_L
                CALL            LED_TABLE
                MOV             DISPLAY4,A
;;
                JBS             TIMER_STATUS,START_STOP_BIT
                JMP             INTERRUPT_OVER
;;
                JBS             DOT_FLASH,0
                BC              DISPLAY2,7

⌨️ 快捷键说明

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