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

📄 isr.ls1

📁 Comlete files for fullfile the slave USB function!
💻 LS1
📖 第 1 页 / 共 5 页
字号:
007B E500     F      606             MOV     A,ControlData+07H
007D 9408            607             SUBB    A,#08H
007F E500     F      608             MOV     A,ControlData+06H
0081 9400            609             SUBB    A,#00H
0083 AF00     F      610             MOV     R7,bEPPflags
0085 EF              611             MOV     A,R7
0086 543F            612             ANL     A,#03FH
0088 4003            613             JC      ?C0021
                     614     ;                                       /* data length not acceptable */
                     615     ;                                       bEPPflags.bits.control_state = USB_IDLE;
                     616                             ; SOURCE LINE # 174
008A F500     F      617             MOV     bEPPflags,A
                     618     ;                               stall_ep0;      /* stall control endpoints */
                     619                             ; SOURCE LINE # 175
                     620     ;                               }
                     621                             ; SOURCE LINE # 176
008C 22              622             RET     
008D                 623     ?C0021:
                     624     ;                               else {
                     625                             ; SOURCE LINE # 177
                     626     ;                                       /* Device need to be received number of wLength byt
                             es of data from host */
                     627     ;                                       bEPPflags.bits.control_state = USB_RECEIVE;     /* 
                             set command with OUT token */
                     628                             ; SOURCE LINE # 179
008D 4480            629             ORL     A,#080H
008F F500     F      630             MOV     bEPPflags,A
                     631     ;                               }
                     632                             ; SOURCE LINE # 180
                     633     ;                       } // set command with data
                     634                             ; SOURCE LINE # 181
                     635     ;               } // else set command
                     636                             ; SOURCE LINE # 182
                     637     ;       } // if setup packet
                     638                             ; SOURCE LINE # 183
0091 22              639             RET     
0092                 640     ?C0014:
                     641     ; 
                     642     ;       else if (bEPPflags.bits.control_state == USB_RECEIVE) {
                     643                             ; SOURCE LINE # 185
A51 MACRO ASSEMBLER  ISR                                                                  03/23/2005 21:15:58 PAGE    11

0092 AF00     F      644             MOV     R7,bEPPflags
0094 EF              645             MOV     A,R7
0095 C4              646             SWAP    A
0096 13              647             RRC     A
0097 13              648             RRC     A
0098 5403            649             ANL     A,#03H
009A 6402            650             XRL     A,#02H
009C 7030            651             JNZ     ?C0024
                     652     ;               i =     D12_ReadEndpoint(0, ControlData.dataBuffer + ControlData.wCount,
                     653                             ; SOURCE LINE # 186
009E 7400     F      654             MOV     A,#LOW (ControlData+0FH)
00A0 2500     F      655             ADD     A,ControlData+0BH
00A2 F9              656             MOV     R1,A
00A3 E4              657             CLR     A
00A4 FA              658             MOV     R2,A
00A5 FB              659             MOV     R3,A
00A6 750010   F      660             MOV     ?_D12_ReadEndpoint?BYTE+04H,#010H
00A9 FF              661             MOV     R7,A
00AA 120000   F      662             LCALL   _D12_ReadEndpoint
                     663     ;---- Variable 'i?443' assigned to Register 'R7' ----
                     664     ;                       EP0_PACKET_SIZE);
                     665     ; 
                     666     ;               ControlData.wCount += i;
                     667                             ; SOURCE LINE # 189
00AD EF              668             MOV     A,R7
00AE 2500     F      669             ADD     A,ControlData+0BH
00B0 F500     F      670             MOV     ControlData+0BH,A
00B2 E4              671             CLR     A
00B3 3500     F      672             ADDC    A,ControlData+0AH
00B5 F500     F      673             MOV     ControlData+0AH,A
                     674     ;               if( i != EP0_PACKET_SIZE || ControlData.wCount >= ControlData.wLength) {
                     675                             ; SOURCE LINE # 190
00B7 BF100B          676             CJNE    R7,#010H,?C0026
00BA C3              677             CLR     C
00BB E500     F      678             MOV     A,ControlData+0BH
00BD 9500     F      679             SUBB    A,ControlData+09H
00BF E500     F      680             MOV     A,ControlData+0AH
00C1 9500     F      681             SUBB    A,ControlData+08H
00C3 4010            682             JC      ?C0016
00C5                 683     ?C0026:
                     684     ;                       bEPPflags.bits.setup_packet = 1;
                     685                             ; SOURCE LINE # 191
00C5                 686     ?C0036:
00C5 AF00     F      687             MOV     R7,bEPPflags
00C7 EF              688             MOV     A,R7
00C8 4408            689             ORL     A,#08H
00CA F500     F      690             MOV     bEPPflags,A
                     691     ;                       bEPPflags.bits.control_state = USB_IDLE;
                     692                             ; SOURCE LINE # 192
                     693     ;               }
                     694                             ; SOURCE LINE # 193
                     695     ;       }
                     696                             ; SOURCE LINE # 194
00CC 8000            697             SJMP    ?C0037
00CE                 698     ?C0024:
                     699     ; 
                     700     ;       else {
                     701                             ; SOURCE LINE # 196
                     702     ;               bEPPflags.bits.control_state = USB_IDLE;
                     703                             ; SOURCE LINE # 197
00CE                 704     ?C0035:
00CE                 705     ?C0037:
00CE AF00     F      706             MOV     R7,bEPPflags
00D0 EF              707             MOV     A,R7
00D1 543F            708             ANL     A,#03FH
00D3 F500     F      709             MOV     bEPPflags,A
A51 MACRO ASSEMBLER  ISR                                                                  03/23/2005 21:15:58 PAGE    12

                     710     ;       }
                     711                             ; SOURCE LINE # 198
                     712     ; }
                     713                             ; SOURCE LINE # 199
