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

📄 isr.ls1

📁 Comlete files for fullfile the slave USB function!
💻 LS1
📖 第 1 页 / 共 5 页
字号:
006C 6007            406             JZ      ?C0003
                     407     ;                           bEPPflags.bits.ep1_rxdone = 1;
                     408                             ; SOURCE LINE # 103
006E AF00     F      409             MOV     R7,bEPPflags+01H
0070 EF              410             MOV     A,R7
0071 4404            411             ORL     A,#04H
0073 F500     F      412             MOV     bEPPflags+01H,A
                     413     ;               }
                     414                             ; SOURCE LINE # 104
                     415     ;               //if(i_st & D12_INT_ENDP2IN)
                     416     ;               //      main_txdone();
                     417     ;               //if(i_st & D12_INT_ENDP2OUT)
                     418     ;               //      main_rxdone();
                     419     ;       }
                     420                             ; SOURCE LINE # 109
0075                 421     ?C0003:
                     422     ; 
                     423     ;       bEPPflags.bits.in_isr = 0;
                     424                             ; SOURCE LINE # 111
0075 AF00     F      425             MOV     R7,bEPPflags
0077 EF              426             MOV     A,R7
0078 54DF            427             ANL     A,#0DFH
007A F500     F      428             MOV     bEPPflags,A
                     429     ; }
                     430                             ; SOURCE LINE # 112
007C 22              431             RET     
                     432     ; END OF fn_usb_isr
                     433     
                     434     ; 
                     435     ; void bus_reset(void)
                     436     
----                 437             RSEG  ?PR?bus_reset?ISR
0000                 438     bus_reset:
                     439                             ; SOURCE LINE # 114
                     440     ; {
                     441                             ; SOURCE LINE # 115
                     442     ; }
                     443                             ; SOURCE LINE # 116
0000 22              444             RET     
                     445     ; END OF bus_reset
                     446     
                     447     ; 
                     448     ; // Control OUT handler
                     449     ; void ProcessCtrlOutEP(void)
                     450     
----                 451             RSEG  ?PR?ProcessCtrlOutEP?ISR
0000                 452     ProcessCtrlOutEP:
                     453             USING   0
                     454                             ; SOURCE LINE # 119
