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

📄 usbjoy32.lst

📁 HID规范和一个基于CYPRESS FX2 的例子
💻 LST
📖 第 1 页 / 共 5 页
字号:
                
                ; RESPONSE SIZES
0002=           DEVICE_STATUS_LENGTH:           equ     2
0001=           DEVICE_CONFIG_LENGTH:           equ     1
0002=           ENDPOINT_STALL_LENGTH:          equ     2
0002=           INTERFACE_STATUS_LENGTH:        equ     2
0001=           INTERFACE_ALTERNATE_LENGTH:     equ     1
0001=           INTERFACE_PROTOCOL_LENGTH:      equ     1
                
                
                ;***** TRANSACTION TYPES
                
0000=           DONE_TRANSACTION:               equ     00h
0002=           CONTROL_READ_TRANSACTION:       equ     02h
0004=           CONTROL_WRITE_TRANSACTION:      equ     04h
0006=           NO_DATA_CONTROL_TRANSACTION:    equ     06h
                
                
                
                
                ;**********************************************************
                ; USB Descriptor and Request constants
                ;       source p172,,175 USB specification
                ;**********************************************************
                
                
                ;       Characterists of bmRequest Value
                ;
                ; D7    Data transfer direction
                ;       0 = Host to device
                ;       1 = Device to host
                ;
                ; D6..5 Type
                ;       0 = Standard
                ;       1 = Class
                ;       2 = Vendor
                ;       3 = Reserved
                ;
                ; D4..0 Recipient
                ;       0 = Device
                ;       1 = Interface
                ;       2 = Endpoint
                ;       3 = Other
                ;       4..31 = Reserved
                
                
                ;***** bmRequestType
0000=           HOSTTODEVICE:                   equ     00h
0080=           DEVICETOHOST:                   equ     80h
                
0000=           STANDARD_TYPE:                  equ     00h
0020=           CLASS_TYPE:                     equ     20h
0040=           VENDOR_TYPE:                    equ     40h
0060=           RESERVED_TYPE:                  equ     60h
                
0000=           DEVICE_RECIPIENT:               equ     00h
0001=           INTERFACE_RECIPIENT:            equ     01h
0002=           ENDPOINT_RECIPIENT:             equ     02h
0003=           OTHER_RECIPIENT:                equ     03h
                
                ;***** bRequest
0000=           GET_STATUS:                     equ     00h
0001=           CLEAR_FEATURE:                  equ     01h
0003=           SET_FEATURE:                    equ     03h
0005=           SET_ADDRESS:                    equ     05h
0006=           GET_DESCRIPTOR:                 equ     06h
0007=           SET_DESCRIPTOR:                 equ     07h
0008=           GET_CONFIGURATION:              equ     08h
0009=           SET_CONFIGURATION:              equ     09h
000A=           GET_INTERFACE:                  equ     0Ah
000B=           SET_INTERFACE:                  equ     0Bh
000C=           SYNCH_FRAME:                    equ     0Ch
                
                ;***** Descriptor Types
0001=           DEVICE:                         equ     01h
0002=           CONFIGURATION:                  equ     02h
0003=           STRING:                         equ     03h
0004=           INTERFACE:                      equ     04h
0005=           ENDPOINT:                       equ     05h
                
                ;***** Feature Selectors
0001=           DEVICE_REMOTE_WAKEUP:           equ     01h
0000=           ENDPOINT_STALL:                 equ     00h
                
                ;***** HID Class Request Types
0001=           GET_REPORT:                     equ     01h
0002=           GET_IDLE:                       equ     02h
0003=           GET_PROTOCOL:                   equ     03h
0009=           SET_REPORT:                     equ     09h
000A=           SET_IDLE:                       equ     0Ah
000B=           SET_PROTOCOL:                   equ     0Bh
                        
