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

📄 logo.lst

📁 利用CY单片机CY7C637XX编写的USB鼠标程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
00E9 2C    [04]         pop             X
00EA 73    [08]         reti
                
00EB                    ep0_setup_received:
00EB 19 01 [04]                 mov             A, NAK_IN_OUT                           ; clear setup bit to enable
00ED 2A 12 [05]                 iowr            ep0_mode                                        ; writes to EP0 DMA buffer
                
                
00EF 1A F8 [05]                 mov             A, [bmRequestType]      ; compact bmRequestType into 5 bit field
00F1 10 E3 [04]                 and             A, E3h                  ; clear bits 4-3-2, these unused for our purposes
00F3 2D    [05]                 push    A                               ; store value
00F4 3C    [04]                 asr             A                       ; move bits 7-6-5 into 4-3-2's place
00F5 3C    [04]                 asr             A
00F6 3C    [04]                 asr             A
00F7 31 2F [05]                 mov             [int_temp], A           ; store shifted value
00F9 2B    [04]                 pop             A                       ; get original value
00FA 0E 2F [06]                 or              A, [int_temp]           ; or the two to get the 5-bit field
00FC 10 1F [04]                 and             A, 1Fh                  ; clear bits 7-6-5 (asr wraps bit7)
00FE 3B    [04]                 asl             A                       ; shift to index jumptable,jmp is 2 bytes
00FF 1F    [04]         XPAGE
0100 E6 00 [07]                 jacc    bmRequestType_jumptable         ; jump to handle bmRequestType
                
                
0102                            h2d_std_device:
0102 1A F9 [05]                         mov             A, [bRequest]
0104 3B    [04]                         asl             A
0105 E6 40 [07]                         jacc    h2d_std_device_jumptable
                
0107                            h2d_std_interface:      
0107 1A F9 [05]                         mov             A, [bRequest]
0109 3B    [04]                         asl             A
010A E6 54 [07]                         jacc    h2d_std_interface_jumptable
                
010C                            h2d_std_endpoint:
010C 1A F9 [05]                         mov             A, [bRequest]
010E 3B    [04]                         asl             A
010F E6 6C [07]                         jacc    h2d_std_endpoint_jumptable
                
0111                            d2h_std_device:
0111 1A F9 [05]                         mov             A, [bRequest]
0113 3B    [04]                         asl             A
0114 E6 74 [07]                         jacc    d2h_std_device_jumptable
                
0116                            d2h_std_interface:
0116 1A F9 [05]                         mov             A, [bRequest]
0118 3B    [04]                         asl             A
0119 E6 86 [07]                         jacc    d2h_std_interface_jumptable
                
011B                            d2h_std_endpoint:
011B 1A F9 [05]                         mov             A, [bRequest]
011D 3B    [04]                         asl             A
011E E6 9C [07]                         jacc    d2h_std_endpoint_jumptable
                
                
                        ;;************ DEVICE REQUESTS **************
                
0120                    set_device_address:                                             ; SET ADDRESS
0120 19 00 [04]                 mov             A, ADDRESS_CHANGE_PENDING   ;02h        ; set flag to indicate we
0122 31 27 [05]                 mov             [ep0_in_flag], A                ; need to change address on
0124 1A FA [05]                 mov             A, [wValuelo]
0126 31 2E [05]                 mov             [pending_data], A
0128 83 35 [05]                 jmp             initialize_no_data_control
                
012A                    set_device_configuration:                               ; SET CONFIGURATION
012A 1A FA [05]                 mov             A, [wValuelo]
012C 16 01 [05]                 cmp             A, 01h
012E A1 3C [05]                 jz              configure_device
0130                            unconfigure_device:                                     ; set device as unconfigured
0130 31 28 [05]                         mov             [configuration], A
0132 19 00 [04]                         mov             A, DISABLE                              ; disable endpoint 1
0134 2A 14 [05]                         iowr    ep1_mode
0136 19 01 [04]                         mov     A, EP0_INT                              ; turn off endpoint 1 interrupts
0138 2A 21 [05]                         iowr    endpoint_int
013A 81 5C [05]                         jmp             set_device_configuration_done
013C                            configure_device:                                       ; set device as configured
013C 31 28 [05]                         mov             [configuration], A
                
