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

📄 upsd_usb.ls1

📁 ST公司的upsd34XX评估板固定源程序
💻 LS1
📖 第 1 页 / 共 5 页
字号:
0020 FF              627             MOV     R7,A
0021 4E              628             ORL     A,R6
0022 700F            629             JNZ     ?C0005
                     630     ;      {
                     631                             ; SOURCE LINE # 236
                     632     ;       #pragma asm                            // send zero length packet
                     633     ;               orl    UCON0,#uTX0E                             ;enable transmit
0024 43EA20          634               orl    UCON0,#0x20                             ;enable transmit
                     635     ;       #pragma endasm
                     636     ;       pTransmitBufferEP0 = NULL;             // If data has already been sent...
                     637                             ; SOURCE LINE # 240
0027 900000   F      638             MOV     DPTR,#pTransmitBufferEP0
002A E4              639             CLR     A
002B F0              640             MOVX    @DPTR,A
002C A3              641             INC     DPTR
002D F0              642             MOVX    @DPTR,A
002E A3              643             INC     DPTR
002F F0              644             MOVX    @DPTR,A
                     645     ;      }
                     646                             ; SOURCE LINE # 241
0030 020000   F      647             LJMP    ?C0006
0033                 648     ?C0005:
                     649     ;     else
                     650     ;      {
                     651                             ; SOURCE LINE # 243
A51 MACRO ASSEMBLER  UPSD_USB                                                             10/15/2004 20:55:31 PAGE    11

                     652     ;       nBytes = bytesToTransmitEP0;           // Transmit next chunk of data
                     653                             ; SOURCE LINE # 244
0033 8E00     F      654             MOV     nBytes?341,R6
0035 8F00     F      655             MOV     nBytes?341+01H,R7
                     656     ;       if (nBytes > 8)
                     657                             ; SOURCE LINE # 245
0037 D3              658             SETB    C
0038 E500     F      659             MOV     A,nBytes?341+01H
003A 9408            660             SUBB    A,#08H
003C E500     F      661             MOV     A,nBytes?341
003E 6480            662             XRL     A,#080H
0040 9480            663             SUBB    A,#080H
0042 4006            664             JC      ?C0007
                     665     ;        {
                     666                             ; SOURCE LINE # 246
                     667     ;         nBytes = 8;
                     668                             ; SOURCE LINE # 247
0044 750000   F      669             MOV     nBytes?341,#00H
0047 750008   F      670             MOV     nBytes?341+01H,#08H
                     671     ;        }
                     672                             ; SOURCE LINE # 248
004A                 673     ?C0007:
                     674     ;       UCON0 |= nBytes;                       // set FIFO size
                     675                             ; SOURCE LINE # 249
004A E500     F      676             MOV     A,nBytes?341+01H
004C 42EA            677             ORL     UCON0,A
                     678     ; 
                     679     ;       for (i = 0; i < nBytes; i++)           // Load data into FIFO
                     680                             ; SOURCE LINE # 251
004E E4              681             CLR     A
004F F500     F      682             MOV     i?340,A
0051 F500     F      683             MOV     i?340+01H,A
0053                 684     ?C0008:
0053 C3              685             CLR     C
0054 E500     F      686             MOV     A,i?340+01H
0056 9500     F      687             SUBB    A,nBytes?341+01H
0058 E500     F      688             MOV     A,nBytes?341
005A 6480            689             XRL     A,#080H
005C F8              690             MOV     R0,A
005D E500     F      691             MOV     A,i?340
005F 6480            692             XRL     A,#080H
0061 98              693             SUBB    A,R0
0062 501F            694             JNC     ?C0009
                     695     ;        {
                     696                             ; SOURCE LINE # 252
                     697     ;         UDT0 = *pTransmitBufferEP0++;
                     698                             ; SOURCE LINE # 253
0064 900000   F      699             MOV     DPTR,#pTransmitBufferEP0
0067 E0              700             MOVX    A,@DPTR
0068 FB              701             MOV     R3,A
0069 A3              702             INC     DPTR
006A E4              703             CLR     A
006B 75F001          704             MOV     B,#01H
006E 120000   F      705             LCALL   ?C?ILDIX
0071 A9F0            706             MOV     R1,B
0073 FA              707             MOV     R2,A
0074 120000   F      708             LCALL   ?C?CLDPTR
0077 F5E7            709             MOV     UDT0,A
                     710     ;        }
                     711                             ; SOURCE LINE # 254
0079 0500     F      712             INC     i?340+01H
007B E500     F      713             MOV     A,i?340+01H
007D 70D4            714             JNZ     ?C0008
007F 0500     F      715             INC     i?340
0081                 716     ?C0107:
0081 80D0            717             SJMP    ?C0008
A51 MACRO ASSEMBLER  UPSD_USB                                                             10/15/2004 20:55:31 PAGE    12

0083                 718     ?C0009:
                     719     ; 
                     720     ;       if ((bytesToTransmitEP0 -= nBytes) == 0)
                     721                             ; SOURCE LINE # 256
0083 C3              722             CLR     C
0084 900000   F      723             MOV     DPTR,#bytesToTransmitEP0+01H
0087 E0              724             MOVX    A,@DPTR
0088 9500     F      725             SUBB    A,nBytes?341+01H
008A FF              726             MOV     R7,A
008B 900000   F      727             MOV     DPTR,#bytesToTransmitEP0
008E E0              728             MOVX    A,@DPTR
008F 9500     F      729             SUBB    A,nBytes?341
0091 FE              730             MOV     R6,A
0092 F0              731             MOVX    @DPTR,A
0093 A3              732             INC     DPTR
0094 EF              733             MOV     A,R7
0095 F0              734             MOVX    @DPTR,A
0096 4E              735             ORL     A,R6
0097 701C            736             JNZ     ?C0011
                     737     ;        {
                     738                             ; SOURCE LINE # 257
                     739     ;                   // For short transfers, we need to send a zero length terminator
                     740     ;         if (!shortTransfer || (nBytes < 8))
                     741                             ; SOURCE LINE # 259
0099 900000   F      742             MOV     DPTR,#shortTransfer
009C E0              743             MOVX    A,@DPTR
009D 600D            744             JZ      ?C0013
009F C3              745             CLR     C
00A0 E500     F      746             MOV     A,nBytes?341+01H
00A2 9408            747             SUBB    A,#08H
00A4 E500     F      748             MOV     A,nBytes?341
00A6 6480            749             XRL     A,#080H
00A8 9480            750             SUBB    A,#080H
00AA 5009            751             JNC     ?C0011
00AC                 752     ?C0013:
                     753     ;          {
                     754                             ; SOURCE LINE # 260
                     755     ;           pTransmitBufferEP0 = NULL;         // it will be sent the next cycle
                     756                             ; SOURCE LINE # 261
00AC 900000   F      757             MOV     DPTR,#pTransmitBufferEP0
00AF E4              758             CLR     A
00B0 F0              759             MOVX    @DPTR,A
00B1 A3              760             INC     DPTR
00B2 F0              761             MOVX    @DPTR,A
00B3 A3              762             INC     DPTR
00B4 F0              763             MOVX    @DPTR,A
                     764     ;          }
                     765                             ; SOURCE LINE # 262
                     766     ;        }
                     767                             ; SOURCE LINE # 263
00B5                 768     ?C0011:
                     769     ;       #pragma asm
                     770     ;               orl    UCON0,#uTX0E                            ; enable transmit
00B5 43EA20          771               orl    UCON0,#0x20                            ; enable transmit
                     772     ;       #pragma endasm
                     773     ;      }
                     774                             ; SOURCE LINE # 267