00F8=           ep0_dmabuff:            equ     F8h             ;endpoint 0 fifo
00F8=           ep0_dmabuff0:           equ     ep0_dmabuff+0
00F9=           ep0_dmabuff1:           equ     ep0_dmabuff+1
00FA=           ep0_dmabuff2:           equ     ep0_dmabuff+2
00FB=           ep0_dmabuff3:           equ     ep0_dmabuff+3
00FC=           ep0_dmabuff4:           equ     ep0_dmabuff+4
00FD=           ep0_dmabuff5:           equ     ep0_dmabuff+5
00FE=           ep0_dmabuff6:           equ     ep0_dmabuff+6
00FF=           ep0_dmabuff7:           equ     ep0_dmabuff+7
                
00F0=           ep1_dmabuff:            equ     F0h             ;endpoint 1 fifo
00F0=           ep1_dmabuff0:           equ     ep1_dmabuff+0
00F1=           ep1_dmabuff1:           equ     ep1_dmabuff+1
00F2=           ep1_dmabuff2:           equ     ep1_dmabuff+2
00F3=           ep1_dmabuff3:           equ     ep1_dmabuff+3
00F4=           ep1_dmabuff4:           equ     ep1_dmabuff+4
00F5=           ep1_dmabuff5:           equ     ep1_dmabuff+5
00F6=           ep1_dmabuff6:           equ     ep1_dmabuff+6
00F7=           ep1_dmabuff7:           equ     ep1_dmabuff+7
                
00E8=           ep2_dmabuff:            equ     E8h             ;endpoint 2 fifo
00E8=           ep2_dmabuff0:           equ     ep2_dmabuff+0
00E9=           ep2_dmabuff1:           equ     ep2_dmabuff+1
00EA=           ep2_dmabuff2:           equ     ep2_dmabuff+2
00EB=           ep2_dmabuff3:           equ     ep2_dmabuff+3
00EC=           ep2_dmabuff4:           equ     ep2_dmabuff+4
00ED=           ep2_dmabuff5:           equ     ep2_dmabuff+5
00EE=           ep2_dmabuff6:           equ     ep2_dmabuff+6
00EF=           ep2_dmabuff7:           equ     ep2_dmabuff+7
                
00F8=           bmRequestType:          equ     ep0_dmabuff0    ;aliasing for enpoint 0
00F9=           bRequest:               equ     ep0_dmabuff1
00FA=           wValuelo:               equ     ep0_dmabuff2
00FB=           wValuehi:               equ     ep0_dmabuff3
00FC=           wIndexlo:               equ     ep0_dmabuff4
00FD=           wIndexhi:               equ     ep0_dmabuff5
00FE=           wLengthlo:              equ     ep0_dmabuff6
00FF=           wLengthhi:              equ     ep0_dmabuff7
                
0036=           button_debounce:        equ     36h
003B=           new_buttons:            equ     3Bh
003D=           hat_buttons:            equ     3Dh
003E=           fire_buttons:           equ     3Eh
                
003F=           ep0_temp_store:         equ 3Fh         ; Added by DEF for problem with P05
0040=           rollover_bit:           equ 40h
0041=           discharge_cnt:          equ 41h
0042=           capture_a_temp:         equ 42h
0043=           capture_b_temp:         equ 43h
0044=           always_zero:            equ 44h
                
0050=           x_R1_diff1_new:         equ 50h
0051=           x_R1_diff2_new:         equ 51h
0052=           x_R1_diff1_old:         equ 52h
0053=           x_R1_diff2_old:         equ 53h
0054=           x_R2_diff1_new:         equ 54h
0055=           x_R2_diff2_new:         equ 55h
0056=           x_R2_diff1_old:         equ 56h
0057=           x_R2_diff2_old:         equ 57h
0058=           x_R1_average:           equ 58h
0059=           x_R2_average:           equ 59h
005A=           x_R12_Sum_MSB:          equ 5ah
005B=           x_R12_Sum_LSB:          equ 5bh
005C=           x_position:             equ 5ch
                