A51 MACRO ASSEMBLER  ISR                                                                  03/23/2005 21:15:58 PAGE     8

                     455     ; {
                     456                             ; SOURCE LINE # 120
                     457     ;       unsigned char ep_last, i;
                     458     ; 
                     459     ;       /* Clear corresponding endpoint interrupt flag */
                     460     ;       ep_last = D12_ReadLastTransactionStatus(0); 
                     461                             ; SOURCE LINE # 124
0000 E4              462             CLR     A
0001 FF              463             MOV     R7,A
0002 120000   F      464             LCALL   _D12_ReadLastTransactionStatus
                     465     ;---- Variable 'ep_last?442' assigned to Register 'R7' ----
                     466     ; 
                     467     ;       /* check to see if the current received status is a SETUP package,
                     468     ;          if so, SETUP endpoints have to be 'ACK'ed. */
                     469     ;       if (ep_last & D12_SETUPPACKET) {        /* SETUP package ? */
                     470                             ; SOURCE LINE # 128
0005 EF              471             MOV     A,R7
0006 20E503          472             JB      ACC.5,$ + 6H
0009 020000   F      473             LJMP    ?C0014
                     474     ;               ControlData.wLength = 0;
                     475                             ; SOURCE LINE # 129
000C E4              476             CLR     A
000D F500     F      477             MOV     ControlData+08H,A
000F F500     F      478             MOV     ControlData+09H,A
                     479     ;               ControlData.wCount = 0;
                     480                             ; SOURCE LINE # 130
0011 F500     F      481             MOV     ControlData+0AH,A
0013 F500     F      482             MOV     ControlData+0BH,A
                     483     ; 
                     484     ;               /* Select control OUT endpoint, readbuffer, if validate device request,
                     485     ;                  save to deviceRequest clear buffer */
                     486     ;               if( D12_ReadEndpoint(0, (unsigned char *)(&(ControlData.DeviceRequest)),
                     487                             ; SOURCE LINE # 134
0015 FB              488             MOV     R3,A
0016 7A00     F      489             MOV     R2,#HIGH (ControlData)
0018 7900     F      490             MOV     R1,#LOW (ControlData)
001A 750008   F      491             MOV     ?_D12_ReadEndpoint?BYTE+04H,#08H
001D FF              492             MOV     R7,A
001E 120000   F      493             LCALL   _D12_ReadEndpoint
0021 EF              494             MOV     A,R7
0022 6408            495             XRL     A,#08H
0024 6003            496             JZ      ?C0015
                     497     ;                       sizeof(ControlData.DeviceRequest)) != sizeof(DEVICE_REQUEST) ) {
                     498                             ; SOURCE LINE # 135
                     499     ;                       
                     500     ;                       stall_ep0;      /* stall control endpoints */
                     501                             ; SOURCE LINE # 137
                     502     ;                       bEPPflags.bits.control_state = USB_IDLE;
                     503                             ; SOURCE LINE # 138
0026 020000   F      504             LJMP    ?C0035
                     505     ;                       
                     506     ;                       return;
                     507     ;               }
                     508                             ; SOURCE LINE # 141
0029                 509     ?C0015:
                     510     ;               
                     511     ;               /* swap data low byte and high byte, for USB data structure is different
                     512     ;                  from C51 data structure */
                     513     ;               ControlData.DeviceRequest.wValue  = SWAP(ControlData.DeviceRequest.wValue);
                     514                             ; SOURCE LINE # 145
0029 E500     F      515             MOV     A,ControlData+02H
002B FD              516             MOV     R5,A
002C E500     F      517             MOV     A,ControlData+03H
002E F500     F      518             MOV     ControlData+02H,A
0030 ED              519             MOV     A,R5
0031 F500     F      520             MOV     ControlData+03H,A
A51 MACRO ASSEMBLER  ISR                                                                  03/23/2005 21:15:58 PAGE     9

                     521     ;               ControlData.DeviceRequest.wIndex  = SWAP(ControlData.DeviceRequest.wIndex);
                     522                             ; SOURCE LINE # 146
0033 E500     F      523             MOV     A,ControlData+04H
0035 FD              524             MOV     R5,A
0036 E500     F      525             MOV     A,ControlData+05H
0038 F500     F      526             MOV     ControlData+04H,A
003A ED              527             MOV     A,R5
003B F500     F      528             MOV     ControlData+05H,A
                     529     ;               ControlData.DeviceRequest.wLength = SWAP(ControlData.DeviceRequest.wLength)
                             ;
                     530                             ; SOURCE LINE # 147
003D E500     F      531             MOV     A,ControlData+06H
003F FD              532             MOV     R5,A
0040 E500     F      533             MOV     A,ControlData+07H
0042 F500     F      534             MOV     ControlData+06H,A
0044 ED              535             MOV     A,R5
0045 F500     F      536             MOV     ControlData+07H,A
                     537     ; 
                     538     ;               /* Acknowledge SETUP command to both IN and OUT endpoints, to reanable vali
                             date
                     539     ;              and ClearBuffer commands. */
                     540     ;               D12_AcknowledgeEndpoint(0);
                     541                             ; SOURCE LINE # 151
0047 E4              542             CLR     A
0048 FF              543             MOV     R7,A
0049 120000   F      544             LCALL   _D12_AcknowledgeEndpoint
                     545     ;               D12_AcknowledgeEndpoint(1);
                     546                             ; SOURCE LINE # 152
004C 7F01            547             MOV     R7,#01H
004E 120000   F      548             LCALL   _D12_AcknowledgeEndpoint
                     549     ; 
                     550     ;               /* If ControlRead, wLength means the number of bytes to be sent to host;
                     551     ;                  if ControlWrite,wLength means the number of bytes to be got from host. *
                             /
                     552     ;               ControlData.wLength = ControlData.DeviceRequest.wLength;
                     553                             ; SOURCE LINE # 156
0051 850000   F      554             MOV     ControlData+08H,ControlData+06H
0054 850000   F      555             MOV     ControlData+09H,ControlData+07H
                     556     ;               ControlData.wCount = 0;
                     557                             ; SOURCE LINE # 157
0057 E4              558             CLR     A
0058 F500     F      559             MOV     ControlData+0AH,A
005A F500     F      560             MOV     ControlData+0BH,A
                     561     ; 
                     562     ;               /* Verify whether the contro transfer is Control READ/WRITE ? */
                     563     ;               if (ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_D
                             IRECTION_MASK) {
                     564                             ; SOURCE LINE # 160
005C E500     F      565             MOV     A,ControlData
005E 30E711          566             JNB     ACC.7,?C0017
                     567     ;                       /* Control Read (get command, device will need to send data packet 
                             back to host) */
                     568     ;                       bEPPflags.bits.setup_packet = 1;        // set event SETUP packet 
                     569                             ; SOURCE LINE # 162
0061 AF00     F      570             MOV     R7,bEPPflags
0063 EF              571             MOV     A,R7
0064 4408            572             ORL     A,#08H
0066 F500     F      573             MOV     bEPPflags,A
                     574     ;                       bEPPflags.bits.control_state = USB_TRANSMIT;            
                     575                             ; SOURCE LINE # 163
0068 AF00     F      576             MOV     R7,bEPPflags
006A EF              577             MOV     A,R7
006B 543F            578             ANL     A,#03FH
006D 4440            579             ORL     A,#040H
006F F500     F      580             MOV     bEPPflags,A
                     581     ;               }
A51 MACRO ASSEMBLER  ISR                                                                  03/23/2005 21:15:58 PAGE    10

                     582                             ; SOURCE LINE # 164
0071 22              583             RET     
0072                 584     ?C0017:
                     585     ;               else {  /* Control Write (set command) */
                     586                             ; SOURCE LINE # 165
                     587     ;                       if (ControlData.DeviceRequest.wLength == 0) {
                     588                             ; SOURCE LINE # 166
0072 E500     F      589             MOV     A,ControlData+07H
0074 4500     F      590             ORL     A,ControlData+06H
0076 7002            591             JNZ     ?C0019
                     592     ;                           /* Control Write without data */
                     593     ;                               bEPPflags.bits.setup_packet = 1;        // set event SETUP 
                             packet 
                     594                             ; SOURCE LINE # 168
                     595     ;                               bEPPflags.bits.control_state = USB_IDLE;        
                     596                             ; SOURCE LINE # 169
                     597     ;                       }
                     598                             ; SOURCE LINE # 170
0078 804B            599             SJMP    ?C0036
007A                 600     ?C0019:
                     601     ;                       else {  /*Control Write with data */
                     602                             ; SOURCE LINE # 171
                     603     ;                               if(ControlData.DeviceRequest.wLength > MAX_CONTROLDATA_SIZE
                             ) {
                     604                             ; SOURCE LINE # 172
007A D3              605             SETB    C

⌨️ 快捷键说明

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