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

📄 clock.psm

📁 PicoBlaze_Real_Time_Clock
💻 PSM
📖 第 1 页 / 共 5 页
字号:
                 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 + -