013E 1A 29 [05]                         mov             A, [ep1_stall]                  ; if endpoint 1 is stalled
0140 10 FF [04]                         and             A, FFh
0142 A1 4A [05]                         jz              ep1_nak_in_out
0144 19 03 [04]                                 mov             A, STALL_IN_OUT         ; set endpoint 1 mode to stall
0146 2A 14 [05]                                 iowr    ep1_mode
0148 81 4E [05]                                 jmp             ep1_set_int
014A                                    ep1_nak_in_out:
014A 19 01 [04]                                 mov             A, NAK_IN_OUT           ; otherwise set it to NAK in/out
014C 2A 14 [05]                                 iowr    ep1_mode
014E                                    ep1_set_int:
014E 19 03 [04]                         mov     A, EP0_INT | EP1_INT    ; enable endpoint 1 interrupts          
0150 2A 21 [05]                         iowr    endpoint_int
0152 19 00 [04]                         mov             A, 00h
0154 31 21 [05]                         mov             [ep1_data_toggle], A    ; reset the data toggle
0156 31 F0 [05]                         mov             [ep1_dmabuff0], A               ; reset endpoint 1 fifo values
0158 31 F1 [05]                         mov             [ep1_dmabuff1], A
015A 31 F2 [05]                         mov             [ep1_dmabuff2], A
015C                                    set_device_configuration_done:
015C 19 02 [04]                         mov             A, NO_CHANGE_PENDING
015E 31 27 [05]                         mov             [ep0_in_flag], A
0160 83 35 [05]                         jmp             initialize_no_data_control
                
                
0162                    get_device_status:                                              ; GET STATUS
0162 19 02 [04]                 mov             A, DEVICE_STATUS_LENGTH
0164 31 25 [05]                 mov             [maximum_data_count], A
0166 19 66 [04]                 mov             A, (device_status_wakeup_disabled - control_read_table)
0168 31 23 [05]                 mov             [data_start], A
016A 83 0C [05]                 jmp             initialize_control_read
                                
                
016C                    get_device_descriptor:                                  ; GET DESCRIPTOR
016C 1A FB [05]                 mov             A, [wValuehi]
016E 3B    [04]                 asl             A
016F E6 C6 [07]                 jacc    get_device_descriptor_jumptable
                
0171                            send_device_descriptor:
0171 19 00 [04]                         mov             A, 00h                                  ; get device descriptor length
0173 F7 00 [14]                         index           device_desc_table
0175 31 25 [05]                         mov             [maximum_data_count], A
0177 19 00 [04]                         mov             A, (device_desc_table - control_read_table)
0179 31 23 [05]                         mov             [data_start], A
017B 83 0C [05]                         jmp             initialize_control_read
                
017D                            send_configuration_descriptor:
017D 19 02 [04]                         mov             A, 02h
017F F7 12 [14]                         index   config_desc_table:
0181 31 25 [05]                         mov             [maximum_data_count], A
0183 19 12 [04]                         mov             A, (config_desc_table - control_read_table)
0185 31 23 [05]                         mov             [data_start], A
0187 83 0C [05]                         jmp             initialize_control_read
                
0189                            send_string_descriptor:
0189 1A FA [05]                         mov             A, [wValuelo]
018B 3B    [04]                         asl             A
018C E6 D2 [07]                         jacc    string_jumptable:
                
018E                                    language_string:
018E 19 00 [04]                                 mov             A, 00h
0190 F7 73 [14]                                 index   ilanguage_string
0192 31 25 [05]                                 mov             [maximum_data_count], A
0194 19 73 [04]                                 mov             A, (ilanguage_string - control_read_table)
0196 31 23 [05]                                 mov             [data_start], A
0198 83 0C [05]                                 jmp             initialize_control_read
                