00D5                 714     ?C0016:
00D5 22              715             RET     
                     716     ; END OF ProcessCtrlOutEP
                     717     
                     718     ; 
                     719     ; // Control IN handler
                     720     ; void ProcessCtrlInEP(void)
                     721     
----                 722             RSEG  ?PR?ProcessCtrlInEP?ISR
0000                 723     ProcessCtrlInEP:
                     724             USING   0
                     725                             ; SOURCE LINE # 202
                     726     ; {
                     727                             ; SOURCE LINE # 203
                     728     ;       short i = ControlData.wLength - ControlData.wCount;
                     729                             ; SOURCE LINE # 204
0000 C3              730             CLR     C
0001 E500     F      731             MOV     A,ControlData+09H
0003 9500     F      732             SUBB    A,ControlData+0BH
0005 F500     F      733             MOV     i?544+01H,A
0007 E500     F      734             MOV     A,ControlData+08H
0009 9500     F      735             SUBB    A,ControlData+0AH
000B F500     F      736             MOV     i?544,A
                     737     ; 
                     738     ;       D12_ReadLastTransactionStatus(1); /* Clear interrupt flag */
                     739                             ; SOURCE LINE # 206
000D 7F01            740             MOV     R7,#01H
000F 120000   F      741             LCALL   _D12_ReadLastTransactionStatus
                     742     ; 
                     743     ;       /* if not in transmit status, return */
                     744     ;       if (bEPPflags.bits.control_state != USB_TRANSMIT) 
                     745                             ; SOURCE LINE # 209
0012 AF00     F      746             MOV     R7,bEPPflags
0014 EF              747             MOV     A,R7
0015 C4              748             SWAP    A
0016 13              749             RRC     A
0017 13              750             RRC     A
0018 5403            751             ANL     A,#03H
001A 6401            752             XRL     A,#01H
001C 7075            753             JNZ     ?C0029
001E                 754     ?C0028:
                     755     ;               return;
                     756     ; 
                     757     ;       /* number of rest bytes to be sent is more then EP0_PACKET_SIZE bytes, send EP0_PAC
                             KET_SIZE bytes */
                     758     ;       if( i >= EP0_PACKET_SIZE) { 
                     759                             ; SOURCE LINE # 213
001E C3              760             CLR     C
001F E500     F      761             MOV     A,i?544+01H
0021 9410            762             SUBB    A,#010H
0023 E500     F      763             MOV     A,i?544
0025 6480            764             XRL     A,#080H
0027 9480            765             SUBB    A,#080H
0029 4029            766             JC      ?C0030
                     767     ;               D12_WriteEndpoint(1, ControlData.pData + ControlData.wCount, EP0_PACKET_SIZ
                             E);
                     768                             ; SOURCE LINE # 214
002B AB00     F      769             MOV     R3,ControlData+0CH
002D E500     F      770             MOV     A,ControlData+0EH
002F 2500     F      771             ADD     A,ControlData+0BH
0031 F9              772             MOV     R1,A
0032 E500     F      773             MOV     A,ControlData+0DH
A51 MACRO ASSEMBLER  ISR                                                                  03/23/2005 21:15:58 PAGE    13

0034 3500     F      774             ADDC    A,ControlData+0AH
0036 FA              775             MOV     R2,A
0037 750010   F      776             MOV     ?_D12_WriteEndpoint?BYTE+04H,#010H
003A 7F01            777             MOV     R7,#01H
003C 120000   F      778             LCALL   _D12_WriteEndpoint
                     779     ;               ControlData.wCount += EP0_PACKET_SIZE;
                     780                             ; SOURCE LINE # 215
003F 7410            781             MOV     A,#010H
0041 2500     F      782             ADD     A,ControlData+0BH
0043 F500     F      783             MOV     ControlData+0BH,A
0045 E4              784             CLR     A
0046 3500     F      785             ADDC    A,ControlData+0AH
0048 F500     F      786             MOV     ControlData+0AH,A
                     787     ; 
                     788     ;               bEPPflags.bits.control_state = USB_TRANSMIT;
                     789                             ; SOURCE LINE # 217
004A AF00     F      790             MOV     R7,bEPPflags
004C EF              791             MOV     A,R7
004D 543F            792             ANL     A,#03FH
004F 4440            793             ORL     A,#040H
0051 F500     F      794             MOV     bEPPflags,A
                     795     ;       }
                     796                             ; SOURCE LINE # 218
0053 22              797             RET     
0054                 798     ?C0030:
                     799     ;       /* send rest of bytes (number of bytes is less than EP0_PACKET_SIZE bytes) */
                     800     ;       else if( i != 0) {
                     801                             ; SOURCE LINE # 220
0054 E500     F      802             MOV     A,i?544+01H
0056 4500     F      803             ORL     A,i?544
0058 6022            804             JZ      ?C0032
                     805     ;               D12_WriteEndpoint(1, ControlData.pData + ControlData.wCount, i);
                     806                             ; SOURCE LINE # 221
005A AB00     F      807             MOV     R3,ControlData+0CH
005C E500     F      808             MOV     A,ControlData+0EH

⌨️ 快捷键说明

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