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

📄 upsd_usb.ls1

📁 DK3200 USB DEMO for KEIL C
💻 LS1
📖 第 1 页 / 共 5 页
字号:
                     415     ; 
                     416     ; volatile uchar idata SuspendCounter;
                     417     ; 
                     418     ; setup_buffer setupPacket;
                     419     ; 
                     420     ; static uchar* pTransmitBufferEP0;
                     421     ; static int    bytesToTransmitEP0;
                     422     ; static BOOL   shortTransfer;
                     423     ; 
                     424     ; extern void OnDeviceConfigured();
                     425     ; 
                     426     ; 
                     427     ; 
                     428     ; 
                     429     ; 
                     430     ; 
                     431     ; 
                     432     ; void OnUSBReset()
                     433     
----                 434             RSEG  ?PR?OnUSBReset?UPSD_USB
0000                 435     OnUSBReset:
                     436                             ; SOURCE LINE # 141
                     437     ; /******************************************************************************
                     438     ;  Function   : void OnUSBReset()
                     439     ;  Parameters : none
                     440     ;  Description: USB driver module initialization routine, in USR ISR only !!!.
                     441     ;  ******************************************************************************/
                     442     ;  {
                     443                             ; SOURCE LINE # 147
                     444     ;   pTransmitBufferEP0 = NULL;
                     445                             ; SOURCE LINE # 148
0000 900000   F      446             MOV     DPTR,#pTransmitBufferEP0
0003 E4              447             CLR     A
0004 F0              448             MOVX    @DPTR,A
0005 A3              449             INC     DPTR
0006 F0              450             MOVX    @DPTR,A
0007 A3              451             INC     DPTR
0008 F0              452             MOVX    @DPTR,A
                     453     ;   bytesToTransmitEP0 = 0;
A51 MACRO ASSEMBLER  UPSD_USB                                                             04/30/2004 12:58:00 PAGE     8

                     454                             ; SOURCE LINE # 149
0009 900000   F      455             MOV     DPTR,#bytesToTransmitEP0
000C F0              456             MOVX    @DPTR,A
000D A3              457             INC     DPTR
000E F0              458             MOVX    @DPTR,A
                     459     ; 
                     460     ;   UADR  = 0;                                 // Disable USB hardware
                     461                             ; SOURCE LINE # 151
000F F5EE            462             MOV     UADR,A
                     463     ;   UCON0 = uRX0E;                             // Enable EP0 for receiving only
                     464                             ; SOURCE LINE # 152
0011 75EA10          465             MOV     UCON0,#010H
                     466     ;   UCON1 = 0;                                 // Disable Endpoint 1
                     467                             ; SOURCE LINE # 153
0014 F5EB            468             MOV     UCON1,A
                     469     ;   UCON2 = uEP1E;                             // Enable EP1
                     470                             ; SOURCE LINE # 154
0016 75EC04          471             MOV     UCON2,#04H
                     472     ;   UADR  = uUSBEN + 0;                        // Enable USB with default address 0
                     473                             ; SOURCE LINE # 155
0019 75EE80          474             MOV     UADR,#080H
                     475     ;   UIEN  = ~(uMCUR+uEOPF+uRESUMIE);
                     476                             ; SOURCE LINE # 156
001C 75E9BC          477             MOV     UIEN,#0BCH
                     478     ;    // Enable all USB interrupts except uMCUR (MCU reset on USB reset) and EOP, ...
                     479     ;   USTA  = 0;
                     480                             ; SOURCE LINE # 158
001F F5ED            481             MOV     USTA,A
                     482     ;   UISTA = 0;                                 // Clear USB interrupts
                     483                             ; SOURCE LINE # 159
0021 F5E8            484             MOV     UISTA,A
                     485     ;   IEA  |= bEUSB;
                     486                             ; SOURCE LINE # 160
0023 43A701          487             ORL     IEA,#01H
                     488     ;  }
                     489                             ; SOURCE LINE # 161
0026 22              490             RET     
                     491     ; END OF OnUSBReset
                     492     
                     493     ; 
                     494     ; 
                     495     ; 
                     496     ; 
                     497     ; 
                     498     ; 
                     499     ; void UsbInitialize()
                     500     
----                 501             RSEG  ?PR?UsbInitialize?UPSD_USB
0000                 502     UsbInitialize:
                     503                             ; SOURCE LINE # 168
                     504     ; /******************************************************************************
                     505     ;  Function   : void UsbInitialize()
                     506     ;  Parameters : none
                     507     ;  Description: USB driver module initialization routine after MCU startup.
                     508     ;  ******************************************************************************/
                     509     ;  {
                     510                             ; SOURCE LINE # 174
                     511     ;   USCL = cUSCL_value;                        // Set USB clock prescaler
                     512                             ; SOURCE LINE # 175
0000 900000   F      513             MOV     DPTR,#cUSCL_value
0003 E4              514             CLR     A
0004 93              515             MOVC    A,@A+DPTR
0005 F5E1            516             MOV     USCL,A
                     517     ;   UIEN  = 0;                                 // Disable all USB interrupts
                     518                             ; SOURCE LINE # 176
0007 E4              519             CLR     A
A51 MACRO ASSEMBLER  UPSD_USB                                                             04/30/2004 12:58:00 PAGE     9

0008 F5E9            520             MOV     UIEN,A
                     521     ;   UADR  = 0;                                 // Disable USB hardware
                     522                             ; SOURCE LINE # 177
000A F5EE            523             MOV     UADR,A
                     524     ;   OnUSBReset();
                     525                             ; SOURCE LINE # 178
000C 020000   F      526             LJMP    OnUSBReset
                     527     ; END OF UsbInitialize
                     528     
                     529     ;  }
                     530     ; 
                     531     ; 
                     532     ; 
                     533     ; 
                     534     ; 
                     535     ; 
                     536     ; 
                     537     ; 
                     538     ; extern data char usr_cnt;
                     539     ; 
                     540     ; 
                     541     ; 
                     542     ; void STALL_EP0()
                     543     
