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

📄 main.lst

📁 AT91SAM7X256芯片底层驱动源码。在IAR430环境下编译
💻 LST
📖 第 1 页 / 共 2 页
字号:
   \   00000010   0098               LDR         R0,[SP, #+0]
   \   00000012   8842               CMP         R0,R1
   \   00000014   F9D3               BCC         ??delay_2
    104          }
   \   00000016   08BC               POP         {R3}
   \   00000018   00B0               ADD         SP,#+0
   \   0000001A   7047               BX          LR                 ;; return
   \                     ??delay_0:
   \   0000001C   24550700           DC32        0x75524
    105          
    106          //*----------------------------------------------------------------------------
    107          //* Function Name       : main
    108          //* Object              : Main interrupt function
    109          //* Input Parameters    : none
    110          //* Output Parameters   : TRUE
    111          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    112          int main( void )
    113          //* Begin
    114          {
   \                     main:
   \   00000000   F0B5               PUSH        {R4-R7,LR}
    115              unsigned int   loop_count ;
    116              AT91PS_AIC     pAic;
    117              //* Load System pAic Base address
    118                  pAic = AT91C_BASE_AIC;
    119          
    120              //* Enable User Reset and set its minimal assertion to 960 us
    121                  AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4<<8) | (unsigned int)(0xA5<<24);
   \   00000002   2B48               LDR         R0,??main_0        ;; 0xfffffd08
   \   00000004   2B49               LDR         R1,??main_0+0x4    ;; 0xa5000401
   \   00000006   0160               STR         R1,[R0, #+0]
   \   00000008   0024               MOV         R4,#+0
    122          
    123              //* Init
    124               	loop_count = 0 ;
    125              // First, enable the clock of the PIOB
    126                  AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOB ) ;
   \   0000000A   2B48               LDR         R0,??main_0+0x8    ;; 0xfffffc10
   \   0000000C   0821               MOV         R1,#+0x8
   \   0000000E   0160               STR         R1,[R0, #+0]
    127          
    128             	//* then, we configure the PIO Lines corresponding to AT91B_LEDx
    129             	//* to be outputs. No need to set these pins to be driven by the PIO because it is GPIO pins only.
    130                  AT91F_PIO_CfgOutput( AT91C_BASE_PIOB, AT91B_LED_MASK ) ;
   \   00000010   F021               MOV         R1,#+0xF0
   \   00000012   C903               LSL         R1,R1,#+0xF        ;; #+0x780000
   \   00000014   294A               LDR         R2,??main_0+0xC    ;; 0xfffff600
   \   00000016   1160               STR         R1,[R2, #+0]
   \   00000018   294A               LDR         R2,??main_0+0x10   ;; 0xfffff610
   \   0000001A   1160               STR         R1,[R2, #+0]
   \   0000001C   ....               LDR         R2,??DataTable4    ;; 0xfffff630
   \   0000001E   1160               STR         R1,[R2, #+0]
    131             	//* Clear the AT91B_LED's. On the EK we must apply a "1" to turn off AT91B_LEDs
    132             	AT91F_PIO_SetOutput( AT91C_BASE_PIOB, AT91B_LED_MASK ) ;
    133             	//* Clear the AT91B_LED's. On the EK we must apply a "1" to turn off AT91B_LEDs
    134          
    135          
    136              //* open external PIO interrupt
    137                  //* define switch SW5 at PIO input for interrupt IRQ loop
    138             	AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ;
   \   00000020   0427               MOV         R7,#+0x4
   \   00000022   0760               STR         R7,[R0, #+0]
    139          	AT91F_PIO_CfgInput(AT91C_BASE_PIOA, AT91B_SW5 | AT91B_SW4);
   \   00000024   C020               MOV         R0,#+0xC0
   \   00000026   8004               LSL         R0,R0,#+0x12       ;; #+0x3000000
   \   00000028   2649               LDR         R1,??main_0+0x14   ;; 0xfffff414
   \   0000002A   0860               STR         R0,[R1, #+0]
   \   0000002C   2649               LDR         R1,??main_0+0x18   ;; 0xfffff400
   \   0000002E   0860               STR         R0,[R1, #+0]
    140          
    141          	AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_PIOA, PIO_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, pio_c_irq_handler);
   \   00000030   264D               LDR         R5,??main_0+0x1C   ;; 0xfffff000
   \   00000032   2748               LDR         R0,??main_0+0x20   ;; pio_c_irq_handler
   \   00000034   01B4               PUSH        {R0}
   \   00000036   0023               MOV         R3,#+0
   \   00000038   0622               MOV         R2,#+0x6
   \   0000003A   0221               MOV         R1,#+0x2
   \   0000003C   281C               MOV         R0,R5
   \   0000003E   ........           _BLF        AT91F_AIC_ConfigureIt,AT91F_AIC_ConfigureIt??rT
    142          	AT91F_PIO_InterruptEnable(AT91C_BASE_PIOA,AT91B_SW4);
   \   00000042   2448               LDR         R0,??main_0+0x24   ;; 0xfffff440
   \   00000044   B905               LSL         R1,R7,#+0x16
   \   00000046   0160               STR         R1,[R0, #+0]
    143          	//* set the interrupt by software
    144          	AT91F_AIC_EnableIt (pAic, AT91C_ID_PIOA);
   \   00000048   234E               LDR         R6,??main_0+0x28   ;; 0xfffff120
   \   0000004A   3760               STR         R7,[R6, #+0]
    145          
    146              //* Open the software interrupt on the AIC
    147                  AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_SYS, SOFT_INTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE,  aic_software_interrupt);
   \   0000004C   2348               LDR         R0,??main_0+0x2C   ;; aic_software_interrupt
   \   0000004E   01B4               PUSH        {R0}
   \   00000050   2023               MOV         R3,#+0x20
   \   00000052   0222               MOV         R2,#+0x2
   \   00000054   0121               MOV         R1,#+0x1
   \   00000056   281C               MOV         R0,R5
   \   00000058   ........           _BLF        AT91F_AIC_ConfigureIt,AT91F_AIC_ConfigureIt??rT
    148                  AT91F_AIC_EnableIt (pAic, AT91C_ID_SYS);
   \   0000005C   0227               MOV         R7,#+0x2
   \   0000005E   3760               STR         R7,[R6, #+0]
    149          
    150              //* open  FIQ interrupt
    151                  AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA,AT91B_SW1,0);
   \   00000060   3805               LSL         R0,R7,#+0x14
   \   00000062   1F49               LDR         R1,??main_0+0x30   ;; 0xfffff470
   \   00000064   0860               STR         R0,[R1, #+0]
   \   00000066   1F49               LDR         R1,??main_0+0x34   ;; 0xfffff474
   \   00000068   0C60               STR         R4,[R1, #+0]
   \   0000006A   1F49               LDR         R1,??main_0+0x38   ;; 0xfffff404
   \   0000006C   0860               STR         R0,[R1, #+0]
    152          	AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_FIQ, FIQ_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_EXT_NEGATIVE_EDGE, FIQ_init_handler);
   \   0000006E   1F48               LDR         R0,??main_0+0x3C   ;; FIQ_init_handler
   \   00000070   01B4               PUSH        {R0}
   \   00000072   2023               MOV         R3,#+0x20
   \   00000074   0722               MOV         R2,#+0x7
   \   00000076   211C               MOV         R1,R4
   \   00000078   281C               MOV         R0,R5
   \   0000007A   ........           _BLF        AT91F_AIC_ConfigureIt,AT91F_AIC_ConfigureIt??rT
    153          	AT91F_AIC_EnableIt (pAic, AT91C_ID_FIQ);
   \   0000007E   0120               MOV         R0,#+0x1
   \   00000080   3060               STR         R0,[R6, #+0]
    154                  //* generate FIQ interrupt by software
    155          	AT91F_AIC_Trig (pAic,AT91C_ID_FIQ) ;
   \   00000082   1B4D               LDR         R5,??main_0+0x40   ;; 0xfffff12c
   \   00000084   2860               STR         R0,[R5, #+0]
    156          
    157              //* Init timer interrupt
    158                  timer_init();
   \   00000086   ........           _BLF        timer_init,timer_init??rT
    159          
    160              //* Init Usart
    161                  Usart_init();
   \   0000008A   ........           _BLF        Usart_init,Usart_init??rT
    162          
    163              //* generate software interrupt
    164                  AT91F_AIC_Trig (pAic,AT91C_ID_SYS) ;
   \   0000008E   2F60               STR         R7,[R5, #+0]
   \   00000090   BE04               LSL         R6,R7,#+0x12
   \   00000092   03B0               ADD         SP,#+0xC
    165          
    166          for (;;)
    167              {
    168                  AT91F_PIO_ClearOutput( AT91C_BASE_PIOB, AT91B_LED1 );
   \                     ??main_1:
   \   00000094   ....               LDR         R0,??DataTable3    ;; 0xfffff634
   \   00000096   0660               STR         R6,[R0, #+0]
    169                  delay () ;
   \   00000098   ........           BL          delay
    170                  AT91F_PIO_SetOutput( AT91C_BASE_PIOB, AT91B_LED1 );
   \   0000009C   ....               LDR         R0,??DataTable4    ;; 0xfffff630
   \   0000009E   0660               STR         R6,[R0, #+0]
    171                  delay () ;
   \   000000A0   ........           BL          delay
    172          
    173                  loop_count ++ ;
   \   000000A4   641C               ADD         R4,R4,#+0x1
    174              //* Set AT91B_LED by software interrupt
    175                  if (loop_count == 10)
   \   000000A6   0A2C               CMP         R4,#+0xA
   \   000000A8   F4D1               BNE         ??main_1
    176                  {
    177                       loop_count=0;
   \   000000AA   0024               MOV         R4,#+0
    178                   //* Software interrupt
    179                       AT91F_AIC_Trig (pAic,AT91C_ID_SYS) ;
   \   000000AC   2F60               STR         R7,[R5, #+0]
   \   000000AE   F1E7               B           ??main_1
   \                     ??main_0:
   \   000000B0   08FDFFFF           DC32        0xfffffd08
   \   000000B4   010400A5           DC32        0xa5000401
   \   000000B8   10FCFFFF           DC32        0xfffffc10
   \   000000BC   00F6FFFF           DC32        0xfffff600
   \   000000C0   10F6FFFF           DC32        0xfffff610
   \   000000C4   14F4FFFF           DC32        0xfffff414
   \   000000C8   00F4FFFF           DC32        0xfffff400
   \   000000CC   00F0FFFF           DC32        0xfffff000
   \   000000D0   ........           DC32        pio_c_irq_handler
   \   000000D4   40F4FFFF           DC32        0xfffff440
   \   000000D8   20F1FFFF           DC32        0xfffff120
   \   000000DC   ........           DC32        aic_software_interrupt
   \   000000E0   70F4FFFF           DC32        0xfffff470
   \   000000E4   74F4FFFF           DC32        0xfffff474
   \   000000E8   04F4FFFF           DC32        0xfffff404
   \   000000EC   ........           DC32        FIQ_init_handler
   \   000000F0   2CF1FFFF           DC32        0xfffff12c
    180                  }
    181              }
    182          
    183          //* End
    184          }

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable3:
   \   00000000   34F6FFFF           DC32        0xfffff634

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable4:
   \   00000000   30F6FFFF           DC32        0xfffff630

   Maximum stack usage in bytes:

     Function               CSTACK
     --------               ------
     AT91F_AIC_ConfigureIt     20
     aic_software_interrupt     4
     delay                      8
     main                      32
     pio_c_irq_handler          4


   Segment part sizes:

     Function/Label         Bytes
     --------------         -----
     AT91F_AIC_ConfigureIt    44
     count_timer0_interrupt    4
     count_timer1_interrupt    4
     aic_software_interrupt   36
     pio_c_irq_handler        48
     delay                    32
     main                    244
     ??DataTable3              4
     ??DataTable4              4
      Others                  88

 
 432 bytes in segment CODE
  44 bytes in segment CODE_I
   8 bytes in segment DATA_Z
  24 bytes in segment INITTAB
 
 368 bytes of CODE memory (+ 132 bytes shared)
   8 bytes of DATA memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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