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

📄 main.lst

📁 一个AT91SAM7X256 PIO中断控制实验
💻 LST
📖 第 1 页 / 共 2 页
字号:
     56              change_speed () ;
   \   00000002   ........           BL       change_speed
     57              for(waiting_time = 0; waiting_time < LedSpeed; waiting_time++) ;
   \   00000006   0020               MOVS     R0,#+0
   \   00000008   00E0               B        ??wait_0
   \                     ??wait_1:
   \   0000000A   401C               ADDS     R0,R0,#+1
   \                     ??wait_0:
   \   0000000C   ....               LDR      R1,??DataTable1  ;; LedSpeed
   \   0000000E   0968               LDR      R1,[R1, #+0]
   \   00000010   8842               CMP      R0,R1
   \   00000012   FAD3               BCC      ??wait_1
     58          }//* End
   \   00000014   01BC               POP      {R0}
   \   00000016   0047               BX       R0               ;; return
     59          
     60          //*--------------------------------------------------------------------------------------
     61          //* Function Name       : Main
     62          //* Object              : Software entry point
     63          //* Input Parameters    : none.
     64          //* Output Parameters   : none.
     65          //*--------------------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
     66          int main()
     67          {//* Begin
   \                     main:
   \   00000000   F0B5               PUSH     {R4-R7,LR}
     68              int i;
     69              // First, enable the clock of the PIO
     70                 AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ;
   \   00000002   1448               LDR      R0,??main_0      ;; 0xfffffc10
   \   00000004   0421               MOVS     R1,#+4
   \   00000006   0160               STR      R1,[R0, #+0]
     71          
     72              // then, we configure the PIO Lines corresponding to LED1 to LED4
     73              // to be outputs. No need to set these pins to be driven by the PIO because it is GPIO pins only.
     74                 AT91F_PIO_CfgOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
   \   00000008   F020               MOVS     R0,#+240
   \   0000000A   C003               LSLS     R0,R0,#+15       ;; #+7864320
   \   0000000C   1249               LDR      R1,??main_0+0x4  ;; 0xfffff600
   \   0000000E   0860               STR      R0,[R1, #+0]
   \   00000010   1249               LDR      R1,??main_0+0x8  ;; 0xfffff610
   \   00000012   0860               STR      R0,[R1, #+0]
   \   00000014   1249               LDR      R1,??main_0+0xC  ;; 0xfffff630
   \   00000016   0860               STR      R0,[R1, #+0]
     75          
     76              // Clear the LED's. On the EB55 we must apply a "1" to turn off LEDs
     77                 AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
     78              // Clear the LED's. On the EB55 we must apply a "1" to turn off LEDs
     79                 AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
   \   00000018   124C               LDR      R4,??main_0+0x10  ;; 0xfffff634
   \   0000001A   2060               STR      R0,[R4, #+0]
   \   0000001C   124D               LDR      R5,??main_0+0x14  ;; led_mask
     80          
     81              // Loop forever
     82              for (;;)
     83              {
     84                  // Once a Shot on each led
     85          	for ( i=0 ; i < AT91B_NB_LEB ; i++ )
   \                     ??main_1:
   \   0000001E   0026               MOVS     R6,#+0
     86                  {
     87          	    AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, led_mask[i]) ;
   \                     ??main_2:
   \   00000020   B000               LSLS     R0,R6,#+2
   \   00000022   2F58               LDR      R7,[R5, R0]
   \   00000024   2760               STR      R7,[R4, #+0]
     88          	    wait();
   \   00000026   ........           BL       wait
     89          	    AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, led_mask[i] ) ;
   \   0000002A   0D48               LDR      R0,??main_0+0xC  ;; 0xfffff630
   \   0000002C   0760               STR      R7,[R0, #+0]
     90          	    wait();
   \   0000002E   ........           BL       wait
     91                  }// End for
   \   00000032   761C               ADDS     R6,R6,#+1
   \   00000034   042E               CMP      R6,#+4
   \   00000036   F3DB               BLT      ??main_2
     92                  // Once a Shot on each led
     93                  for ( i=(AT91B_NB_LEB-1) ; i >= 0 ; i-- )
   \   00000038   0326               MOVS     R6,#+3
     94                  {
     95          	    AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, led_mask[i]) ;
   \                     ??main_3:
   \   0000003A   B000               LSLS     R0,R6,#+2
   \   0000003C   2F58               LDR      R7,[R5, R0]
   \   0000003E   2760               STR      R7,[R4, #+0]
     96          	    wait();
   \   00000040   ........           BL       wait
     97          	    AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, led_mask[i] ) ;
   \   00000044   0648               LDR      R0,??main_0+0xC  ;; 0xfffff630
   \   00000046   0760               STR      R7,[R0, #+0]
     98          	    wait();
   \   00000048   ........           BL       wait
     99                  }
   \   0000004C   761E               SUBS     R6,R6,#+1
   \   0000004E   E6D4               BMI      ??main_1
   \   00000050   F3E7               B        ??main_3
   \   00000052   C046               Nop      
   \                     ??main_0:
   \   00000054   10FCFFFF           DC32     0xfffffc10
   \   00000058   00F6FFFF           DC32     0xfffff600
   \   0000005C   10F6FFFF           DC32     0xfffff610
   \   00000060   30F6FFFF           DC32     0xfffff630
   \   00000064   34F6FFFF           DC32     0xfffff634
   \   00000068   ........           DC32     led_mask
    100              }// End for
    101          }//* End

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable1:
   \   00000000   ........           DC32     LedSpeed

   \                                 In segment DATA_ID, align 4, align-sorted
   \                     `?<Initializer for LedSpeed>`:
   \   00000000   00A00500           DC32 368640

   Maximum stack usage in bytes:

     Function     CSTACK
     --------     ------
     change_speed     4
     main            20
     wait             4


   Segment part sizes:

     Function/Label              Bytes
     --------------              -----
     LedSpeed                       4
     led_mask                      16
     change_speed                  68
     wait                          24
     main                         108
     ??DataTable1                   4
     ?<Initializer for LedSpeed>    4
      Others                       36

 
 228 bytes in segment CODE
  16 bytes in segment DATA_C
   4 bytes in segment DATA_I
   4 bytes in segment DATA_ID
  12 bytes in segment INITTAB
 
 204 bytes of CODE  memory (+ 36 bytes shared)
  20 bytes of CONST memory
   4 bytes of DATA  memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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