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

📄 auto_pwm.psm

📁 EDA原理及VHDL实现(何宾教授)
💻 PSM
📖 第 1 页 / 共 3 页
字号:
                 ; KCPSM3 Program - Automatic Pulse Width Modulation (PWM) Control on the Spartan-3E Starter Kit.
                 ;
                 ; Ken Chapman - Xilinx Ltd
                 ;
                 ; Version v1.00 - 24th May 2006
                 ;
                 ; Automatically sequences the LEDs on the board using PWM to change intensity.
                 ;
                 ;**************************************************************************************
                 ; Port definitions
                 ;**************************************************************************************
                 ;
                 ;
                 ;
                 CONSTANT LED_port, 80               ;8 simple LEDs
                 CONSTANT LED0, 01                   ;     LED 0 - bit0
                 CONSTANT LED1, 02                   ;         1 - bit1
                 CONSTANT LED2, 04                   ;         2 - bit2
                 CONSTANT LED3, 08                   ;         3 - bit3
                 CONSTANT LED4, 10                   ;         4 - bit4
                 CONSTANT LED5, 20                   ;         5 - bit5
                 CONSTANT LED6, 40                   ;         6 - bit6
                 CONSTANT LED7, 80                   ;         7 - bit7
                 ;
                 ;
                 CONSTANT simple_port, 40            ;4 simple outputs
                 CONSTANT simple_IO9, 01             ;  Header  IO9  - bit0
                 CONSTANT simple_IO10, 02            ;          IO10 - bit1
                 CONSTANT simple_IO11, 04            ;          IO11 - bit2
                 CONSTANT simple_IO12, 08            ;          IO12 - bit3
                 ;
                 ;
                 ;
                 CONSTANT status_port, 00            ;UART status input
                 CONSTANT tx_half_full, 01           ;  Transmitter     half full - bit0
                 CONSTANT tx_full, 02                ;    FIFO               full - bit1
                 CONSTANT rx_data_present, 04        ;  Receiver     data present - bit2
                 CONSTANT rx_half_full, 08           ;    FIFO          half full - bit3
                 CONSTANT rx_full, 10                ;                   full - bit4
                 CONSTANT spare1, 20                 ;                  spare '0' - bit5
                 CONSTANT spare2, 40                 ;                  spare '0' - bit6
                 CONSTANT spare3, 80                 ;                  spare '0' - bit7
                 ;
                 CONSTANT UART_read_port, 01         ;UART Rx data input
                 ;
                 CONSTANT UART_write_port, 20        ;UART Tx data output
                 ;
                 ;
                 ;
                 ;**************************************************************************************
                 ; Special Register usage
                 ;**************************************************************************************
                 ;
                 NAMEREG sF, UART_data               ;used to pass data to and from the UART
                 ;
                 ;
                 ;
                 ;**************************************************************************************
                 ;Scratch Pad Memory Locations
                 ;**************************************************************************************
                 ;
                 CONSTANT PWM_duty_counter, 00       ;Duty Counter 0 to 255 within 1KHz period (1ms)
                 CONSTANT PWM_channel0, 01           ;PWM settings for each channel
                 CONSTANT PWM_channel1, 02           ; Channels 0 to 7 = LEDs 0 to 7
                 CONSTANT PWM_channel2, 03           ; Channels 8 to 11 = IO9 to IO12
                 CONSTANT PWM_channel3, 04
                 CONSTANT PWM_channel4, 05
                 CONSTANT PWM_channel5, 06
                 CONSTANT PWM_channel6, 07
                 CONSTANT PWM_channel7, 08
                 CONSTANT PWM_channel8, 09
                 CONSTANT PWM_channel9, 0A
                 CONSTANT PWM_channel10, 0B
                 CONSTANT PWM_channel11, 0C
                 CONSTANT ISR_preserve_s0, 0D        ;preserve register contents during Interrupt Service Routine
                 CONSTANT ISR_preserve_s1, 0E
                 CONSTANT ISR_preserve_s2, 0F
                 ;
                 ;
                 CONSTANT LED0_sequence, 10          ;LED sequence values
                 CONSTANT LED1_sequence, 11
                 CONSTANT LED2_sequence, 12
                 CONSTANT LED3_sequence, 13
                 CONSTANT LED4_sequence, 14
                 CONSTANT LED5_sequence, 15
                 CONSTANT LED6_sequence, 16
                 CONSTANT LED7_sequence, 17
                 ;
                 ;
                 ;
                 ;**************************************************************************************
                 ;Useful data constants
                 ;**************************************************************************************
                 ;
                 ;
                 ;
                 ;
                 ;ASCII table
                 ;
                 CONSTANT character_a, 61
                 CONSTANT character_b, 62
                 CONSTANT character_c, 63
                 CONSTANT character_d, 64
                 CONSTANT character_e, 65
                 CONSTANT character_f, 66
                 CONSTANT character_g, 67
                 CONSTANT character_h, 68
                 CONSTANT character_i, 69
                 CONSTANT character_j, 6A
                 CONSTANT character_k, 6B
                 CONSTANT character_l, 6C
                 CONSTANT character_m, 6D
                 CONSTANT character_n, 6E
                 CONSTANT character_o, 6F
                 CONSTANT character_p, 70
                 CONSTANT character_q, 71
                 CONSTANT character_r, 72
                 CONSTANT character_s, 73
                 CONSTANT character_t, 74
                 CONSTANT character_u, 75
                 CONSTANT character_v, 76
                 CONSTANT character_w, 77
                 CONSTANT character_x, 78
                 CONSTANT character_y, 79
                 CONSTANT character_z, 7A
                 CONSTANT character_A, 41
                 CONSTANT character_B, 42
                 CONSTANT character_C, 43
                 CONSTANT character_D, 44
                 CONSTANT character_E, 45
                 CONSTANT character_F, 46
                 CONSTANT character_G, 47
                 CONSTANT character_H, 48
                 CONSTANT character_I, 49
                 CONSTANT character_J, 4A
                 CONSTANT character_K, 4B
                 CONSTANT character_L, 4C
                 CONSTANT character_M, 4D
                 CONSTANT character_N, 4E
                 CONSTANT character_O, 4F
                 CONSTANT character_P, 50
                 CONSTANT character_Q, 51
                 CONSTANT character_R, 52
                 CONSTANT character_S, 53
                 CONSTANT character_T, 54
                 CONSTANT character_U, 55
                 CONSTANT character_V, 56
                 CONSTANT character_W, 57
                 CONSTANT character_X, 58
                 CONSTANT character_Y, 59
                 CONSTANT character_Z, 5A
                 CONSTANT character_0, 30
                 CONSTANT character_1, 31
                 CONSTANT character_2, 32
                 CONSTANT character_3, 33
                 CONSTANT character_4, 34
                 CONSTANT character_5, 35
                 CONSTANT character_6, 36
                 CONSTANT character_7, 37
                 CONSTANT character_8, 38
                 CONSTANT character_9, 39
                 CONSTANT character_colon, 3A
                 CONSTANT character_stop, 2E
                 CONSTANT character_semi_colon, 3B
                 CONSTANT character_minus, 2D
                 CONSTANT character_divide, 2F       ;'/'
                 CONSTANT character_plus, 2B
                 CONSTANT character_comma, 2C
                 CONSTANT character_less_than, 3C
                 CONSTANT character_greater_than, 3E
                 CONSTANT character_equals, 3D
                 CONSTANT character_space, 20
                 CONSTANT character_CR, 0D           ;carriage return
                 CONSTANT character_question, 3F     ;'?'
                 CONSTANT character_dollar, 24
                 CONSTANT character_exclaim, 21      ;'!'
                 CONSTANT character_BS, 08           ;Back Space command character
                 ;
                 ;
                 ;
                 ;
                 ;
                 ;**************************************************************************************
                 ;Initialise the system
                 ;**************************************************************************************
                 ;
                 ; All PWM channels initialise to off (zero).
                 ; Simple I/O outputs will remain off at all times.
                 ;
     cold_start: LOAD s0, 00
                 LOAD s1, PWM_channel0
     clear_loop: STORE s0, (s1)
                 COMPARE s1, PWM_channel11
                 JUMP Z, enable_int
                 ADD s1, 01
                 JUMP clear_loop
                 ;
     enable_int: ENABLE INTERRUPT                    ;interrupts used to drive servo
                 ;
                 CALL send_welcome                   ;Write welcome message to UART
                 CALL send_OK
                 ;
                 ;
                 ; Initialise LED pattern sequence
                 ;
                 LOAD s0, 01                         ;trigger to start wave pattern
                 STORE s0, LED0_sequence
                 LOAD s0, 00
                 STORE s0, LED1_sequence
                 STORE s0, LED2_sequence
                 STORE s0, LED3_sequence
                 STORE s0, LED4_sequence
                 STORE s0, LED5_sequence
                 STORE s0, LED6_sequence
                 STORE s0, LED7_sequence

⌨️ 快捷键说明

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