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

📄 clock.psm

📁 PicoBlaze_Real_Time_Clock
💻 PSM
📖 第 1 页 / 共 5 页
字号:
                 ADD s1, 01
                 STORE s1, dayB
                 FETCH s2, DMAX
                 ADD s2, 01
                 COMPARE s1, s2
                 JUMP NZ, NO_MON_UP
                 LOAD s1, 01
                 STORE s1, dayB
                 FETCH s1, monB
                 ADD s1, 01
                 STORE s1, monB
                 COMPARE s1, 0D
                 JUMP NZ, NO_YEAR_UP
                 LOAD s1, 01
                 STORE s1, monB
                 FETCH s1, yearB
                 ADD s1, 01
                 STORE s1, yearB
                 COMPARE s1, 64
                 JUMP NZ, NO_YEAR_UP
                 LOAD s1, 00
                 STORE s1, yearB
                 JUMP NO_YEAR_UP
      NO_MON_UP: 
      NO_DAY_UP: 
     NO_YEAR_UP: 
                 LOAD s0, 00
                 STORE s0, DAY_UP
                 LOAD s0, DEC
                 FETCH s2, monB
                 ADD s0, s2
                 FETCH s1, (s0)                      ;;;K
                 FETCH s0, yearB
                 ADD s1, s0                          ;;;;;;;K+Y
                 COMPARE s2, 03
                 JUMP C, RN
                 ADD s0, 01                          ;;;;100+Y  >2(3..12)
             RN: ADD s0, 63                          ;;;;;99+Y   1,2
                 SR0 s0
                 SR0 s0                              ;;;/4
                 ADD s0, s1
                 ADD s0, 06
                 FETCH s2, dayB
                 ADD s0, s2
           MOD7: ADD s0, F9
                 JUMP NC, M7_END
                 JUMP MOD7
         M7_END: ADD s0, 07
                 STORE s0, week
                 FETCH s0, mode
                 AND s0, FF
                 JUMP NZ, SETUP
                 ;;;RUN
                 LOAD s5, 20
                 CALL LCD_cursor
                 FETCH s5, disp_flag
                 CALL LCD_write_data
                 CALL LCD_write_data
                 CALL LCD_write_data
                 JUMP MODEUPDATE
          SETUP: 
                 ;;;SET
                 LOAD s5, 20
                 CALL LCD_cursor
                 LOAD s5, 53                         ;;;;;;;;;;;;;;;;;;;;;;;    S
                 CALL LCD_write_data
                 LOAD s5, 45                         ;;;;;;;;;;;;;;;;;;;;;;;    E
                 CALL LCD_write_data
                 LOAD s5, 54                         ;;;;;;;;;;;;;;;;;;;;;;;    T
                 CALL LCD_write_data
     MODEUPDATE: FETCH s0, mode
                 STORE s0, blink_flag
       NOCHANGE: 
                 INPUT s0, 00
                 FETCH s1, disp_flag2
                 XOR s1, s0
                 JUMP NZ, restart
                 STORE s0, disp_flag2
                 FETCH s0, monB
                 COMPARE s0, 05
                 JUMP NZ, chk_sf
                 FETCH s0, dayB
                 COMPARE s0, 11
                 JUMP NZ, chk_sf
                 FETCH s0, minB
                 COMPARE s0, 00
                 JUMP Z, msg7
         chk_sf: COMPARE sF, FF
                 JUMP NZ, NO_BD
                 CALL LCD_reset
                 JUMP NO_BD
           msg7: LOAD s5, 10
                 CALL LCD_cursor
                 CALL disp_msg7                      ;
                 FETCH s0, ms100
                 COMPARE s0, 32
                 JUMP C, WAIT
                 LOAD sF, 00
                 JUMP restart
           WAIT: LOAD sF, FF
                 JUMP loop
          NO_BD: LOAD sF, 00
                 STORE sF, ms100
                 JUMP loop
                 ;;;;;;;;;s0---BINARY, s1---BCD_H, s0---BCD_L
          B2BCD: LOAD s1, 00                         ;
         BCD_LP: ADD s0, F6
                 JUMP NC, H_END
                 ADD s1, 01                          ;
                 JUMP BCD_LP
          H_END: ADD s0, 0A
                 RETURN
                 ;
                 ;     normal_mode: INPUT s0, switch_port               ;Read switches and buttons and directly drive LEDs
                 ;                  OUTPUT s0, LED_port
                 ;                  RETURN
                 ;
                 ;
                 ;
                 ;This procedure will poll the status of the rotary encoder.
                 ;If rotation occurs, then the LED pattern will adjust appropriately.
                 ;
                 ;    rotate_mode: FETCH sA, LED_pattern               ;last known position
                 ;                 FETCH s0, rotary_status             ;check status of rotation
                 ;                 TEST s0, 80                         ;test flag
                 ;                 JUMP Z, update_pattern
                 ;                 AND s0, 7F                          ;clear flag
                 ;                 STORE s0, rotary_status
                 ;                 TEST s0, rotary_left                ;event occurred so update pattern
                 ;                 JUMP Z, move_right
                 ;                 RL sA
                 ;                 JUMP update_pattern
                 ;     move_right: RR sA
                 ; update_pattern: STORE sA, LED_pattern
                 ;                 OUTPUT sA, LED_port                 ;drive LEDs with current pattern
                 ;                 RETURN
                 ;                 ;
                 ;
                 ;
                 ;
                 ;**************************************************************************************
                 ;LCD text messages
                 ;**************************************************************************************
                 ;
                 ;
                 ;Display 'SPARTAN-3E STARTER KIT' on LCD at current cursor position
                 ;
                 ;
      disp_msg1: 
                 CALL disp_space
                 LOAD s5, character_A
                 CALL LCD_write_data
                 CALL disp_space
                 LOAD s5, character_C
                 CALL LCD_write_data
                 LOAD s5, character_l
                 CALL LCD_write_data
                 LOAD s5, character_o
                 CALL LCD_write_data
                 LOAD s5, character_c
                 CALL LCD_write_data
                 LOAD s5, character_k
                 CALL LCD_write_data
                 CALL disp_space
                 LOAD s5, character_B
                 CALL LCD_write_data
                 LOAD s5, character_a
                 CALL LCD_write_data
                 LOAD s5, character_s
                 CALL LCD_write_data
                 LOAD s5, character_e
                 CALL LCD_write_data
                 LOAD s5, character_d
                 CALL LCD_write_data
                 CALL disp_space
                 RETURN
                 ;
                 ;
                 ;
      disp_msg2: LOAD s5, character_S
                 CALL LCD_write_data
                 LOAD s5, character_3
                 CALL LCD_write_data
                 LOAD s5, character_E
                 CALL LCD_write_data
                 CALL disp_space
                 LOAD s5, character_S
                 CALL LCD_write_data
                 LOAD s5, character_t
                 CALL LCD_write_data
                 LOAD s5, character_a
                 CALL LCD_write_data
                 LOAD s5, character_r
                 CALL LCD_write_data
                 LOAD s5, character_t
                 CALL LCD_write_data
                 LOAD s5, character_e
                 CALL LCD_write_data
                 LOAD s5, character_r
                 CALL LCD_write_data
                 CALL disp_space
                 LOAD s5, character_K
                 CALL LCD_write_data
                 LOAD s5, character_i
                 CALL LCD_write_data
                 LOAD s5, character_t
                 CALL LCD_write_data
                 LOAD s5, character_3
                 CALL LCD_write_data
                 RETURN
      disp_msg3: CALL disp_space
                 CALL disp_space
                 CALL disp_space
                 CALL disp_space
                 CALL disp_space
                 LOAD s5, character_X
                 CALL LCD_write_data
                 LOAD s5, character_i
                 CALL LCD_write_data
                 LOAD s5, character_l
                 CALL LCD_write_data
                 LOAD s5, character_i
                 CALL LCD_write_data
                 LOAD s5, character_n
                 CALL LCD_write_data
                 LOAD s5, character_x
                 CALL LCD_write_data
                 CALL disp_space
                 CALL disp_space
                 CALL disp_space
                 CALL disp_space
                 CALL disp_space
                 RETURN
      disp_msg4: LOAD s5, character_P
                 CALL LCD_write_data
                 LOAD s5, character_i
                 CALL LCD_write_data
                 LOAD s5, character_c
                 CALL LCD_write_data
                 LOAD s5, character_o
                 CALL LCD_write_data
                 LOAD s5, character_B
                 CALL LCD_write_data
                 LOAD s5, character_l
                 CALL LCD_write_data
                 LOAD s5, character_a
                 CALL LCD_write_data
                 LOAD s5, character_z
                 CALL LCD_write_data
                 LOAD s5, character_e
                 CALL LCD_write_data
                 CALL disp_space
                 LOAD s5, character_T
                 CALL LCD_write_data
                 LOAD s5, character_e
                 CALL LCD_write_data
                 LOAD s5, character_s
                 CALL LCD_write_data
                 LOAD s5, character_t
                 CALL LCD_write_data
                 CALL disp_space
                 RETURN
      disp_msg5: LOAD s5, character_P
                 CALL LCD_write_data
                 LOAD s5, character_r
                 CALL LCD_write_data
                 LOAD s5, character_e
                 CALL LCD_write_data
                 LOAD s5, character_s
                 CALL LCD_write_data
                 LOAD s5, character_s
                 CALL LCD_write_data
                 CALL disp_space
                 LOAD s5, 26
                 CALL LCD_write_data
                 CALL disp_space
                 LOAD s5, character_T
                 CALL LCD_write_data
                 LOAD s5, character_u
                 CALL LCD_write_data
                 LOAD s5, character_r
                 CALL LCD_write_data
                 LOAD s5, character_n
                 CALL LCD_write_data
                 CALL disp_space
                 LOAD s5, character_t
                 CALL LCD_write_data
                 LOAD s5, character_h
                 CALL LCD_write_data
                 LOAD s5, character_e
                 CALL LCD_write_data
                 RETURN
      disp_msg6: CALL disp_space
                 LOAD s5, character_E
                 CALL LCD_write_data
                 LOAD s5, character_n
                 CALL LCD_write_data
                 LOAD s5, character_c
                 CALL LCD_write_data
                 LOAD s5, character_o
                 CALL LCD_write_data
                 LOAD s5, character_d
                 CALL LCD_write_data
                 LOAD s5, character_e
                 CALL LCD_write_data
                 LOAD s5, character_r
                 CALL LCD_write_data
                 CALL disp_space

⌨️ 快捷键说明

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