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

📄 usb_to_serial.lst

📁 usb serial converter
💻 LST
📖 第 1 页 / 共 5 页
字号:
                
                ;****************************************************************
                ; MISCELLANEOUS CONSTANTS
                ;****************************************************************
                
0080=           ERROR_FLAG:         equ     80h                 ;
                
0000=           RAM:                equ     00h                 ;
0001=           ROM:                equ     01h                 ;
                
0000=           EVEN_PARITY:        equ     FALSE               ;
FFFFFFFF=           ODD_PARITY:         equ     TRUE                ;
                
0006=           RTS_LAG:            equ     06h                 ;
                
00C2=           BAUD_115200:        equ     C2h                 ;
00E1=           BAUD_57600:         equ     E1h                 ;
0096=           BAUD_38400:         equ     96h                 ;
004B=           BAUD_19200:         equ     4Bh                 ;
0025=           BAUD_9600:          equ     25h                 ;
0012=           BAUD_4800:          equ     12h                 ;
0009=           BAUD_2400:          equ     09h                 ;
0004=           BAUD_1200:          equ     04h                 ;
0002=           BAUD_600:           equ     02h                 ;
                
                ;****************************************************************
                ; USB CONSTANTS
                ;****************************************************************
                
                ; Standard Requests
0000=           GET_STATUS:         equ     0                   ;
0001=           CLEAR_FEATURE:      equ     1                   ;
0003=           SET_FEATURE:        equ     3                   ;
0005=           SET_ADDRESS:        equ     5                   ;
0006=           GET_DESCRIPTOR:     equ     6                   ;
0007=           SET_DESCRIPTOR:     equ     7                   ;
0008=           GET_CONFIGURATION:  equ     8                   ;
0009=           SET_CONFIGURATION:  equ     9                   ;
000A=           GET_INTERFACE:      equ     10                  ;
000B=           SET_INTERFACE:      equ     11                  ;
000C=           SYNCH_FRAME:        equ     12                  ;
                
                ; Standard Descriptor Types
0001=           DEVICE:             equ     1                   ;
0002=           CONFIGURATION:      equ     2                   ;
0003=           STRING:             equ     3                   ;
0004=           INTERFACE:          equ     4                   ;
0005=           ENDPOINT:           equ     5                   ;
                
                ; Standard Feature Selectors
0000=           ENDPOINT_STALL:     equ     0                   ; Endpoint recipient
0001=           DEVICE_REMOTE_WAKEUP: equ   1                   ; Device recipient
                
                ;****************************************************************
                ; HID CONSTANTS
                ;****************************************************************
                ; from HID Class v1.0 Draft #4
                ;****************************************************************
                
                ; Class specific descriptor types from section 
                ; 7.1 Standard Requests
                
0021=           HID:                equ     21h                 ;
0022=           REPORT:             equ     22h                 ;
0023=           PHYSICAL:           equ     23h                 ;
                  
                ; Class specific request codes from section 7.2 
                ; Class Specific Requests
                
0001=           GET_REPORT:         equ     1                   ;
0002=           GET_IDLE:           equ     2                   ;
0003=           GET_PROTOCOL:       equ     3                   ;
0009=           SET_REPORT:         equ     9                   ;
000A=           SET_IDLE:           equ     10                  ;
000B=           SET_PROTOCOL:       equ     11                  ;
                
0001=           CONFIGURED:         equ     1                   ; configuration status values
0000=           UNCONFIGURED:       equ     0                   ;
                
0000=           BOOT_PROTOCOL:      equ     0                   ; protocol status values
0001=           REPORT_PROTOCOL:    equ     1
                
0000=           DISABLE_REMOTE_WAKEUP: equ  0                   ; bit[1] = 0
0002=           ENABLE_REMOTE_WAKEUP: equ   2                   ; bit[1] = 1
                
                ;****************************************************************
                ; CODE STARTS HERE
                ;****************************************************************
                
0000            ORG 0000h
                
**** MACRO ****     INTERRUPT_VECTOR_TABLE                  ;
0000            XPAGEOFF
0000 80 1B [05]     jmp     Reset_Isr                       ;
0002 80 52 [05]     jmp     Bus_Reset_Isr                   ;
0004 80 1A [05]     jmp     128us_Isr                       ;
0006 80 83 [05]     jmp     1ms_Isr                         ;
0008 86 BF [05]     jmp     Ep0_Isr                         ;
000A 80 CC [05]     jmp     Ep1_Isr                         ;
000C 80 E4 [05]     jmp     Ep2_Isr                         ;
000E 80 1A [05]     jmp     Ep3_Isr                         ;
0010 80 1A [05]     jmp     Ep4_Isr                         ;
0012 80 1A [05]     jmp     Reserved_Isr                    ;
0014 80 1A [05]     jmp     Dac_Isr                         ;
0016 84 4C [05]     jmp     Gpio_Isr                        ;
0018 80 1A [05]     jmp     I2c_Isr                         ;
001A            XPAGEON
***END MACRO*** 
                
