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