0060=           y_R1_diff1_new:         equ 60h
0061=           y_R1_diff2_new:         equ 61h
0062=           y_R1_diff1_old:         equ 62h
0063=           y_R1_diff2_old:         equ 63h
0064=           y_R2_diff1_new:         equ 64h
0065=           y_R2_diff2_new:         equ 65h
0066=           y_R2_diff1_old:         equ 66h
0067=           y_R2_diff2_old:         equ 67h
0068=           y_R1_average:           equ 68h
0069=           y_R2_average:           equ 69h
006A=           y_R12_Sum_MSB:          equ 6ah
006B=           y_R12_Sum_LSB:          equ 6bh
006C=           y_position:             equ 6ch
                
0070=           z_R1_diff1_new:         equ 70h
0071=           z_R1_diff2_new:         equ 71h
0072=           z_R1_diff1_old:         equ 72h
0073=           z_R1_diff2_old:         equ 73h
0074=           z_R2_diff1_new:         equ 74h
0075=           z_R2_diff2_new:         equ 75h
0076=           z_R2_diff1_old:         equ 76h
0077=           z_R2_diff2_old:         equ 77h
0078=           z_R1_average:           equ 78h
0079=           z_R2_average:           equ 79h
007A=           z_R12_Sum_MSB:          equ 7ah
007B=           z_R12_Sum_LSB:          equ 7bh
007C=           z_position:             equ 7ch
                
0090=           divider_top_hi:         equ 90h
0091=           divider_top_lo:         equ 91h
0092=           divider_bottom_hi:      equ 92h
0093=           divider_bottom_lo:      equ 93h
0094=           acc_a_hi:               equ 94h
0095=           acc_a_lo:               equ 95h
0096=           acc_b_hi:               equ 96h
0097=           acc_b_lo:               equ 97h
0098=           acc_c_hi:               equ 98h
0099=           acc_c_lo:               equ 99h
009A=           acc_d_hi:               equ 9ah
009B=           acc_d_lo:               equ 9bh
009C=           temp_div:               equ 9ch
009D=           RunningSum:             equ 9dh
009E=           RunningCarry:           equ 9eh
009F=           button_bits:            equ 9fh
                
                
0000            MACRO SUB16x16 FirstValueHi, FirstValueLo, SecondValueHi, SecondValueLo, FinalValueHi, FinalValueLo
0000                mov a, [FirstValueLo]
0000                sub a, [SecondValueLo]
0000                mov [FinalValueLo], a
0000                mov a, [FirstValueHi]
0000                sbb a, [SecondValueHi]
0000                mov [FinalValueHi], a    
0000            ENDM
                
0000            MACRO AVERAGE8x8 FirstValue, SecondValue, ThirdValue, FourthValue, RunningCarry, RunningSum, Average
0000                mov a, [FirstValue]         ; Obtain first sum and carry bit
0000                add a, [SecondValue]
0000                mov [RunningSum], a
0000                mov a, 00h                  ; Zero out the accumulator, but keeps carry bit intact
0000                adc a, 00h                  ; Add carry to accumulator
0000                mov [RunningCarry], a
0000            
0000                mov a, [RunningSum]         ; Obtain second sum and running carry
0000                add a, [ThirdValue]
0000                mov [RunningSum], a
0000                mov a, 00h                  ; Zero out the accumulator, but keeps carry bit intact
0000                adc a, [RunningCarry]
0000                mov [RunningCarry], a
0000                    
0000                mov a, [RunningSum]         ; Obtain third and final sum and running carry
0000                add a, [FourthValue]
0000                mov [RunningSum], a
0000                mov a, 00h                  ; Zero out the accumulator, but keeps carry bit intact
0000                adc a, [RunningCarry]
0000            
0000                rrc a                       ; Move the 2 lsb bits to the 2 msb bit position
0000                rrc a
0000                rrc a
0000                and a, d0h
0000                mov [RunningCarry], a
0000            
0000                mov a, [RunningSum]         ; Shift Sum 2 bits to right and put carry bits in 2 MSb's
0000                asr a
0000                asr a
0000                and a, 3fh
0000                or  a, [RunningCarry]
0000                mov [Average], a  
0000            ENDM
                
0000            MACRO ADD8x8wCarry FirstValue, SecondValue, CarryMSByte, SumLSByte, SumMSByteStored, SumLSByteStored

⌨️ 快捷键说明

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