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

📄 clock_v1.dt

📁 Em78p447四位数LED DISPLAY计时,累加/倒数/闹铃/时钟/
💻 DT
📖 第 1 页 / 共 4 页
字号:
;;----------------------------------------------------------------------------
;; CLOCK/TIMER/ALARM 3 IN 1 PROGARM
;; FILE NAME    : CLOCK_N1.DT
;; 30 sec / 1 pules
;;----------------------------------------------------------------------------
;; USE EMC78P447
;;----------------------------------------------------------------------------
INDIRT          ==              0x00    ; Indirect Register define
TCC             ==              0x01    ; Timer/Counter Register define
PC              ==              0x02    ; Pprogra Counter define
STATUS          ==              0x03    ; Program Status Word define
RSR             ==              0x04    ; RAM Select register define
PORT_5          ==              0x05    ; Port 5 define
PORT_6          ==              0x06    ; Port 6 define
PORT_7          ==              0X07    ; Port 7 define
INTF            ==              0x0F    ; Interrupt status register define
ISR             ==              0X3F
IOCE            ==              0X0E
IOCF            ==              0X0F
;;----------------------------------------------------------------------------
A_BUFFER        ==              0x10    ; Accumulator backup
S_BUFFER        ==              0x11    ; STATUS register buffer
;;
CLOCK_HR_H      ==              0X12
CLOCK_HR_L      ==              0X13
CLOCK_MIN_H     ==              0X14
CLOCK_MIN_L     ==              0X15
CLOCK_SEC_H     ==              0X16
CLOCK_SEC_L     ==              0X17
;;
CLOCK_500mS     ==              0X18
;;
TIMER_HR_H      ==              0X19
TIMER_HR_L      ==              0X1A
TIMER_MIN_H     ==              0X1B
TIMER_MIN_L     ==              0X1C
TIMER_SEC_H     ==              0X1D
TIMER_SEC_L     ==              0X1E
;;
ALARM_HR_H      ==              0X20
ALARM_HR_L      ==              0X21
ALARM_MIN_H     ==              0X22
ALARM_MIN_L     ==              0X23
ALARM_SEC_H     ==              0X24
ALARM_SEC_L     ==              0X25
;;
DISPLAY1        ==              0X26
DISPLAY2        ==              0X27
DISPLAY3        ==              0X28
DISPLAY4        ==              0X29
SCAN_LED_LOOP   ==              0X2A
DOT_FLASH       ==              0X2B
KEY_STATUS      ==              0X2C
KEY_PORT        ==              0X2D
KEY_PORT_BACKUP ==              0X2E
KEY_TIME        ==              0X2F
;;
MODE_SELECT     ==              0X30
TIMER_STATUS    ==              0X31
ALARM_STATUS    ==              0X31
L_5MIN          ==              0X32
H_5MIN          ==              0X33
TEST_LOOP       ==              0X34
;;
WATCH_HR_H      ==              0X35
WATCH_HR_L      ==              0X36
WATCH_MIN_H     ==              0X37
WATCH_MIN_L     ==              0X38
WATCH_SEC_H     ==              0X39
WATCH_SEC_L     ==              0X3A
;;
CLOCK_3333uS    ==              0X3B
SEC3_TIMER      ==              0X3C
SEC30           ==              0X3D
;;----------------------------------------------------------------------------
;;  CONTROL register define
;;----------------------------------------------------------------------------
PDC             ==              0xB     ; PULL DOWN control register
INTM            ==              0xF     ; Interrupt Mask register
;;----------------------------------------------------------------------------
;;  Interrupt mask register bit define
;;----------------------------------------------------------------------------
TCIE            ==              0       ;
ICIE            ==              1       ;
EXIE            ==              2       ;
;;----------------------------------------------------------------------------
;; PSW bit define
;;----------------------------------------------------------------------------
C_FLAG          ==              0       ;
DC              ==              1       ;
Z_FLAG          ==              2       ;
;;----------------------------------------------------------------------------
;; Interrupt status bit define
;;----------------------------------------------------------------------------
TCIF            ==              0       ;
ICIF            ==              1       ;
EXIF            ==              2       ;
;;----------------------------------------------------------------------------
;; FLAG bit define
;;----------------------------------------------------------------------------
TCC_FLG         ==              0       ;
EXG_FLG         ==              1       ;
EXG_PAT         ==              2       ;
;;----------------------------------------------------------------------------
;; Constant number define
;;----------------------------------------------------------------------------
HZ_NUM          ==              255     ;
LED_NUM         ==              25      ;
DEC_NUM         ==              55      ;
;;----------------------------------------------------------------------------
;; KEY STATUS BIT DEFINE
;;----------------------------------------------------------------------------
KEY_RELEASE     ==              0
H_CHECK_KEY     ==              1
;;----------------------------------------------------------------------------
;; TIMER STATUS BIT DEFINE
;;----------------------------------------------------------------------------
START_STOP_BIT  ==              0
ALARM_TIME_ON   ==              1
UP_TIMER_ON     ==              2
UP_TIMER_STOP   ==              3
REACH_ZERO      ==              7
;;----------------------------------------------------------------------------
;; PROGRAM START !
;;----------------------------------------------------------------------------
                ORG             0
                JMP             INITIAL
