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

📄 clock_v1.dt

📁 Em78p447四位数LED DISPLAY计时,累加/倒数/闹铃/时钟/
💻 DT
📖 第 1 页 / 共 4 页
字号:
                JMP             INTERRUPT_OVER
;;
SHOW_TIMER_H    MOV             A,TIMER_HR_H
                JBC             STATUS,Z_FLAG
                MOV             A,@0X0A
                CALL            LED_TABLE
                MOV             DISPLAY1,A
                MOV             A,TIMER_HR_L
                CALL            LED_TABLE
                MOV             DISPLAY2,A
                BS              DISPLAY2,7
                MOV             A,TIMER_MIN_H
                CALL            LED_TABLE
                MOV             DISPLAY3,A
                MOV             A,TIMER_MIN_L
                CALL            LED_TABLE
                MOV             DISPLAY4,A
;;
                JBS             TIMER_STATUS,START_STOP_BIT
                JMP             INTERRUPT_OVER
;;
                JBS             DOT_FLASH,0
                BC              DISPLAY2,7
                JMP             INTERRUPT_OVER
;;----------------------------------------------------------------------------
SHOW_UP_TIMER   MOV             A,WATCH_HR_L
                JBS             STATUS,Z_FLAG
                JMP             SHOW_WATCH_H
;;
                MOV             A,TIMER_HR_H
                JBS             STATUS,Z_FLAG
                JMP             SHOW_WATCH_H
;;
SHOW_WATCH_L    MOV             A,WATCH_MIN_H
                JBC             STATUS,Z_FLAG
                MOV             A,@0X0A
                CALL            LED_TABLE
                MOV             DISPLAY1,A
                MOV             A,WATCH_MIN_L
                CALL            LED_TABLE
                MOV             DISPLAY2,A
                BS              DISPLAY2,7
                MOV             A,WATCH_SEC_H
                CALL            LED_TABLE
                MOV             DISPLAY3,A
                MOV             A,WATCH_SEC_L
                CALL            LED_TABLE
                MOV             DISPLAY4,A
;;
                JBS             TIMER_STATUS,UP_TIMER_STOP
                JMP             INTERRUPT_OVER
;;
                JBS             DOT_FLASH,0
                BC              DISPLAY2,7
                JMP             INTERRUPT_OVER
;
SHOW_WATCH_H    MOV             A,WATCH_HR_H
                JBC             STATUS,Z_FLAG
                MOV             A,@0X0A
                CALL            LED_TABLE
                MOV             DISPLAY1,A
                MOV             A,WATCH_HR_L
                CALL            LED_TABLE
                MOV             DISPLAY2,A
                BS              DISPLAY2,7
                MOV             A,WATCH_MIN_H
                CALL            LED_TABLE
                MOV             DISPLAY3,A
                MOV             A,WATCH_MIN_L
                CALL            LED_TABLE
                MOV             DISPLAY4,A
;;
                JBS             TIMER_STATUS,UP_TIMER_STOP
                JMP             INTERRUPT_OVER
;;
                JBS             DOT_FLASH,0
                BC              DISPLAY2,7
                JMP             INTERRUPT_OVER
;;----------------------------------------------------------------------------
SHOW_ALARM      MOV             A,H_5MIN
                JBS             STATUS,Z_FLAG
                JMP             NOT_OVER_5MIN1
                MOV             A,L_5MIN
                JBS             STATUS,Z_FLAG
                JMP             NOT_OVER_5MIN1
;;
                CLR             DISPLAY1
                CLR             DISPLAY2
                CLR             DISPLAY3
                CLR             DISPLAY4
;;              BC              PORT_6,3
                JMP             INTERRUPT_OVER
;;----------------------------------------------------------------------------
NOT_OVER_5MIN1  NOP
                MOV             A,ALARM_HR_H
                JBC             STATUS,Z_FLAG
                MOV             A,@0X0A
                CALL            LED_TABLE
                MOV             DISPLAY1,A
                MOV             A,ALARM_HR_L
                CALL            LED_TABLE
                MOV             DISPLAY2,A
                BS              DISPLAY2,7
                MOV             A,ALARM_MIN_H
                CALL            LED_TABLE
                MOV             DISPLAY3,A
                MOV             A,ALARM_MIN_L
                CALL            LED_TABLE
                MOV             DISPLAY4,A