----                 544             RSEG  ?PR?STALL_EP0?UPSD_USB
0000                 545     STALL_EP0:
                     546                             ; SOURCE LINE # 192
                     547     ; /******************************************************************************
                     548     ;  Function   : void STALL_EP0()
                     549     ;  Parameters : none
                     550     ;  Description: Stalls EP0.
                     551     ;      This endpoint is halted or a control pipe request is not supported.
                     552     ;      Endpoint can be unstalled by the next SETUP packet.
                     553     ;      STALL is returned by a function in response to an IN token
                     554     ;      or after the data phase of an OUT transaction.
                     555     ;      It indicates that a function is unable to transmit or receive data,
                     556     ;      or that a control pipe request is not supported.
                     557     ;  ******************************************************************************/
                     558     ;  {
                     559                             ; SOURCE LINE # 204
                     560     ;   #pragma asm
                     561     ;               anl    UCON0,#uTSEQ0+uRX0E+uSTALL0+uTX0E                   ;mask
0000 53EAF0          562               anl    UCON0,#0x80+0x10+0x40+0x20                   ;mask
                     563     ;               orl    UCON0,#uSTALL0                 ;clear TSEQ bit, STALL EP0
0003 43EA40          564               orl    UCON0,#0x40                 ;clear TSEQ bit, STALL EP0
                     565     ;   #pragma endasm
                     566     ;  }
                     567                             ; SOURCE LINE # 209
0006 22              568             RET     
                     569     ; END OF STALL_EP0
                     570     
                     571     ; 
                     572     ; 
                     573     ; 
                     574     ; 
                     575     ; 
                     576     ; 
                     577     ; static BOOL TransmitBufferEP0()
                     578     
----                 579             RSEG  ?PR?TransmitBufferEP0?UPSD_USB
0000                 580     TransmitBufferEP0:
                     581             USING   0
                     582                             ; SOURCE LINE # 216
                     583     ; /******************************************************************************
                     584     ;  Function   : static BOOL TransmitBufferEP0()
                     585     ;  Parameters : none
A51 MACRO ASSEMBLER  UPSD_USB                                                             04/30/2004 12:58:00 PAGE    10

                     586     ;  Description: Transmits next segment of descriptor buffer (pTransmitBufferEP0).
                     587     ;      This routine prepates 0..8 bytes  of data from TransmitBufferEP0
                     588     ;      at endpoint0. If no data is available in buffer, the endpoint is disabled.
                     589     ;      According to USB standard, zero length packet is trasmitted at then end.
                     590     ;  ******************************************************************************/
                     591     ;  {
                     592                             ; SOURCE LINE # 225
                     593     ;   data int i;
                     594     ;   data int nBytes;
                     595     ; 
                     596     ;   if (pTransmitBufferEP0)                    // If there is data going out...
                     597                             ; SOURCE LINE # 229
0000 900000   F      598             MOV     DPTR,#pTransmitBufferEP0
0003 E0              599             MOVX    A,@DPTR
0004 FB              600             MOV     R3,A
0005 A3              601             INC     DPTR
0006 E0              602             MOVX    A,@DPTR
0007 FA              603             MOV     R2,A
0008 A3              604             INC     DPTR
0009 E0              605             MOVX    A,@DPTR
000A F9              606             MOV     R1,A
000B EA              607             MOV     A,R2
000C 49              608             ORL     A,R1
000D 4B              609             ORL     A,R3
000E 7003            610             JNZ     $ + 5H
0010 020000   F      611             LJMP    ?C0004
                     612     ;    {
                     613                             ; SOURCE LINE # 230
                     614     ;     #pragma asm                              // send zero length packet
                     615     ;               xrl    UCON0,#uTSEQ0                            ;toggle TSEQ bit
0013 63EA80          616               xrl    UCON0,#0x80                            ;toggle TSEQ bit
                     617     ;               anl    UCON0,#uTSEQ0+uRX0E              ;mask
0016 53EA90          618               anl    UCON0,#0x80+0x10              ;mask
                     619     ;     #pragma endasm
                     620     ;     if (!bytesToTransmitEP0)                 // If data has already been sent...
                     621                             ; SOURCE LINE # 235
0019 900000   F      622             MOV     DPTR,#bytesToTransmitEP0
001C E0              623             MOVX    A,@DPTR
001D FE              624             MOV     R6,A
001E A3              625             INC     DPTR
001F E0              626             MOVX    A,@DPTR

⌨️ 快捷键说明

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