00B8                 775     ?C0006:
                     776     ;     return TRUE;
                     777                             ; SOURCE LINE # 268
00B8 7F01            778             MOV     R7,#01H
00BA 22              779             RET     
                     780     ;    }
                     781                             ; SOURCE LINE # 269
00BB                 782     ?C0004:
                     783     ; 
A51 MACRO ASSEMBLER  UPSD_USB                                                             10/15/2004 20:55:31 PAGE    13

                     784     ;   #pragma asm                            // No data going out, so disable endpoint
                     785     ;               anl    UCON0,#uRX0E                                        ;mask
00BB 53EA10          786               anl    UCON0,#0x10                                        ;mask
                     787     ;               orl    UCON0,#uTSEQ0                               ;set TSEQ bit
00BE 43EA80          788               orl    UCON0,#0x80                               ;set TSEQ bit
                     789     ;   #pragma endasm
                     790     ; 
                     791     ;   return FALSE;
                     792                             ; SOURCE LINE # 276
00C1 7F00            793             MOV     R7,#00H
                     794     ;  }
                     795                             ; SOURCE LINE # 277
00C3                 796     ?C0014:
00C3 22              797             RET     
                     798     ; END OF TransmitBufferEP0
                     799     
                     800     ; 
                     801     ; 
                     802     ; 
                     803     ; 
                     804     ; 
                     805     ; 
                     806     ; 
                     807     ; 
                     808     ; void TransmitDataEP0(uchar* pData, int nBytes)
                     809     
----                 810             RSEG  ?PR?_TransmitDataEP0?UPSD_USB
0000                 811     _TransmitDataEP0:
                     812             USING   0
                     813                             ; SOURCE LINE # 286
0000 900000   F      814             MOV     DPTR,#pData?442
0003 EB              815             MOV     A,R3
0004 F0              816             MOVX    @DPTR,A
0005 A3              817             INC     DPTR
0006 EA              818             MOV     A,R2
0007 F0              819             MOVX    @DPTR,A
0008 A3              820             INC     DPTR
0009 E9              821             MOV     A,R1
000A F0              822             MOVX    @DPTR,A
                     823     ;---- Variable 'nBytes?443' assigned to Register 'R4/R5' ----
                     824     ; /******************************************************************************
                     825     ;  Function   : void TransmitDataEP0()
                     826     ;  Parameters : (uchar* pData, int nBytes)
                     827     ;  Description: Load and arm EP0 to transmit data.
                     828     ;      This routine prepates 0..8 bytes of data at endpoint0 to be trasmitted.
                     829     ;      Caller must then clear FIFO status flag (uTXD0F) to arm the endpoint.
                     830     ;  ******************************************************************************/
                     831     ;  {
                     832                             ; SOURCE LINE # 294
                     833     ;   data unsigned char xBytes;
                     834     ; 
                     835     ;   if (nBytes > EP0_SIZE) xBytes = EP0_SIZE; else xBytes = nBytes;
                     836                             ; SOURCE LINE # 297
000B D3              837             SETB    C
000C ED              838             MOV     A,R5

⌨️ 快捷键说明

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