001A            CODE_START:
                
001A            XPAGEON
                
                ;****************************************************************
                ; ISR: Reserved_Isr(s)
                ;****************************************************************
                
                IFDEF 64013
001A            Ep3_Isr:
001A            Ep4_Isr:
001A            I2c_Isr:
001A            Dac_Isr:
                ENDIF
                
                IFDEF 63743
                ENDIF
                
001A            128us_Isr:
                
001A            Reserved_Isr:
001A 73    [08]     reti                                    ;
                 
                ;****************************************************************
                ; ISR: Reset_Isr
                ;****************************************************************
                ; The reset interrupt resets all the variable to their 
                ; default values and prepares the USB device for enumeration
                ;****************************************************************
                
001B            Reset_Isr:
                
                IFDEF 63743
                ENDIF
                
001B 19 01 [04]     mov     A, RUN_EN                       ;
001D 2A FF [05]     iowr    CTL                             ;
                
001F 19 B8 [04]     mov     A, DSP_BEGIN                    ;
0021 30    [05]     swap    A, DSP                          ;
                
                ;----------------------------------------------------------------
                
                    ; Clear all of RAM.
                    
0022 19 00 [04]     mov     A, 00h                          ;
0024 1C FF [04]     mov     X, (RAM_SIZE - 1)               ;
                
0026            Clear_Ram_Loop:                             ;
0026 2A 26 [05]     iowr    WDT                             ;
                
0028 32 00 [06]     mov     [X + 0], A                      ;
                
002A 26    [04]     dec     X                               ;
002B D0 26 [05]     jnc     Clear_Ram_Loop                  ;
                
                ;----------------------------------------------------------------
                
                IFDEF 64013
                
                    ; The 64013 provides either three or five
                    ; endpoints. Two of the common endpoints 
                    ; can provide either 8 or 32-byte fifos. 
                    ; Configure the endpoints based on the
                    ; NUM_EPS and FIFO_SIZE defines.
                    
002D 19 00 [04]     mov     A, 00h                          ;
                    
                    ; If the number of endpoints is defined as
                    ; 5, set the EP_COUNT bit in the USB_CTL
                    ; register.
                    
                IF (NUM_EPS - 5) 
                ELSE
                ENDIF
                
                    ; If the endpoint fifo size is defined as
                    ; 32, set the EP_SIZE bit in the USB_CTL
                    ; register.
                    
                IF (FIFO_SIZE - 32) 
                ELSE
002F 0D 80 [04]     or      A, EP_SIZE                      ;
                ENDIF
                
0031 2A 1F [05]     iowr    USB_CTL                         ;
                
**** MACRO ****     DISABLE_SE0                             ;
0033 19 10 [04]     mov     A, 10h                          ;
0035 2A F2 [05]     iowr    F2h                             ;
***END MACRO*** 
                        
0037 19 AB [04]     mov     A, ((P3_CFG_MSK & CMOS_NONE) | (P2_CFG_MSK & CMOS_NONE) | (P1_CFG_MSK & CMOS_NONE) | (P0_CFG_MSK & RES_NEG))
0039 2A 08 [05]     iowr    GPIO_CFG                        ; 
                
                ENDIF
                
                IFDEF 63743
                ENDIF
                
003B 19 FF [04]     mov     A, FFh                          ;
003D 31 20 [05]     mov     [p1_shadow], A                  ;
                
003F 19 01 [04]     mov     A, USB_RST_INT_EN               ; Enable Bus Reset Interrupt 
0041 2A 20 [05]     iowr    IE                              ; disable all other interrupts
                
0043 19 01 [04]     mov     A, EP0_IE                       ; Enable EP0 interrupt
0045 2A 21 [05]     iowr    EP_IE                           ; 
                
0047 19 03 [04]     mov     A, STALL_IN_OUT                 ; Set Endpoint 0 mode to Stall
0049 2A 12 [05]     iowr    EP0_MODE                        ;
                
004B 19 80 [04]     mov     A, (USB_ADDR_EN | 00h)          ; Enable response to USB address 0
004D 2A 10 [05]     iowr    USB_ADDR                        ;
                
004F 72    [04]     ei                                      ;
                
0050 81 40 [05]     jmp     Main                            ;
                
                ;****************************************************************
                ; ISR: Bus_Reset_Isr
                ;****************************************************************
                
0052            Bus_Reset_Isr:
0052 2D    [05]     push    A                               ;
                    
                IFDEF 64013
                
0053 19 AB [04]     mov     A, ((P3_CFG_MSK & CMOS_NONE) | (P2_CFG_MSK & CMOS_NONE) | (P1_CFG_MSK & CMOS_NONE) | (P0_CFG_MSK & RES_NEG))
0055 2A 08 [05]     iowr    GPIO_CFG                        ; 
                
                ENDIF
                
                IFDEF 63743
                ENDIF
                
0057 19 FF [04]     m

⌨️ 快捷键说明

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