019A                                    manufacturer_string:
019A 19 00 [04]                                 mov             A, 00h
019C F7 77 [14]                                 index   imanufacturer_string
019E 31 25 [05]                                 mov             [maximum_data_count], A
01A0 19 77 [04]                                 mov             A, (imanufacturer_string - control_read_table)
01A2 31 23 [05]                                 mov             [data_start], A
01A4 83 0C [05]                                 jmp             initialize_control_read
                
01A6                                    product_string:
01A6 19 00 [04]                                 mov             A, 00h
01A8 F7 93 [14]                                 index   iproduct_string
01AA 31 25 [05]                                 mov             [maximum_data_count], A
01AC 19 93 [04]                                 mov             A, (iproduct_string - control_read_table)
01AE 31 23 [05]                                 mov             [data_start], A
01B0 83 0C [05]                                 jmp             initialize_control_read
                
01B2                                    serial_string:
01B2 19 00 [04]                                 mov             A, 00h
01B4 F7 C7 [14]                                 index   iserialnumber_string
01B6 31 25 [05]                                 mov             [maximum_data_count], A
01B8 19 C7 [04]                                 mov             A, (iserialnumber_string - control_read_table)
01BA 31 23 [05]                                 mov             [data_start], A
01BC 83 0C [05]                                 jmp             initialize_control_read
                
01BE                                    configuration_string:
01BE 19 00 [04]                                 mov             A, 00h
01C0 F7 D7 [14]                                 index   iconfiguration_string
01C2 31 25 [05]                                 mov             [maximum_data_count], A
01C4 19 D7 [04]                                 mov             A, (iconfiguration_string - control_read_table)
01C6 31 23 [05]                                 mov             [data_start], A
01C8 83 0C [05]                                 jmp             initialize_control_read
                
01CA                            send_interface_descriptor:
01CA 19 00 [04]                         mov             A, 00h                                  ; get interface descriptor length
01CC F7 1B [14]                         index   interface_desc_table 
01CE 31 25 [05]                         mov             [maximum_data_count], A
01D0 19 1B [04]                         mov             A, (interface_desc_table - control_read_table)
01D2 31 23 [05]                         mov             [data_start], A
01D4 83 0C [05]                         jmp             initialize_control_read
                
01D6                            send_endpoint_descriptor:
01D6 19 00 [04]                         mov             A, 00h                                  ; get endpoint descriptor length
01D8 F7 2D [14]                         index   endpoint_desc_table
01DA 31 25 [05]                         mov             [maximum_data_count], A
01DC 19 2D [04]                         mov             A, (endpoint_desc_table - control_read_table)
01DE 31 23 [05]                         mov             [data_start], A
01E0 83 0C [05]                         jmp             initialize_control_read
                
                
01E2                            get_device_configuration:                       ; GET CONFIGURATION
01E2 19 01 [04]                         mov             A, DEVICE_CONFIG_LENGTH
01E4 31 25 [05]                         mov             [maximum_data_count], A
01E6 1A 28 [05]                         mov             A, [configuration]              ; test configuration status
01E8 10 FF [04]                         and             A, FFh
01EA A1 F2 [05]                         jz              device_unconfigured
01EC                                    device_configured:                              ; send configured status
01EC 19 68 [04]                                 mov             A, (device_configured_table - control_read_table)
01EE 31 23 [05]                                 mov             [data_start], A
01F0 83 0C [05]                                 jmp             initialize_control_read
01F2                                    device_unconfigured:                            ; send unconfigured status
01F2 19 69 [04]                                 mov             A, (device_unconfigured_table - control_read_table)
01F4 31 23 [05]                                 mov             [data_start], A
01F6 83 0C [05]                                 jmp             initialize_control_read
                
                
                        ;;************ INTERFACE REQUESTS ***********
                
01F8                    set_interface_interface:                                ; SET INTERFACE
01F8 1A FA [05]                 mov             A, [wValuelo]
01FA 16 00 [05]                 cmp             A, 00h                                          ; there are no alternate interfaces
01FC A2 02 [05]                 jz              alternate_supported                     ; for this device
01FE                            alternate_not_supported:                        ; if the host requests any other
01FE 20    [04]         NOP
01FF 1F    [04]         XPAGE

⌨️ 快捷键说明

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