📄 clock_v1.dt
字号:
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 + -