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

📄 pio.lst

📁 IAR5.2下 AT91SAM9260 ARM 对 MCP2515 控制源化码
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   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   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   000000EC   08002DE5           STR      R0,[SP, #-8]!
   \   000000F0   FF3013E2           ANDS     R3,R3,#0xFF      ;; Zero extend
   \   000000F4   FF2012E2           ANDS     R2,R2,#0xFF      ;; Zero extend
   \   000000F8   001094E5           LDR      R1,[R4, #+0]
   \   000000FC   040094E5           LDR      R0,[R4, #+4]
   \   00000100   ........           BL       PIO_SetOutput
   \   00000104   08D08DE2           ADD      SP,SP,#+8        ;; stack cleaning
   \   00000108   010000EA           B        ??PIO_Configure_5
    252                          break;
    253              
    254                      default: return 0;
   \                     ??PIO_Configure_3:
   \   0000010C   0000A0E3           MOV      R0,#+0
   \   00000110   030000EA           B        ??PIO_Configure_15
    255                  }
    256          
    257                  list++;
   \                     ??PIO_Configure_5:
   \   00000114   0C4094E2           ADDS     R4,R4,#+12
    258                  size--;
   \   00000118   015055E2           SUBS     R5,R5,#+1
   \   0000011C   BAFFFFEA           B        ??PIO_Configure_1
    259              }
    260          
    261              return 1;
   \                     ??PIO_Configure_2:
   \   00000120   0100A0E3           MOV      R0,#+1
   \                     ??PIO_Configure_15:
   \   00000124   3280BDE8           POP      {R1,R4,R5,PC}    ;; return
    262          }
    263          
    264          //------------------------------------------------------------------------------
    265          /// Sets a high output level on one or more pin(s) (if configured as output(s)).
    266          /// \param pin  Pointer to a Pin instance describing one or more pins.
    267          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    268          void PIO_Set(const Pin *pin)
    269          {
    270              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]
    271          }
   \   0000000C   1EFF2FE1           BX       LR               ;; return
    272          
    273          //------------------------------------------------------------------------------
    274          /// Sets a low output level on one or more pin(s) (if configured as output(s)).
    275          /// \param pin  Pointer to a Pin instance describing one or more pins.
    276          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    277          void PIO_Clear(const Pin *pin)
    278          {
    279              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]
    280          }
   \   0000000C   1EFF2FE1           BX       LR               ;; return
    281          
    282          //------------------------------------------------------------------------------
    283          /// Returns 1 if one or more PIO of the given Pin instance currently have a high
    284          /// level; otherwise returns 0.
    285          /// \param pin  Pointer to a Pin instance describing one or more pins.
    286          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    287          unsigned char PIO_Get(const Pin *pin)
    288          {
   \                     PIO_Get:
   \   00000000   0010B0E1           MOVS     R1,R0
    289              unsigned int reg;
    290              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
    291          
    292                  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
    293              }
    294              else {
    295          
    296                  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
    297              }
    298          
    299              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
    300          
    301                  return 0;
   \   00000044   0000A0E3           MOV      R0,#+0
   \   00000048   000000EA           B        ??PIO_Get_4
    302              }
    303              else {
    304          
    305                  return 1;
   \                     ??PIO_Get_3:
   \   0000004C   0100A0E3           MOV      R0,#+1
   \                     ??PIO_Get_4:
   \   00000050   1EFF2FE1           BX       LR               ;; return
    306              }
    307          }
    308          
    309          
    310          //------------------------------------------------------------------------------
    311          /// Returns 1 if one or more PIO of the given Pin data to be driven on the I/O line
    312          /// level; otherwise returns 0.
    313          /// \param pin  Pointer to a Pin instance describing one or more pins.
    314          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    315          unsigned char PIO_GetOutputDataStatus(const Pin *pin)
    316          {
   \                     PIO_GetOutputDataStatus:
   \   00000000   0010B0E1           MOVS     R1,R0
    317              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
    318          
    319                  return 0;
   \   00000018   0000A0E3           MOV      R0,#+0
   \   0000001C   000000EA           B        ??PIO_GetOutputDataStatus_1
    320              }
    321              else {
    322          
    323                  return 1;
   \                     ??PIO_GetOutputDataStatus_0:
   \   00000020   0100A0E3           MOV      R0,#+1
   \                     ??PIO_GetOutputDataStatus_1:
   \   00000024   1EFF2FE1           BX       LR               ;; return
    324              }
    325          }
    326          
    327          //------------------------------------------------------------------------------
    328          /// Returns the value of ISR for the PIO controller of the pin.
    329          /// Reading this register acknoledges all the ITs.
    330          /// \param pin  Pointer to a Pin instance describing one or more pins.
    331          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    332          unsigned int PIO_GetISR(const Pin *pin)
    333          {
    334              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
    335          }
    336          

   Maximum stack usage in bytes:

     Function                .cstack
     --------                -------
     PIO_CfgOpendrain             0
     PIO_CfgPeriph                0
     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        40
     PIO_SetPeripheralB        40
     PIO_CfgPeriph             20
     PIO_CfgOpendrain          16
     PIO_SetInput              64
     PIO_SetOutput             92
     PIO_Configure            296
     PIO_Set                   16
     PIO_Clear                 16
     PIO_Get                   84
     PIO_GetOutputDataStatus   40
     PIO_GetISR                12

 
 736 bytes in section .text
 
 736 bytes of CODE memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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