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

📄 pio.lst

📁 ATmel的AT91sam7SE芯片 USB固件开发源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   000000C0   0100000A           BEQ      ??PIO_Configure_11
   \   000000C4   0130A0E3           MOV      R3,#+1
   \   000000C8   000000EA           B        ??PIO_Configure_12
   \                     ??PIO_Configure_11:
   \   000000CC   0030A0E3           MOV      R3,#+0
   \                     ??PIO_Configure_12:
   \   000000D0   0910D4E5           LDRB     R1,[R4, #+9]
   \   000000D4   040051E3           CMP      R1,#+4
   \   000000D8   0100001A           BNE      ??PIO_Configure_13
   \   000000DC   0120A0E3           MOV      R2,#+1
   \   000000E0   000000EA           B        ??PIO_Configure_14
   \                     ??PIO_Configure_13:
   \   000000E4   0020A0E3           MOV      R2,#+0
   \                     ??PIO_Configure_14:
   \   000000E8   08D04DE2           SUB      SP,SP,#+8
   \   000000EC   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   000000F0   00008DE5           STR      R0,[SP, #+0]
   \   000000F4   FF3013E2           ANDS     R3,R3,#0xFF      ;; Zero extend
   \   000000F8   FF2012E2           ANDS     R2,R2,#0xFF      ;; Zero extend
   \   000000FC   001094E5           LDR      R1,[R4, #+0]
   \   00000100   040094E5           LDR      R0,[R4, #+4]
   \   00000104   ........           BL       PIO_SetOutput
   \   00000108   08D08DE2           ADD      SP,SP,#+8        ;; stack cleaning
   \   0000010C   010000EA           B        ??PIO_Configure_5
    256                          break;
    257              
    258                      default: return 0;
   \                     ??PIO_Configure_3:
   \   00000110   0000A0E3           MOV      R0,#+0
   \   00000114   030000EA           B        ??PIO_Configure_15
    259                  }
    260          
    261                  list++;
   \                     ??PIO_Configure_5:
   \   00000118   0C4094E2           ADDS     R4,R4,#+12
    262                  size--;
   \   0000011C   015055E2           SUBS     R5,R5,#+1
   \   00000120   B9FFFFEA           B        ??PIO_Configure_1
    263              }
    264          
    265              return 1;
   \                     ??PIO_Configure_2:
   \   00000124   0100A0E3           MOV      R0,#+1
   \                     ??PIO_Configure_15:
   \   00000128   3840BDE8           POP      {R3-R5,LR}
   \   0000012C   1EFF2FE1           BX       LR               ;; return
    266          }
    267          
    268          //------------------------------------------------------------------------------
    269          /// Sets a high output level on one or more pin(s) (if configured as output(s)).
    270          /// \param pin  Pointer to a Pin instance describing one or more pins.
    271          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    272          void PIO_Set(const Pin *pin)
    273          {
    274              WRITE(pin->pio, PIO_SODR, pin->mask);
   \                     PIO_Set:
   \   00000000   041090E5           LDR      R1,[R0, #+4]
   \   00000004   002090E5           LDR      R2,[R0, #+0]
   \   00000008   302081E5           STR      R2,[R1, #+48]
    275          }
   \   0000000C   1EFF2FE1           BX       LR               ;; return
    276          
    277          //------------------------------------------------------------------------------
    278          /// Sets a low output level on one or more pin(s) (if configured as output(s)).
    279          /// \param pin  Pointer to a Pin instance describing one or more pins.
    280          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    281          void PIO_Clear(const Pin *pin)
    282          {
    283              WRITE(pin->pio, PIO_CODR, pin->mask);
   \                     PIO_Clear:
   \   00000000   041090E5           LDR      R1,[R0, #+4]
   \   00000004   002090E5           LDR      R2,[R0, #+0]
   \   00000008   342081E5           STR      R2,[R1, #+52]
    284          }
   \   0000000C   1EFF2FE1           BX       LR               ;; return
    285          
    286          //------------------------------------------------------------------------------
    287          /// Returns 1 if one or more PIO of the given Pin instance currently have a high
    288          /// level; otherwise returns 0.
    289          /// \param pin  Pointer to a Pin instance describing one or more pins.
    290          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    291          unsigned char PIO_Get(const Pin *pin)
    292          {
   \                     PIO_Get:
   \   00000000   0010B0E1           MOVS     R1,R0
    293              unsigned int reg;
    294              if ((pin->type == PIO_OUTPUT_0) || (pin->type == PIO_OUTPUT_1)) {
   \   00000004   0900D1E5           LDRB     R0,[R1, #+9]
   \   00000008   030050E3           CMP      R0,#+3
   \   0000000C   0200000A           BEQ      ??PIO_Get_0
   \   00000010   0900D1E5           LDRB     R0,[R1, #+9]
   \   00000014   040050E3           CMP      R0,#+4
   \   00000018   0300001A           BNE      ??PIO_Get_1
    295          
    296                  reg = READ(pin->pio, PIO_ODSR);
   \                     ??PIO_Get_0:
   \   0000001C   040091E5           LDR      R0,[R1, #+4]
   \   00000020   380090E5           LDR      R0,[R0, #+56]
   \   00000024   0020B0E1           MOVS     R2,R0
   \   00000028   020000EA           B        ??PIO_Get_2
    297              }
    298              else {
    299          
    300                  reg = READ(pin->pio, PIO_PDSR);
   \                     ??PIO_Get_1:
   \   0000002C   040091E5           LDR      R0,[R1, #+4]
   \   00000030   3C0090E5           LDR      R0,[R0, #+60]
   \   00000034   0020B0E1           MOVS     R2,R0
    301              }
    302          
    303              if ((reg & pin->mask) == 0) {
   \                     ??PIO_Get_2:
   \   00000038   000091E5           LDR      R0,[R1, #+0]
   \   0000003C   020010E1           TST      R0,R2
   \   00000040   0100001A           BNE      ??PIO_Get_3
    304          
    305                  return 0;
   \   00000044   0000A0E3           MOV      R0,#+0
   \   00000048   000000EA           B        ??PIO_Get_4
    306              }
    307              else {
    308          
    309                  return 1;
   \                     ??PIO_Get_3:
   \   0000004C   0100A0E3           MOV      R0,#+1
   \                     ??PIO_Get_4:
   \   00000050   1EFF2FE1           BX       LR               ;; return
    310              }
    311          }
    312          
    313          
    314          //------------------------------------------------------------------------------
    315          /// Returns 1 if one or more PIO of the given Pin data to be driven on the I/O line
    316          /// level; otherwise returns 0.
    317          /// \param pin  Pointer to a Pin instance describing one or more pins.
    318          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    319          unsigned char PIO_GetOutputDataStatus(const Pin *pin)
    320          {
   \                     PIO_GetOutputDataStatus:
   \   00000000   0010B0E1           MOVS     R1,R0
    321              if ((READ(pin->pio, PIO_ODSR) & pin->mask) == 0) {
   \   00000004   040091E5           LDR      R0,[R1, #+4]
   \   00000008   380090E5           LDR      R0,[R0, #+56]
   \   0000000C   002091E5           LDR      R2,[R1, #+0]
   \   00000010   000012E1           TST      R2,R0
   \   00000014   0100001A           BNE      ??PIO_GetOutputDataStatus_0
    322          
    323                  return 0;
   \   00000018   0000A0E3           MOV      R0,#+0
   \   0000001C   000000EA           B        ??PIO_GetOutputDataStatus_1
    324              }
    325              else {
    326          
    327                  return 1;
   \                     ??PIO_GetOutputDataStatus_0:
   \   00000020   0100A0E3           MOV      R0,#+1
   \                     ??PIO_GetOutputDataStatus_1:
   \   00000024   1EFF2FE1           BX       LR               ;; return
    328              }
    329          }
    330          
    331          //------------------------------------------------------------------------------
    332          /// Returns the value of ISR for the PIO controller of the pin.
    333          /// Reading this register acknoledges all the ITs.
    334          /// \param pin  Pointer to a Pin instance describing one or more pins.
    335          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    336          unsigned int PIO_GetISR(const Pin *pin)
    337          {
    338              return (READ(pin->pio, PIO_ISR));
   \                     PIO_GetISR:
   \   00000000   040090E5           LDR      R0,[R0, #+4]
   \   00000004   4C0090E5           LDR      R0,[R0, #+76]
   \   00000008   1EFF2FE1           BX       LR               ;; return
    339          }
    340          

   Maximum stack usage in bytes:

     Function                .cstack
     --------                -------
     PIO_Clear                    0
     PIO_Configure               24
     PIO_Get                      0
     PIO_GetISR                   0
     PIO_GetOutputDataStatus      0
     PIO_Set                      0
     PIO_SetInput                 0
     PIO_SetOutput                0
     PIO_SetPeripheralA           0
     PIO_SetPeripheralB           0


   Section sizes:

     Function/Label          Bytes
     --------------          -----
     PIO_SetPeripheralA        40
     PIO_SetPeripheralB        40
     PIO_SetInput              64
     PIO_SetOutput             92
     PIO_Configure            304
     PIO_Set                   16
     PIO_Clear                 16
     PIO_Get                   84
     PIO_GetOutputDataStatus   40
     PIO_GetISR                12

 
 708 bytes in section .text
 
 708 bytes of CODE memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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