;;----------------------------------------------------------------------------
                ORG             2
;;----------------------------------------------------------------------------
INTERRUPT:      DISI
                MOV             A_BUFFER,A      ;; SAVE A AND STATUS REGISTER
                MOV             A,STATUS        ;;
                MOV             S_BUFFER,A      ;;
;;                                              ;;
                JBC             ISR,TCIF        ;; TEST IF TCC INTERRUPT
                JMP             TCC_INT         ;;      THAN GOTO TCC_INT
                JBC             ISR,EXIF        ;; TEST IF EXTERNAL INTERRUPT
                JMP             EXT_INT         ;;      THAN GOTO EXT_INT
;;
INTERRUPT_OVER  WDTC
;;
SHOW1           MOV             A,@0X01
                XOR             A,SCAN_LED_LOOP
                JBS             STATUS,Z_FLAG
                JMP             SHOW2
                BC              PORT_6,7
                BS              PORT_6,4
                MOV             A,DISPLAY1
                MOV             PORT_7,A
                JMP             OVER
;;
SHOW2           MOV             A,@0X02
                XOR             A,SCAN_LED_LOOP
                JBS             STATUS,Z_FLAG
                JMP             SHOW3
                BC              PORT_6,4
                BS              PORT_6,5
                MOV             A,DISPLAY2
                MOV             PORT_7,A
                JMP             OVER
;;
SHOW3           MOV             A,@0X03
                XOR             A,SCAN_LED_LOOP
                JBS             STATUS,Z_FLAG
                JMP             SHOW4
                BC              PORT_6,5
                BS              PORT_6,6
                MOV             A,DISPLAY3
                MOV             PORT_7,A
                JMP             OVER
;;
SHOW4           MOV             A,@0X04
                XOR             A,SCAN_LED_LOOP
                JBS             STATUS,Z_FLAG
                JMP             CHECK_KEY
                BC              PORT_6,6
                BS              PORT_6,7
                MOV             A,DISPLAY4
                MOV             PORT_7,A
                JMP             OVER
;;
CHECK_KEY       CLR             PORT_7
                MOV             A,@0B00011111
                IOW             PORT_7
                NOP
                NOP
                MOV             A,PORT_7
                AND             A,@0B00011111
                MOV             KEY_PORT,A
                BS              KEY_STATUS,H_CHECK_KEY
                CLR             SCAN_LED_LOOP
                MOV             A,@0B00000000
                IOW             PORT_7
