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

📄 hiduser.lst

📁 基于AT91SAM7A3的usb鼠标源代码。在keil for arm 3.1上运行通过。希望对需要的同行有所帮助。
💻 LST
字号:
ARM COMPILER V2.53,  hiduser                                                               27/04/07  16:47:01  PAGE 1   


ARM COMPILER V2.53, COMPILATION OF MODULE hiduser
OBJECT MODULE PLACED IN .\Obj\hiduser.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe hiduser.c THUMB DEBUG PRINT(.\LST\HIDUSER.LST) TABS(4) OBJECT(.\Obj\hiduser.
                    -obj) 

stmt  level    source

    1          /*----------------------------------------------------------------------------
    2           *      U S B  -  K e r n e l
    3           *----------------------------------------------------------------------------
    4           *      Name:    HIDUSER.C
    5           *      Purpose: HID Custom User Module
    6           *      Version: V1.10
    7           *----------------------------------------------------------------------------
    8           *      This file is part of the uVision/ARM development tools.
    9           *      Copyright (c) 2005-2006 Keil Software. All rights reserved.
   10           *      This software may only be used under the terms of a valid, current,
   11           *      end user licence from KEIL for a compatible version of KEIL software
   12           *      development tools. Nothing else gives you the right to use it.
   13           *---------------------------------------------------------------------------*/
   14          
   15          #include "type.h"
   16          
   17          #include "usb.h"
   18          #include "hid.h"
   19          #include "usbcfg.h"
   20          #include "usbcore.h"
   21          #include "hiduser.h"
   22          
   23          #include "mouse.h"
   24          
   25          
   26          BYTE HID_Protocol;
   27          BYTE HID_IdleTime[HID_REPORT_NUM];
   28          
   29          
   30          /*
   31           *  HID Get Report Request Callback
   32           *   Called automatically on HID Get Report Request
   33           *    Parameters:      None (global SetupPacket and EP0Buf)
   34           *    Return Value:    TRUE - Success, FALSE - Error
   35           */
   36          
   37          BOOL HID_GetReport (void) {
   38   1        int  i;
   39   1      
   40   1        /* ReportID = SetupPacket.wValue.WB.L; */
   41   1        switch (SetupPacket.wValue.WB.H) {
   42   2          case HID_REPORT_INPUT:
   43   2            GetMouseInReport();
   44   2            for (i = 0; i < sizeof(MouseInReport); i++) {
   45   3              EP0Buf[i] = MouseInReport[i];
   46   3            }
   47   2            break;
   48   2          case HID_REPORT_OUTPUT:
   49   2            return (FALSE);          /* Not Supported */
   50   2          case HID_REPORT_FEATURE:
   51   2            /* EP0Buf[] = ...; */
   52   2            /* break; */
   53   2            return (FALSE);          /* Not Supported */
   54   2        }
   55   1        return (TRUE);
   56   1      }
   57          
   58          
ARM COMPILER V2.53,  hiduser                                                               27/04/07  16:47:01  PAGE 2   

   59          /*
   60           *  HID Set Report Request Callback
   61           *   Called automatically on HID Set Report Request
   62           *    Parameters:      None (global SetupPacket and EP0Buf)
   63           *    Return Value:    TRUE - Success, FALSE - Error
   64           */
   65          
   66          BOOL HID_SetReport (void) {
   67   1      
   68   1        /* ReportID = SetupPacket.wValue.WB.L; */
   69   1        switch (SetupPacket.wValue.WB.H) {
   70   2          case HID_REPORT_INPUT:
   71   2            return (FALSE);          /* Not Supported */
   72   2          case HID_REPORT_OUTPUT:
   73   2            /* ... = EP0Buf[]; */
   74   2            /* break; */
   75   2            return (FALSE);          /* Not Supported */
   76   2          case HID_REPORT_FEATURE:
   77   2            return (FALSE);          /* Not Supported */
   78   2        }
   79   1        return (TRUE);
   80   1      }
   81          
   82          
   83          /*
   84           *  HID Get Idle Request Callback
   85           *   Called automatically on HID Get Idle Request
   86           *    Parameters:      None (global SetupPacket and EP0Buf)
   87           *    Return Value:    TRUE - Success, FALSE - Error
   88           */
   89          
   90          BOOL HID_GetIdle (void) {
   91   1      
   92   1        EP0Buf[0] = HID_IdleTime[SetupPacket.wValue.WB.L];
   93   1        return (TRUE);
   94   1      }
   95          
   96          
   97          /*
   98           *  HID Set Idle Request Callback
   99           *   Called automatically on HID Set Idle Request
  100           *    Parameters:      None (global SetupPacket)
  101           *    Return Value:    TRUE - Success, FALSE - Error
  102           */
  103          
  104          BOOL HID_SetIdle (void) {
  105   1      
  106   1        HID_IdleTime[SetupPacket.wValue.WB.L] = SetupPacket.wValue.WB.H;
  107   1      
  108   1        /* Idle Handling if needed */
  109   1        /* ... */
  110   1      
  111   1        return (TRUE);
  112   1      }
  113          
  114          
  115          /*
  116           *  HID Get Protocol Request Callback
  117           *   Called automatically on HID Get Protocol Request
  118           *    Parameters:      None (global SetupPacket)
  119           *    Return Value:    TRUE - Success, FALSE - Error
  120           */
  121          
  122          BOOL HID_GetProtocol (void) {
  123   1      
  124   1        EP0Buf[0] = HID_Protocol;
ARM COMPILER V2.53,  hiduser                                                               27/04/07  16:47:01  PAGE 3   

  125   1        return (TRUE);
  126   1      }
  127          
  128          
  129          /*
  130           *  HID Set Protocol Request Callback
  131           *   Called automatically on HID Set Protocol Request
  132           *    Parameters:      None (global SetupPacket)
  133           *    Return Value:    TRUE - Success, FALSE - Error
  134           */
  135          
  136          BOOL HID_SetProtocol (void) {
  137   1      
  138   1        HID_Protocol = SetupPacket.wValue.WB.L;
  139   1      
  140   1        /* Protocol Handling if needed */
  141   1        /* ... */
  142   1      
  143   1        return (TRUE);
  144   1      }
ARM COMPILER V2.53,  hiduser                                                               27/04/07  16:47:01  PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN DATA (EP0Buf)
 EXTERN DATA (SetupPacket)
 EXTERN DATA (MouseInReport)
 EXTERN CODE16 (GetMouseInReport?T)



*** PUBLICS:
 PUBLIC         HID_GetReport?T
 PUBLIC         HID_SetReport?T
 PUBLIC         HID_GetIdle?T
 PUBLIC         HID_SetIdle?T
 PUBLIC         HID_GetProtocol?T
 PUBLIC         HID_SetProtocol?T
 PUBLIC         HID_Protocol
 PUBLIC         HID_IdleTime



*** DATA SEGMENT '?DT0?hiduser':
 00000000          HID_Protocol:
 00000000            DS          1
 00000001          HID_IdleTime:
 00000001            DS          1



*** CODE SEGMENT '?PR?HID_GetReport?T?hiduser':
   37: BOOL HID_GetReport (void) {
 00000000  B500      PUSH        {LR}
 00000002            ; SCOPE-START
   41:   switch (SetupPacket.wValue.WB.H) {
 00000002  4800      LDR         R0,=SetupPacket + 0x3 ; SetupPacket+3
 00000004  7800      LDRB        R0,[R0,#0x0] ; SetupPacket+3
 00000006  2802      CMP         R0,#0x2
 00000008  D011      BEQ         L_3  ; T=0x0000002E
 0000000A  2803      CMP         R0,#0x3
 0000000C  D011      BEQ         L_4  ; T=0x00000032
 0000000E  2801      CMP         R0,#0x1
 00000010  D111      BNE         L_1  ; T=0x00000036
   42:     case HID_REPORT_INPUT:
 00000012          L_2:
   43:       GetMouseInReport();
 00000012  F7FF      BL          GetMouseInReport?T  ; T=0x0001  (1)
 00000014  FFF5      BL          GetMouseInReport?T  ; T=0x0001  (2)
   44:       for (i = 0; i < sizeof(MouseInReport); i++) {
 00000016  2000      MOV         R0,#0x0
 00000018  ---- Variable 'i' assigned to Register 'R0' ----
 00000018          L_8:
   45:         EP0Buf[i] = MouseInReport[i];
 00000018  1C02      MOV         R2,R0 ; i
 0000001A  4800      LDR         R1,=MouseInReport ; MouseInReport
 0000001C  5C89      LDRB        R1,[R1,R2]
 0000001E  1C03      MOV         R3,R0 ; i
 00000020  4800      LDR         R2,=EP0Buf ; EP0Buf
 00000022  54D1      STRB        R1,[R2,R3]
   46:       }
 00000024  3001      ADD         R0,#0x1
 00000026  1C01      MOV         R1,R0 ; i
 00000028  2904      CMP         R1,#0x4 ; i
 0000002A  DBF5      BLT         L_8  ; T=0x00000018
   47:       break;
 0000002C  E003      B           L_1  ; T=0x00000036
   48:     case HID_REPORT_OUTPUT:
 0000002E          L_3:
   49:       return (FALSE);          /* Not Supported */
 0000002E  2000      MOV         R0,#0x0
 00000030  E002      B           L_10  ; T=0x00000038
ARM COMPILER V2.53,  hiduser                                                               27/04/07  16:47:01  PAGE 5   

   50:     case HID_REPORT_FEATURE:
 00000032          L_4:
   53:       return (FALSE);          /* Not Supported */
 00000032  2000      MOV         R0,#0x0
 00000034  E000      B           L_10  ; T=0x00000038
   54:   }
 00000036          L_1:
   55:   return (TRUE);
 00000036  2001      MOV         R0,#0x1
 00000038            ; SCOPE-END
   56: }
 00000038          L_10:
 00000038  BC08      POP         {R3}
 0000003A  4718      BX          R3
 0000003C          ENDP ; 'HID_GetReport?T'


*** CODE SEGMENT '?PR?HID_SetReport?T?hiduser':
   69:   switch (SetupPacket.wValue.WB.H) {
 00000000  4800      LDR         R0,=SetupPacket + 0x3 ; SetupPacket+3
 00000002  7800      LDRB        R0,[R0,#0x0] ; SetupPacket+3
 00000004  2802      CMP         R0,#0x2
 00000006  D005      BEQ         L_13  ; T=0x00000014
 00000008  2803      CMP         R0,#0x3
 0000000A  D005      BEQ         L_14  ; T=0x00000018
 0000000C  2801      CMP         R0,#0x1
 0000000E  D105      BNE         L_11  ; T=0x0000001C
   70:     case HID_REPORT_INPUT:
 00000010          L_12:
   71:       return (FALSE);          /* Not Supported */
 00000010  2000      MOV         R0,#0x0
 00000012  E004      B           L_15  ; T=0x0000001E
   72:     case HID_REPORT_OUTPUT:
 00000014          L_13:
   75:       return (FALSE);          /* Not Supported */
 00000014  2000      MOV         R0,#0x0
 00000016  E002      B           L_15  ; T=0x0000001E
   76:     case HID_REPORT_FEATURE:
 00000018          L_14:
   77:       return (FALSE);          /* Not Supported */
 00000018  2000      MOV         R0,#0x0
 0000001A  E000      B           L_15  ; T=0x0000001E
   78:   }
 0000001C          L_11:
   79:   return (TRUE);
 0000001C  2001      MOV         R0,#0x1
   80: }
 0000001E          L_15:
 0000001E  4770      BX          R14
 00000020          ENDP ; 'HID_SetReport?T'


*** CODE SEGMENT '?PR?HID_GetIdle?T?hiduser':
   92:   EP0Buf[0] = HID_IdleTime[SetupPacket.wValue.WB.L];
 00000000  4800      LDR         R0,=SetupPacket + 0x2 ; SetupPacket+2
 00000002  7800      LDRB        R0,[R0,#0x0] ; SetupPacket+2
 00000004  1C01      MOV         R1,R0
 00000006  4800      LDR         R0,=HID_IdleTime ; HID_IdleTime
 00000008  1840      ADD         R0,R1 ; HID_IdleTime
 0000000A  7801      LDRB        R1,[R0,#0x0]
 0000000C  4800      LDR         R0,=EP0Buf ; EP0Buf
 0000000E  7001      STRB        R1,[R0,#0x0] ; EP0Buf
   93:   return (TRUE);
 00000010  2001      MOV         R0,#0x1
   94: }
 00000012  4770      BX          R14
 00000014          ENDP ; 'HID_GetIdle?T'


*** CODE SEGMENT '?PR?HID_SetIdle?T?hiduser':
  106:   HID_IdleTime[SetupPacket.wValue.WB.L] = SetupPacket.wValue.WB.H;
 00000000  4800      LDR         R0,=SetupPacket + 0x3 ; SetupPacket+3
ARM COMPILER V2.53,  hiduser                                                               27/04/07  16:47:01  PAGE 6   

 00000002  7801      LDRB        R1,[R0,#0x0] ; SetupPacket+3
 00000004  4800      LDR         R0,=SetupPacket + 0x2 ; SetupPacket+2
 00000006  7800      LDRB        R0,[R0,#0x0] ; SetupPacket+2
 00000008  1C02      MOV         R2,R0
 0000000A  4800      LDR         R0,=HID_IdleTime ; HID_IdleTime
 0000000C  1880      ADD         R0,R2 ; HID_IdleTime
 0000000E  7001      STRB        R1,[R0,#0x0]
  111:   return (TRUE);
 00000010  2001      MOV         R0,#0x1
  112: }
 00000012  4770      BX          R14
 00000014          ENDP ; 'HID_SetIdle?T'


*** CODE SEGMENT '?PR?HID_GetProtocol?T?hiduser':
  124:   EP0Buf[0] = HID_Protocol;
 00000000  4800      LDR         R0,=HID_Protocol ; HID_Protocol
 00000002  7801      LDRB        R1,[R0,#0x0] ; HID_Protocol
 00000004  4800      LDR         R0,=EP0Buf ; EP0Buf
 00000006  7001      STRB        R1,[R0,#0x0] ; EP0Buf
  125:   return (TRUE);
 00000008  2001      MOV         R0,#0x1
  126: }
 0000000A  4770      BX          R14
 0000000C          ENDP ; 'HID_GetProtocol?T'


*** CODE SEGMENT '?PR?HID_SetProtocol?T?hiduser':
  138:   HID_Protocol = SetupPacket.wValue.WB.L;
 00000000  4800      LDR         R0,=SetupPacket + 0x2 ; SetupPacket+2
 00000002  7801      LDRB        R1,[R0,#0x0] ; SetupPacket+2
 00000004  4800      LDR         R0,=HID_Protocol ; HID_Protocol
 00000006  7001      STRB        R1,[R0,#0x0] ; HID_Protocol
  143:   return (TRUE);
 00000008  2001      MOV         R0,#0x1
  144: }
 0000000A  4770      BX          R14
 0000000C          ENDP ; 'HID_SetProtocol?T'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =         2
  const size           =    ------
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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