;;              JBS             DOT_FLASH,0
;;              BC              DISPLAY2,7
                JMP             INTERRUPT_OVER
;;----------------------------------------------------------------------------
SHOW_TEST       NOP
;;              BS              PORT_6,3
;;              BS              PORT_6,2
                MOV             A,CLOCK_SEC_L
                CALL            LED_TABLE
                MOV             DISPLAY1,A
                MOV             DISPLAY2,A
                BS              DISPLAY2,7
                MOV             DISPLAY3,A
                MOV             DISPLAY4,A
                JMP             INTERRUPT_OVER
;;----------------------------------------------------------------------------
EXT_INT:        BC              ISR,EXIF        ;; CLEAR EXIF FLAG
                JMP             INTERRUPT_OVER
;;----------------------------------------------------------------------------
INITIAL         MOV             A,@0B00000001
                IOW             IOCF
                MOV             A,@0B00111001
                IOW             IOCE
                MOV             A,@0B11001111   ;;
                CONTW
;;
                CLR             PORT_5
                CLR             PORT_6
                CLR             PORT_7
                MOV             A,@0B11110111
                IOW             PORT_5
                MOV             A,@0B00001001
                IOW             PORT_6
                MOV             A,@0B00000000
                IOW             PORT_7
;;
                MOV             A,@0X10
                MOV             RSR,A
CLEAR_LOOP      CLR             INDIRT
                INC             RSR
                MOV             A,@0X3F
                XOR             A,RSR
                JBS             STATUS,Z_FLAG
                JMP             CLEAR_LOOP

;;
                MOV             A,@0X01
                MOV             CLOCK_HR_H,A
                MOV             ALARM_HR_H,A
                MOV             A,@0X02
                MOV             CLOCK_HR_L,A
                MOV             ALARM_HR_L,A
;;
                CALL            LOAD10SEC
;;
                MOV             A,@0B00000110
                MOV             DISPLAY1,A
                MOV             A,@0B01011011
                MOV             DISPLAY2,A
                BS              DISPLAY2,7
                MOV             A,@0B00111111
                MOV             DISPLAY3,A
                MOV             DISPLAY4,A
                ENI
;;
TEST            JBC             PORT_5,0
                JMP             TEST_OVER
;;
                BS              ALARM_STATUS,ALARM_TIME_ON
                JMP             TEST
;;
TEST_OVER       CLR             TIMER_HR_H
                CLR             TIMER_HR_L
                CLR             TIMER_MIN_H
                CLR             TIMER_MIN_L
                CLR             TIMER_SEC_H
                CLR             TIMER_SEC_L
;;
                CLR             CLOCK_500mS
                BC              ALARM_STATUS,ALARM_TIME_ON
;;
                MOV             A,@0B11110110
                IOW             PORT_5
                JMP             MAIN
;;----------------------------------------------------------------------------
LOAD10SEC       MOV             A,@0X00         ;;
                MOV             H_5MIN,A        ;;
                MOV             A,@0X0A         ;;
                MOV             L_5MIN,A        ;;
                RET
;;----------------------------------------------------------------------------
LOAD177SEC      MOV             A,@0X00         ;;
                MOV             H_5MIN,A        ;;
                MOV             A,@0XB1         ;;
                MOV             L_5MIN,A        ;;
                RET
;;----------------------------------------------------------------------------
MAIN:           BS              TEST_LOOP,0
                WDTC
;;
                JBS             PORT_5,1                ;;
                JMP             CHK_KEY                 ;;
                JBS             PORT_5,2                ;;
                JMP             A_MODE                  ;;
;;
C_MODE          BC              ALARM_STATUS,ALARM_TIME_ON
                JMP             CHK_KEY
