📄 usb.lst
字号:
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 + -