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

📄 pio.lst

📁 Tried to make CAN logger on AT91sam7X-ek, but have no idea how to implement FATFs... -( I m just a
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   00000074   0100A0E3           MOV      R0,#+1
   \   00000078   D810D4E1           LDRSB    R1,[R4, #+8]
   \   0000007C   1001A0E1           LSL      R0,R0,R1
   \   00000080   EF10E0E3           MVN      R1,#+239
   \   00000084   C01FC1E3           BIC      R1,R1,#0x300
   \   00000088   000081E5           STR      R0,[R1, #+0]
   \   0000008C   0A00D4E5           LDRB     R0,[R4, #+10]
   \   00000090   0110A0E3           MOV      R1,#+1
   \   00000094   A03001E0           AND      R3,R1,R0, LSR #+1
   \   00000098   012000E2           AND      R2,R0,#0x1
   \   0000009C   001094E5           LDR      R1,[R4, #+0]
   \   000000A0   040094E5           LDR      R0,[R4, #+4]
   \   000000A4   ........           BL       PIO_SetInput
   \   000000A8   E5FFFFEA           B        ??PIO_Configure_5
   \                     ??PIO_Configure_9:
   \   000000AC   0900D4E5           LDRB     R0,[R4, #+9]
   \   000000B0   040050E3           CMP      R0,#+4
   \   000000B4   0120A003           MOVEQ    R2,#+1
   \   000000B8   0020A013           MOVNE    R2,#+0
   \   000000BC   0A00D4E5           LDRB     R0,[R4, #+10]
   \   000000C0   010000E2           AND      R0,R0,#0x1
   \   000000C4   08002DE5           STR      R0,[SP, #-8]!
   \   000000C8   0A00D4E5           LDRB     R0,[R4, #+10]
   \   000000CC   0110A0E3           MOV      R1,#+1
   \   000000D0   203101E0           AND      R3,R1,R0, LSR #+2
   \   000000D4   001094E5           LDR      R1,[R4, #+0]
   \   000000D8   040094E5           LDR      R0,[R4, #+4]
   \   000000DC   ........           BL       PIO_SetOutput
   \   000000E0   08D08DE2           ADD      SP,SP,#+8        ;; stack cleaning
   \   000000E4   D6FFFFEA           B        ??PIO_Configure_5
   \                     ??PIO_Configure_3:
   \   000000E8   0000A0E3           MOV      R0,#+0
   \   000000EC   D8FFFFEA           B        ??PIO_Configure_6
    261          }
    262          
    263          //------------------------------------------------------------------------------
    264          /// Sets a high output level on all the PIOs defined in the given Pin instance.
    265          /// This has no immediate effects on PIOs that are not output, but the PIO
    266          /// controller will memorize the value they are changed to outputs.
    267          /// \param pin  Pointer to a Pin instance describing one or more pins.
    268          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    269          void PIO_Set(const Pin *pin)
    270          {
    271              pin->pio->PIO_SODR = pin->mask;
   \                     PIO_Set:
   \   00000000   041090E5           LDR      R1,[R0, #+4]
   \   00000004   000090E5           LDR      R0,[R0, #+0]
   \   00000008   300081E5           STR      R0,[R1, #+48]
    272          }
   \   0000000C   1EFF2FE1           BX       LR               ;; return
    273          
    274          //------------------------------------------------------------------------------
    275          /// Sets a low output level on all the PIOs defined in the given Pin instance.
    276          /// This has no immediate effects on PIOs that are not output, but the PIO
    277          /// controller will memorize the value they are changed to outputs.
    278          /// \param pin  Pointer to a Pin instance describing one or more pins.
    279          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    280          void PIO_Clear(const Pin *pin)
    281          {
    282              pin->pio->PIO_CODR = pin->mask;
   \                     PIO_Clear:
   \   00000000   041090E5           LDR      R1,[R0, #+4]
   \   00000004   000090E5           LDR      R0,[R0, #+0]
   \   00000008   340081E5           STR      R0,[R1, #+52]
    283          }
   \   0000000C   1EFF2FE1           BX       LR               ;; return
    284          
    285          //------------------------------------------------------------------------------
    286          /// Returns 1 if one or more PIO of the given Pin instance currently have a high
    287          /// level; otherwise returns 0. This method returns the actual value that is
    288          /// being read on the pin. To return the supposed output value of a pin, use
    289          /// PIO_GetOutputDataStatus() instead.
    290          /// \param pin  Pointer to a Pin instance describing one or more pins.
    291          /// \return 1 if the Pin instance contains at least one PIO that currently has
    292          /// a high level; otherwise 0.
    293          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    294          unsigned char PIO_Get(const Pin *pin)
    295          {
    296              unsigned int reg;
    297              if ((pin->type == PIO_OUTPUT_0) || (pin->type == PIO_OUTPUT_1)) {
   \                     PIO_Get:
   \   00000000   0910D0E5           LDRB     R1,[R0, #+9]
   \   00000004   030051E3           CMP      R1,#+3
   \   00000008   04005113           CMPNE    R1,#+4
    298          
    299                  reg = pin->pio->PIO_ODSR;
   \   0000000C   04109005           LDREQ    R1,[R0, #+4]
   \   00000010   38109105           LDREQ    R1,[R1, #+56]
    300              }
    301              else {
    302          
    303                  reg = pin->pio->PIO_PDSR;
   \   00000014   04109015           LDRNE    R1,[R0, #+4]
   \   00000018   3C109115           LDRNE    R1,[R1, #+60]
    304              }
    305          
    306              if ((reg & pin->mask) == 0) {
   \   0000001C   ........           B        ?Subroutine0
    307          
    308                  return 0;
    309              }
    310              else {
    311          
    312                  return 1;
    313              }
    314          }

   \                                 In section .text, align 4, keep-with-next
   \                     ?Subroutine0:
   \   00000000   000090E5           LDR      R0,[R0, #+0]
   \   00000004   010010E1           TST      R0,R1
   \   00000008   0000A003           MOVEQ    R0,#+0
   \   0000000C   0100A013           MOVNE    R0,#+1
   \   00000010   1EFF2FE1           BX       LR               ;; return
    315          
    316          
    317          //------------------------------------------------------------------------------
    318          /// Returns 1 if one or more PIO of the given Pin are configured to output a
    319          /// high level (even if they are not output).
    320          /// To get the actual value of the pin, use PIO_Get() instead.
    321          /// \param pin  Pointer to a Pin instance describing one or more pins.
    322          /// \return 1 if the Pin instance contains at least one PIO that is configured
    323          /// to output a high level; otherwise 0.
    324          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    325          unsigned char PIO_GetOutputDataStatus(const Pin *pin)
    326          {
    327              if ((pin->pio->PIO_ODSR & pin->mask) == 0) {
   \                     PIO_GetOutputDataStatus:
   \   00000000   041090E5           LDR      R1,[R0, #+4]
   \   00000004   381091E5           LDR      R1,[R1, #+56]
   \   00000008                      REQUIRE ?Subroutine0
   \   00000008                      ;; // Fall through to label ?Subroutine0
    328          
    329                  return 0;
    330              }
    331              else {
    332          
    333                  return 1;
    334              }
    335          }
    336          
    337          //------------------------------------------------------------------------------
    338          /// Returns the value of ISR for the PIO controller of the pin.
    339          /// Reading this register acknoledges all the ITs.
    340          /// \param pin  Pointer to a Pin instance describing one or more pins.
    341          //------------------------------------------------------------------------------

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

   Maximum stack usage in bytes:

     Function                .cstack
     --------                -------
     PIO_Clear                    0
     PIO_Configure                8
     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        28
     PIO_SetPeripheralB        28
     PIO_SetInput              40
     PIO_SetOutput             56
     PIO_Configure            240
     PIO_Set                   16
     PIO_Clear                 16
     PIO_Get                   32
     ?Subroutine0              20
     PIO_GetOutputDataStatus    8
     PIO_GetISR                12

 
 496 bytes in section .text
 
 496 bytes of CODE memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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