;;
A_MODE          CLR             TIMER_SEC_L
                CLR             TIMER_SEC_H
                CLR             TIMER_MIN_L
                CLR             TIMER_MIN_H
                CLR             TIMER_HR_L
                CLR             TIMER_HR_H
                BC              TIMER_STATUS,START_STOP_BIT
                BC              PORT_6,2
                BC              TIMER_STATUS,UP_TIMER_ON
                BC              TIMER_STATUS,UP_TIMER_STOP
                CLR             WATCH_HR_H
                CLR             WATCH_HR_L
                CLR             WATCH_MIN_H
                CLR             WATCH_MIN_L
                CLR             WATCH_SEC_H
                CLR             WATCH_SEC_L
;;
CHK_KEY         JBS             KEY_STATUS,H_CHECK_KEY  ;; TEST IF HAVE INTERRUPT THAN SKIP
                JMP             MAIN                    ;; ELSE JUMP TO MAIN
;;                                                      ;;
                BC              KEY_STATUS,H_CHECK_KEY  ;; CLEAR H_CHECK_KEY FLAG
                MOV             A,KEY_PORT              ;; MOV KEY_PORT DATA T A
                JBS             STATUS,Z_FLAG           ;;
                JMP             HH_KK                   ;; KEY_PORT DATA NOT EQU 00H
;;                                                      ;;
                MOV             A,@0X19                 ;;
                MOV             KEY_TIME,A              ;;
                CLR             KEY_PORT_BACKUP         ;;
                BC              KEY_STATUS,KEY_RELEASE  ;;
                MOV             A,@0X0C                 ;;
                MOV             SEC3_TIMER,A            ;;
                JMP             MAIN                    ;;
;;                                                      ;;
HH_KK           XOR             A,KEY_PORT_BACKUP       ;; IF KEY_PORT_BACKUP & KEY_PORT IS
                JBC             STATUS,Z_FLAG           ;; THE SAME, THAN JUMP TO KEY_THE_SAME
                JMP             KEY_THE_SAME            ;;
;;                                                      ;;
KEY_NOT_THESAME MOV             A,@0X19                 ;;
                MOV             KEY_TIME,A              ;;
                MOV             A,KEY_PORT              ;;
                MOV             KEY_PORT_BACKUP,A       ;;
                BC              KEY_STATUS,KEY_RELEASE  ;;
                JMP             MAIN                    ;;
;;                                                      ;;
KEY_THE_SAME    CLR             KEY_PORT                ;;
                DJZ             KEY_TIME                ;;
                JMP             MAIN                    ;;
;;                                                      ;;
                JBC             KEY_STATUS,KEY_RELEASE  ;;
                JMP             TEST_KEY5               ;;
                                                        ;;
                BS              KEY_STATUS,KEY_RELEASE  ;;
                JMP             KEY_FUNCTION            ;;
;;----------------------------------------------------------------------------
TEST_KEY5       MOV             A,KEY_PORT_BACKUP
                XOR             A,@0X10
                JBS             STATUS,Z_FLAG
                JMP             MAIN
;;
                DEC             SEC3_TIMER
                JBS             STATUS,Z_FLAG
                JMP             MAIN
                NOP
;;----------------------------------------------------------------------------
KEY_FUNCTION    JBS             PORT_5,1                ;;
                JMP             TIMER_MODE              ;;
                JBS             PORT_5,2                ;;
                JMP             ALARM_MODE              ;;
;;----------------------------------------------------------------------------
CLOCK_MODE      WDTC
                MOV             A,@0X11
                XOR             A,KEY_PORT_BACKUP
                JBC             STATUS,Z_FLAG
                JMP             CLOCK_INC_1HR
;;
                MOV             A,@0X12
                XOR             A,KEY_PORT_BACKUP
                JBC             STATUS,Z_FLAG
                JMP             CLOCK_INC_1MIN
;;
                MOV             A,@0X10
                XOR             A,KEY_PORT_BACKUP
                JBC             STATUS,Z_FLAG
                JMP             DISPLAY_TIMER

⌨️ 快捷键说明

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