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

📄 usb.lst

📁 CY7C63743 usb键盘的源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
0000            ; LED positions in port 3
0000            NUM_LOCK_LED:               equ    1h  ; bit[0]
0000            CAPS_LOCK_LED:          equ    2h   ; bit[1]
0000            SCROLL_LOCK_LED:        equ    4h   ; bit[2]
0000            
0000            ; Normal GPIO port configuration
0000            NORMAL:                 equ     f5h         ; Port3 resistive neg
0000                                                        ; Port2 resistive neg
0000                                                            ; Port1 open drain neg
0000                                                            ; Port0 open drain neg
0000            
0000            
0000            
0000            
0000            
0000            
0000            
0000            
0000            PS2_KEYBOARD:   equ 0               
0000            USB_KEYBOARD:   equ 1
0000            ;we need to use the endpoint 2 normally used for the mouse, to report
0000            ;power key usages. So, the following equate will enable endpoint 2 interrupts
0000            ;even though we are not using mouse code.
0000            EP_INTERRUPTS: equ KEYBOARD_PLUS_MOUSE
0000            
0000            ;========================================================================
0000            ;  interrupt vector table -- must be located here
0000            ;========================================================================
0000            
0000                ORG     00h
0000            
0000 80 1E [05]     jmp     sys_reset               ; reset vector
0002            
0002 81 8C [05]     jmp     USB_Bus_Reset_ISR       ; USB bus reset
0004            
0004 80 1E [05]     jmp     illegal_int             ; 128us interrupt
0006            
0006 80 1A [05]     jmp    dual_ifc_1ms_ISR           ; 1.024ms interrupt
0008            
0008 82 CC [05]     jmp     USB_EP0_ISR             ; endpoint 0 interrupt
000A            
000A 80 FD [05]     jmp     USB_EP1_ISR             ; endpoint 1 interrupt
000C            
000C 81 12 [05]     jmp USB_EP2_ISR                     ; endpoint 2 interrupt
000E            
000E 80 1E [05]     jmp     illegal_int             ; reserved interrupt
0010            
0010 80 1E [05]     jmp     illegal_int             ; reserved interrupt
0012            
0012 80 1E [05]     jmp     illegal_int             ; reserved interrupt
0014            
0014 81 25 [05]     jmp     DAC_ISR                 ; DAC interrupt
0016            
0016 81 26 [05]     jmp     GPIO_ISR                ; GPIO interrupt
0018            
0018 80 1E [05]     jmp     illegal_int             ; reserved interrupt
001A            
001A            ;========================================================================
001A            ;
001A            ;   FUNCTION: dual_ifc_1ms_ISR
001A            ;
001A            ;   purpose:    
001A            ;   provides the entry point for the 1 millisecond tick.
001A            ;   This ISR entry point jumps to the USB 1msec ISR.
001A            ;
001A            ;
001A            ;========================================================================
001A            dual_ifc_1ms_ISR:
001A 72    [08]     ei                              ;allow nesting
001B 2D    [05]     push    A                       ;save A
001C 80 C9 [05]     jmp     One_mSec_ISR            ;go direct to USB ISR
001E            
001E            ;========================================================================
001E            ;
001E            ;   FUNCTION: sys_reset
001E            ;
001E            ;   purpose:    
001E            ;   reset entry point for code
001E            ;
001E            ;
001E            ;========================================================================
001E            
001E            
001E            illegal_int:
001E            sys_reset:
001E 70    [08]     di                                        ;disable interrupts   
001F 19 FF [04]     mov       A,0ffh 
0021 2A 03 [05]     iowr      PORT3_DATA_REG
0023 19 F5 [04]     mov        A,NORMAL                        ;configure GPIO reg
0025 2A 08 [05]     iowr     GPIO_CONFIG_REG
0027 19 F7 [04]     mov     A,~P3_USB_CONN_MASK             ;drive connect bit low
0029 2A 03 [05]     iowr    PORT3_DATA_REG
002B            
002B            
002B            
002B 19 00 [04]     mov     a,0                             ;set psp stack to 0
002D 60    [04]     mov     psp,a                           ; 
002E 19 FF [04]     mov     a,0ffh                          ;set dsp stack to 0xff
0030 30    [05]     swap    a,dsp                           ;now we can call functions
0031            
0031 19 00 [04]     mov     A,0                             ;zero endpoint interrupt reg
0033 2A 21 [05]     iowr    ENDPOINT_INTERRUPT_REG            
0035 19 01 [04]     mov     A,USB_KEYBOARD
0037 31 30 [05]     mov     [dual_ifc_keyboard],A           
0039            
0039 81 82 [05]    jmp      Reset                          ;go straight usb
003B            .bummer:
003B 80 3B [05]     jmp     .bummer                         ;loop if we ever get here
003D            
003D            
003D            ; the dsp will remain at 0 for both ps2 and usb. Allow 30h bytes for it.
003D            
003D            dsp_stack_size:                 equ     30h
003D            
003D            ; the psp will start at 0xff for ps2 and 0xe0 for usb (to avoid the
003D            ; USB queues)
003D            
003D            psp_stack_size:                 equ     30h
003D            
003D            ram_base:                       equ     psp_stack_size  ;application ram start
003D            dual_ifc_keyboard:              equ     ram_base        ;keyboard type
003D            dual_ifc_1ms:                   equ     ram_base+1      ;1msec counter
003D            usbmain_ram_base:               equ     ram_base+2      ;start of usb main ram
003D            ;ps2main_ram_base:               equ     ram_base+2      ;and ps2 ram also
003D            
003D            ;include all code which resides in lower 4k now.
003D            
003D            ;========================================================================
003D            ; This is the Cypress USB Keyboard + PS2 Mouse demonstration firmware.  
003D            ; It supports the following features:
003D            ;       - Ch. 9 and HIDView compliance
003D            ;       - String Descriptors
003D            ;       - Suspend / Resume / Remote Wakeup
003D            ;       - Send keys on change
003D            ;       - N-Key rollover
003D            ;       - Debounce
003D            ;       - Phantom keys
003D            ;       - Boot protocol
003D            ;       - Plug and Play PS/2 Mouse Port
003D            ;
003D            ;REVISIONS:
003D            ;08/17/99 bth rewrote endpoint 0 ISR
003D            ;02/02/99
003D            ;            bth added set idle, get idle for mouse/power keys
003D            ;            added boot protocol switching on 2nd endpoint (mouse/power)
003D            ;            added get_report for mouse and power key packets
003D            ;            altered mechanism for maintaining idle period
003D            ;            by removing it from ISR and placing it in SendKeyboardReport
003D            ;11/09/98  bth added power management support
003D                            CPU 63413
003D            ;label: XPAGEON
003D            
003D                                   
003D            ;========================================================================
003D            ; data variable assignments
003D            ;========================================================================
003D            
003D            ; control endpoint 0 fifo
003D            endpoint_0:             equ  F8h        ; control endpoint
003D            
003D            ; definitions for SETUP packets
003D            bmRequestType:          equ  F8h
003D            bRequest:               equ  F9h
003D            wValue:                 equ  FAh    ; default wValue (8-bits)
003D            wValueHi:               equ  FBh
003D            wIndex:                 equ  FCh    ; default wIndex (8-bits)
003D            wIndexHi:               equ  FDh
003D            wLength:                equ  FEh    ; default wLength (8-bits)
003D            wLengthHi:              equ  FFh
003D            
003D            ; definition for OUT packets
003D            outbyte:                                equ  F8h        
003D            
003D            ; interrupt endpoint 1 fifo
003D            endpoint_1:                             equ  F0h        ; keyboard endpoint
003D            modifiers:                              equ  F0h
003D            
003D            ; interrupt endpoint 2 fifo
003D            endpoint_2:                             equ  E8h        ; power/media keys endpoint
003D            
003D            datastack_start:                equ  E0h        ; start of data stack
003D            
003D            ; data memory variables
003D            ;------------------------------------------------------------------------
003D            ; To support the USB specification.
003D            remote_wakeup_status:   equ  usbmain_ram_base 
003D                                                                                                                                    ; remote wakeup request
003D                                                                                                                                    ; zero is disabled
003D                                                                                                                                    ; two is enabled
003D            configuration_status:   equ  (usbmain_ram_base+1)
003D                                                                                                                                    ; configuration status
003D                                                                                                                                    ; zero is unconfigured
003D                                                                                                                                    ; one is configured
003D            ep1_stall_status:               equ  (usbmain_ram_base+2)                           ; zero is not stalled
003D            ep2_stall_status:               equ  (usbmain_ram_base+3)                                                                                                                       ; one is stalled
003D            
003D            protocol_status:                equ  (usbmain_ram_base+4)                       ; zero is boot protocol
003D                                                                    ; one is report protocol
003D            ; support SetIdle and GetIdle
003D            kbd_idle_period:                equ  (usbmain_ram_base+5)                       ; keyboard idle period
003D            kbd_idle_period_ctr:    equ  (usbmain_ram_base+6)                       ; keyboard idle period
003D            mouse_idle_period:      equ  (usbmain_ram_base+7)                ; mouse idle period
003D            mouse_idle_period_ctr:  equ  (usbmain_ram_base+8)                ; mouse idle period
003D            consumer_idle_period:   equ  (usbmain_ram_base+9)                       ; consumer keys idle period
003D            consumer_idle_period_ctr:equ  (usbmain_ram_base+10)                     ; consumer keys idle period
003D            power_idle_period:              equ  (usbmain_ram_base+11)                      ; power idle period
003D            power_idle_period_ctr:  equ  (usbmain_ram_base+12)                      ; power idle period
003D            
003D            1ms_counter:            equ  (usbmain_ram_base+13)                      ; 4ms counter
003D            data_start:             equ  (usbmain_ram_base+14)                      ; points to start of descriptor
003D            data_count:             equ  (usbmain_ram_base+15)                      ; current length of descriptor
003D            byte_count:             equ  (usbmain_ram_base+16)                      ; current size of transmission
003D            temp:                   equ  (usbmain_ram_base+17)
003D            
003D            ;--------------------------------------------------------------------------
003D            suspend_counter:        equ  (usbmain_ram_base+18)                      ; contains number of idle bus msecs
003D            
003D            
003D            ;------------------------------------------------------------------------
003D            ; application support
003D            ;------------------------------------------------------------------------
003D            
003D            
003D            page:                                   equ  (usbmain_ram_base+19)                      ; page location of descriptor(RAM,
003D                                                                                                                                    ; ROM page 1, ROM page 2
003D            EP0_mode_shadow:        equ  (usbmain_ram_base+20)                      ; variable to store ep0 mode
003D                                                                                                                                    ; used by set_ep0_mode
003D            
003D            ps2_tmp:                                equ  (usbmain_ram_base+21)                      ; temporary variable for port 3 write by PS/2
003D            background_flags:               equ  (usbmain_ram_base+22)                      ; signal flags for background 
003D            usb_leds:                   equ  (usbmain_ram_base+23)                  ; overcurrent debounce counter
003D            last_key_report:        equ  (usbmain_ram_base+24)
003D            EP0_fifo_shadow:        equ  (usbmain_ram_base+25)
003D            EP_A0_counter_shadow:   equ  (usbmain_ram_base+26)

⌨️ 快捷键说明

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