📄 clock.psm
字号:
CALL LCD_write_data
LOAD s3, 00
STORE s3, ms100
wait1: FETCH s3, ms100
COMPARE s3, 05
JUMP C, wait1
LOAD s5, 2F
CALL LCD_cursor
LOAD s5, 20
CALL LCD_write_data
FETCH s5, temp
ADD s5, FF
STORE s5, temp
COMPARE s5, 2F
JUMP NZ, BLINK10
RRESTART: LOAD s5, 10
CALL LCD_cursor
CALL disp_msg3
LOAD s5, 20
CALL LCD_cursor
CALL disp_msg4
LOAD s3, 35
STORE s3, temp
BLINK20: LOAD s3, 00
STORE s3, ms100
BLINK2: FETCH s3, ms100
COMPARE s3, 05
JUMP C, BLINK2
LOAD s5, 2F
CALL LCD_cursor
FETCH s5, temp
CALL LCD_write_data
LOAD s3, 00
STORE s3, ms100
wait2: FETCH s3, ms100
COMPARE s3, 05
JUMP C, wait2
LOAD s5, 2F
CALL LCD_cursor
LOAD s5, 20
CALL LCD_write_data
FETCH s5, temp
ADD s5, FF
STORE s5, temp
COMPARE s5, 2F
JUMP NZ, BLINK20
LOAD s0, 00
STORE s0, LED_pattern
STORE s0, mode
STORE s0, blink_flag
STORE s0, ms100
LOAD s5, 10
CALL LCD_cursor
CALL disp_msg5
LOAD s5, 20
CALL LCD_cursor
CALL disp_msg6
PAUSE: FETCH s0, ms100
COMPARE s0, 32
JUMP C, PAUSE
CALL LCD_clear
INPUT s0, 00
STORE s0, disp_flag2
STORE s0, ms100
loop:
FETCH s0, hourB
CALL B2BCD
STORE s0, hourL
STORE s1, hourH
FETCH s0, minB
CALL B2BCD
STORE s0, minL
STORE s1, minH
FETCH s0, secB
CALL B2BCD
STORE s0, secL
STORE s1, secH
FETCH s0, dayB
CALL B2BCD
STORE s0, dayL
STORE s1, dayH
FETCH s0, monB
CALL B2BCD
STORE s0, monL
STORE s1, monH
FETCH s0, yearB
CALL B2BCD
STORE s0, year4
STORE s1, year3
AND sF, FF
JUMP NZ, SKIP1
;;;DISP HH
LOAD s5, 11
CALL LCD_cursor
FETCH s3, mode
COMPARE s3, 01
JUMP NZ, DSP_HH
FETCH s3, ms500
TEST s3, 01
JUMP NZ, SPACE7
DSP_HH: FETCH s5, hourH
ADD s5, 30
CALL LCD_write_data
FETCH s5, hourL
ADD s5, 30
CALL LCD_write_data
JUMP MODE_2
SPACE7: CALL disp_space
CALL disp_space
MODE_2:
;;;DISP MM
LOAD s5, 14
CALL LCD_cursor
FETCH s3, mode
COMPARE s3, 02
JUMP NZ, DSP_MM
FETCH s3, ms500
TEST s3, 01
JUMP NZ, SPACE6
DSP_MM: FETCH s5, minH
ADD s5, 30
CALL LCD_write_data
FETCH s5, minL
ADD s5, 30
CALL LCD_write_data
JUMP MODE_3
SPACE6: CALL disp_space
CALL disp_space
MODE_3:
;;;DISP SS
LOAD s5, 17
CALL LCD_cursor
FETCH s3, mode
COMPARE s3, 03
JUMP NZ, DSP_SS
FETCH s3, ms500
TEST s3, 01
JUMP NZ, SPACE5
DSP_SS: FETCH s5, secH
ADD s5, 30
CALL LCD_write_data
FETCH s5, secL
ADD s5, 30
CALL LCD_write_data
JUMP MODE_4
SPACE5: CALL disp_space
CALL disp_space
MODE_4:
;;;DISP week
LOAD s5, 1C
CALL LCD_cursor
FETCH s3, week
COMPARE s3, 00
JUMP NZ, MON
LOAD s5, character_S
CALL LCD_write_data
LOAD s5, character_u
CALL LCD_write_data
LOAD s5, character_n
CALL LCD_write_data
JUMP TEST_BIT0
MON: FETCH s3, week
COMPARE s3, 01
JUMP NZ, TUE
LOAD s5, character_M
CALL LCD_write_data
LOAD s5, character_o
CALL LCD_write_data
LOAD s5, character_n
CALL LCD_write_data
JUMP TEST_BIT0
TUE: FETCH s3, week
COMPARE s3, 02
JUMP NZ, WED
LOAD s5, character_T
CALL LCD_write_data
LOAD s5, character_u
CALL LCD_write_data
LOAD s5, character_e
CALL LCD_write_data
JUMP TEST_BIT0
WED: FETCH s3, week
COMPARE s3, 03
JUMP NZ, THU
LOAD s5, character_W
CALL LCD_write_data
LOAD s5, character_e
CALL LCD_write_data
LOAD s5, character_d
CALL LCD_write_data
JUMP TEST_BIT0
THU: FETCH s3, week
COMPARE s3, 04
JUMP NZ, FRI
LOAD s5, character_T
CALL LCD_write_data
LOAD s5, character_h
CALL LCD_write_data
LOAD s5, character_u
CALL LCD_write_data
JUMP TEST_BIT0
FRI: FETCH s3, week
COMPARE s3, 05
JUMP NZ, SAT
LOAD s5, character_F
CALL LCD_write_data
LOAD s5, character_r
CALL LCD_write_data
LOAD s5, character_i
CALL LCD_write_data
JUMP TEST_BIT0
SAT: LOAD s5, character_S
CALL LCD_write_data
LOAD s5, character_a
CALL LCD_write_data
LOAD s5, character_t
CALL LCD_write_data
JUMP TEST_BIT0
TEST_BIT0:
ROTARY_PRESS1:
ROTARY_PRESS2:
SKIP1:
;;;DISP month
LOAD s5, 26
CALL LCD_cursor
FETCH s3, mode
COMPARE s3, 04
JUMP NZ, DSP_MON
FETCH s3, ms500
TEST s3, 01
JUMP NZ, SPACE4
DSP_MON: FETCH s5, monH
ADD s5, 30
CALL LCD_write_data
FETCH s5, monL
ADD s5, 30
CALL LCD_write_data
JUMP MODE_5
SPACE4: CALL disp_space
CALL disp_space
MODE_5:
;;;DISP day
LOAD s5, 29
CALL LCD_cursor
FETCH s3, mode
COMPARE s3, 05
JUMP NZ, DSP_DD
FETCH s3, ms500
TEST s3, 01
JUMP NZ, SPACE3
DSP_DD: FETCH s5, dayH
ADD s5, 30
CALL LCD_write_data
FETCH s5, dayL
ADD s5, 30
CALL LCD_write_data
JUMP MODE_6
SPACE3: CALL disp_space
CALL disp_space
MODE_6:
;;;DISP year
LOAD s5, 2C
CALL LCD_cursor
FETCH s3, mode
COMPARE s3, 06
JUMP NZ, DSP_YY
FETCH s3, ms500
TEST s3, 01
JUMP NZ, SPACE2
DSP_YY: FETCH s5, year1
ADD s5, 30
CALL LCD_write_data
FETCH s5, year2
ADD s5, 30
CALL LCD_write_data
FETCH s5, year3
ADD s5, 30
CALL LCD_write_data
FETCH s5, year4
ADD s5, 30
CALL LCD_write_data
JUMP MODE_END
SPACE2: CALL disp_space
CALL disp_space
CALL disp_space
CALL disp_space
MODE_END:
FETCH s0, monB
LOAD s1, DMAX
ADD s1, s0
FETCH s2, (s1) ;;28
COMPARE s0, 02 ;;Y
JUMP NZ, NO_FEB
FETCH s1, yearB
AND s1, 03
JUMP NZ, NO_FEB
ADD s2, 01
NO_RUNNIAN:
NO_FEB: STORE s2, DMAX
FETCH s1, dayB
COMPARE s2, s1
JUMP NC, UNDER
STORE s2, dayB
UNDER:
FETCH s1, DAY_UP
AND s1, s1
JUMP Z, NO_DAY_UP
FETCH s1, dayB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -