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

📄 led.lst

📁 ATmel的AT91sam7SE芯片 USB固件开发源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
   \   00000028   901421E0           MLA      R1,R0,R4,R1
   \   0000002C   0900D1E5           LDRB     R0,[R1, #+9]
   \   00000030   030050E3           CMP      R0,#+3
   \   00000034   0400001A           BNE      ??LED_Set_2
    101          
    102                  PIO_Set(&pinsLeds[led]);
   \   00000038   0C10A0E3           MOV      R1,#+12
   \   0000003C   ........           LDR      R0,??DataTable13  ;; pinsLeds
   \   00000040   910420E0           MLA      R0,R1,R4,R0
   \   00000044   ........           BL       PIO_Set
   \   00000048   030000EA           B        ??LED_Set_3
    103              }
    104              else {
    105          
    106                  PIO_Clear(&pinsLeds[led]);
   \                     ??LED_Set_2:
   \   0000004C   0C10A0E3           MOV      R1,#+12
   \   00000050   ........           LDR      R0,??DataTable13  ;; pinsLeds
   \   00000054   910420E0           MLA      R0,R1,R4,R0
   \   00000058   ........           BL       PIO_Clear
    107              }
    108          
    109              return 1;
   \                     ??LED_Set_3:
   \   0000005C   0100A0E3           MOV      R0,#+1
   \                     ??LED_Set_1:
   \   00000060   1040BDE8           POP      {R4,LR}
   \   00000064   1EFF2FE1           BX       LR               ;; return
    110          }
    111          
    112          /*
    113              Function: LED_Clear
    114                  Turns a LED off.
    115          
    116              Parameters:
    117                  led - Number of the LED to turn off.
    118          
    119              Returns:
    120                  1 if the LED has been turned off; 0 otherwise.
    121          */

   \                                 In section .text, align 4, keep-with-next
    122          unsigned char LED_Clear(unsigned int led)
    123          {
   \                     LED_Clear:
   \   00000000   10402DE9           PUSH     {R4,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
    124              // Check if LED exists
    125              if (led >= numLeds) {
   \   00000008   ........           LDR      R0,??DataTable10  ;; numLeds
   \   0000000C   000090E5           LDR      R0,[R0, #+0]
   \   00000010   000054E1           CMP      R4,R0
   \   00000014   0100003A           BCC      ??LED_Clear_0
    126          
    127                  return 0;
   \   00000018   0000A0E3           MOV      R0,#+0
   \   0000001C   0F0000EA           B        ??LED_Clear_1
    128              }
    129          
    130              // Turn LED off
    131              if (pinsLeds[led].type == PIO_OUTPUT_0) {
   \                     ??LED_Clear_0:
   \   00000020   0C00A0E3           MOV      R0,#+12
   \   00000024   ........           LDR      R1,??DataTable13  ;; pinsLeds
   \   00000028   901421E0           MLA      R1,R0,R4,R1
   \   0000002C   0900D1E5           LDRB     R0,[R1, #+9]
   \   00000030   030050E3           CMP      R0,#+3
   \   00000034   0400001A           BNE      ??LED_Clear_2
    132          
    133                  PIO_Clear(&pinsLeds[led]);
   \   00000038   0C10A0E3           MOV      R1,#+12
   \   0000003C   ........           LDR      R0,??DataTable13  ;; pinsLeds
   \   00000040   910420E0           MLA      R0,R1,R4,R0
   \   00000044   ........           BL       PIO_Clear
   \   00000048   030000EA           B        ??LED_Clear_3
    134              }
    135              else {
    136          
    137                  PIO_Set(&pinsLeds[led]);
   \                     ??LED_Clear_2:
   \   0000004C   0C10A0E3           MOV      R1,#+12
   \   00000050   ........           LDR      R0,??DataTable13  ;; pinsLeds
   \   00000054   910420E0           MLA      R0,R1,R4,R0
   \   00000058   ........           BL       PIO_Set
    138              }
    139          
    140              return 1;
   \                     ??LED_Clear_3:
   \   0000005C   0100A0E3           MOV      R0,#+1
   \                     ??LED_Clear_1:
   \   00000060   1040BDE8           POP      {R4,LR}
   \   00000064   1EFF2FE1           BX       LR               ;; return
    141          }
    142          
    143          /*
    144              Function: LED_Toggle
    145                  Toggles the current state of a LED.
    146          
    147              Parameters:
    148                  led - Number of the LED to toggle.
    149          
    150              Returns:
    151                  1 if the LED has been toggled; otherwise 0.
    152          */

   \                                 In section .text, align 4, keep-with-next
    153          unsigned char LED_Toggle(unsigned int led)
    154          {
   \                     LED_Toggle:
   \   00000000   10402DE9           PUSH     {R4,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
    155              // Check if LED exists
    156              if (led >= numLeds) {
   \   00000008   ........           LDR      R0,??DataTable10  ;; numLeds
   \   0000000C   000090E5           LDR      R0,[R0, #+0]
   \   00000010   000054E1           CMP      R4,R0
   \   00000014   0100003A           BCC      ??LED_Toggle_0
    157          
    158                  return 0;
   \   00000018   0000A0E3           MOV      R0,#+0
   \   0000001C   0F0000EA           B        ??LED_Toggle_1
    159              }
    160          
    161              // Toggle LED
    162              if (PIO_GetOutputDataStatus(&pinsLeds[led])) {
   \                     ??LED_Toggle_0:
   \   00000020   0C10A0E3           MOV      R1,#+12
   \   00000024   ........           LDR      R0,??DataTable13  ;; pinsLeds
   \   00000028   910420E0           MLA      R0,R1,R4,R0
   \   0000002C   ........           BL       PIO_GetOutputDataStatus
   \   00000030   000050E3           CMP      R0,#+0
   \   00000034   0400000A           BEQ      ??LED_Toggle_2
    163          
    164                  PIO_Clear(&pinsLeds[led]);
   \   00000038   0C10A0E3           MOV      R1,#+12
   \   0000003C   ........           LDR      R0,??DataTable13  ;; pinsLeds
   \   00000040   910420E0           MLA      R0,R1,R4,R0
   \   00000044   ........           BL       PIO_Clear
   \   00000048   030000EA           B        ??LED_Toggle_3
    165              }
    166              else {
    167          
    168                  PIO_Set(&pinsLeds[led]);
   \                     ??LED_Toggle_2:
   \   0000004C   0C10A0E3           MOV      R1,#+12
   \   00000050   ........           LDR      R0,??DataTable13  ;; pinsLeds
   \   00000054   910420E0           MLA      R0,R1,R4,R0
   \   00000058   ........           BL       PIO_Set
    169              }
    170          
    171              return 1;
   \                     ??LED_Toggle_3:
   \   0000005C   0100A0E3           MOV      R0,#+1
   \                     ??LED_Toggle_1:
   \   00000060   1040BDE8           POP      {R4,LR}
   \   00000064   1EFF2FE1           BX       LR               ;; return
    172          }

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable10:
   \   00000000   ........           DC32     numLeds

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable13:
   \   00000000   ........           DC32     pinsLeds
    173          

   Maximum stack usage in bytes:

     Function      .cstack
     --------      -------
     LED_Clear          8
     LED_Configure      8
     LED_Set            8
     LED_Toggle         8


   Section sizes:

     Function/Label Bytes
     -------------- -----
     pinsLeds         36
     numLeds           4
     LED_Configure    60
     LED_Set         104
     LED_Clear       104
     LED_Toggle      104
     ??DataTable10     4
     ??DataTable13     4

 
  40 bytes in section .rodata
 380 bytes in section .text
 
 380 bytes of CODE  memory
  40 bytes of CONST memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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