;;
OVER            INC             SCAN_LED_LOOP
                MOV             A,S_BUFFER      ;;
                MOV             STATUS,A        ;; RESTORE STATUS
                MOV             A,A_BUFFER      ;; RESTORE A
                BC              STATUS,Z_FLAG   ;; RESTORE ORIGINAL Z FLAG
                JBC             S_BUFFER,Z_FLAG ;;
                BS              STATUS,Z_FLAG   ;;
                ENI
                RETI
;;----------------------------------------------------------------------------
LED_TABLE:      TBL
                RETL            0B00111111      ;; "0"
                RETL            0B00000110      ;; "1"
                RETL            0B01011011      ;; "2"
                RETL            0B01001111      ;; "3"
                RETL            0B01100110      ;; "4"
                RETL            0B01101101      ;; "5"
                RETL            0B01111101      ;; "6"
                RETL            0B00000111      ;; "7"
                RETL            0B01111111      ;; "8"
                RETL            0B01101111      ;; "9"
                RETL            0B00000000      ;; "MASK"
                RETL            0B11110110      ;; "H."
;;----------------------------------------------------------------------------
TCC_INT:        WDTC
                JBC             DOT_FLASH,0
                JMP             TEST_BUZZER
                BS              PORT_5,0
                BC              PORT_5,3
                BC              PORT_6,1        ;;;;
                JMP             BUZZER_OVER
;;
TEST_BUZZER     JBS             PORT_6,0
                BC              PORT_5,0
;;
GGG             JBC             ALARM_STATUS,ALARM_TIME_ON
                JMP             BUZZER_OR_ISD
                JBS             TIMER_STATUS,START_STOP_BIT
                JMP             BUZZER_OVER
;;
                MOV             A,TIMER_HR_L
                JBS             STATUS,Z_FLAG
                JMP             BUZZER_OVER
                MOV             A,TIMER_MIN_H
                JBS             STATUS,Z_FLAG
                JMP             BUZZER_OVER
                MOV             A,TIMER_MIN_L
                JBS             STATUS,Z_FLAG
                JMP             BUZZER_OVER
;;
                JBC             TIMER_SEC_H,2
                JMP             BUZZER_OVER
                JBS             TIMER_SEC_H,1
                JMP             BUZZER_ON_OFF
                JBS             TIMER_SEC_H,0
                JMP             BUZZER_ON_OFF
                JMP             BUZZER_OVER
;;
BUZZER_OR_ISD   JBS             PORT_6,3
                JMP             BUZZER_OVER
;;
BUZZER_ON_OFF   JBS             PORT_5,3
                JMP             BUZZER_ON
;;
BUZZER_OFF      BC              PORT_5,3
                JMP             BUZZER_OVER
;;
BUZZER_ON       BS              PORT_5,3
;;
BUZZER_OVER     BC              ISR,TCIF        ;; CLEAR TCIF FLAG
                DJZ             CLOCK_3333uS
                JMP             SHOW_WHAT
;;
                MOV             A,@0X10
                MOV             CLOCK_3333uS,A
;;
;;
DEC_500mS       DJZ             CLOCK_500mS
                JMP             SHOW_WHAT
;;
T_500mS         MOV             A,@0X96
                MOV             CLOCK_500mS,A
;;
                INC             DOT_FLASH       ;;
                JBS             DOT_FLASH,0     ;;
                JMP             SHOW_WHAT       ;;
;;
                MOV             A,L_5MIN
                JBS             STATUS,Z_FLAG
                JMP             LL
                MOV             A,H_5MIN
                JBC             STATUS,Z_FLAG
                JMP             PP
;;
LL              MOV             A,L_5MIN
                JBC             STATUS,Z_FLAG
                JMP             B1
                DEC             L_5MIN
                JMP             PP
B1              MOV             A,H_5MIN
                JBC             STATUS,Z_FLAG
                JMP             PP
                DEC             H_5MIN
                MOV             A,@0XFF
                MOV             L_5MIN,A
;;

⌨️ 快捷键说明

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