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

📄 main.lst

📁 ARM仿真案例
💻 LST
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32               21/Jul/2006  08:58:24 #
# Copyright 1999-2005 IAR Systems. All rights reserved.                      #
# Time limited license: 29 days left                                         #
#                                                                            #
#    Cpu mode        =  interwork                                            #
#    Endian          =  little                                               #
#    Stack alignment =  4                                                    #
#    Source file     =  E:\Project\examples\IAR\基础实验\EINT1\main.c        #
#    Command line    =  E:\Project\examples\IAR\基础实验\EINT1\main.c -lCN   #
#                       E:\Project\examples\IAR\基础实验\EINT1\Debug\List\   #
#                       -lA E:\Project\examples\IAR\基础实验\EINT1\Debug\Lis #
#                       t\ -o E:\Project\examples\IAR\基础实验\EINT1\Debug\O #
#                       bj\ -s9 --debug --cpu_mode thumb --endian little     #
#                       --cpu ARM7TDMI-S --stack_align 4 --interwork -e      #
#                       --fpu None --dlib_config "E:\Program Files\IAR       #
#                       Systems\Embedded Workbench                           #
#                       4.0\ARM\LIB\dl4tptinl8n.h" -I "E:\Program Files\IAR  #
#                       Systems\Embedded Workbench 4.0\ARM\INC\"             #
#    List file       =  E:\Project\examples\IAR\基础实验\EINT1\Debug\List\ma #
#                       in.lst                                               #
#    Object file     =  E:\Project\examples\IAR\基础实验\EINT1\Debug\Obj\mai #
#                       n.r79                                                #
#                                                                            #
#                                                                            #
##############################################################################

E:\Project\examples\IAR\基础实验\EINT1\main.c
      1          /*******************************************************************************
      2          *File: EINT1_LED.c
      3          *功能: 使用外部中断1进行LED控制,每当有一次中断时,即取反LED,以便指示中断输入
      4          *******************************************************************************/
      5          #include   "config.h"
      6          #include <intrinsics.h>
      7          #define     LEDCON    0x00000800     /*P0.11 引脚控制LED(DS12),低电平点亮*/
      8          
      9          
     10          /*******************************************************************************
     11          *名称:IRQ_EINT1()
     12          *功能:外部中断1处理函数
     13          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     14          __irq void  IRQ_Eint1(void)
     15          {  uint32  i;
   \                     IRQ_Eint1:
   \   00000000   03002DE9           STMDB       SP!,{R0,R1}        ;; Push
     16          
     17             i=VICIRQStatus;                   //读出VICIRQStatus的值
   \   00000004   FF00E0E3           MVN         R0,#+255
   \   00000008   F00EC0E3           BIC         R0,R0,#0xF00
   \   0000000C   000090E5           LDR         R0,[R0, #+0]
     18             i=IOSET;                          //读出当前LED控制值
   \   00000010   4E02A0E3           MOV         R0,#-536870908
   \   00000014   A00B80E3           ORR         R0,R0,#0x28000
   \   00000018   000090E5           LDR         R0,[R0, #+0]
     19             if((i&LEDCON)==0)                 //控制LED输出
   \   0000001C   801EA0E3           MOV         R1,#+2048
   \   00000020   800E10E2           ANDS        R0,R0,#0x800
   \   00000024   CE02A013           MOVNE       R0,#-536870900
     20             { IOSET=LEDCON;
   \   00000028   4E02A003           MOVEQ       R0,#-536870908
   \   0000002C   A00B80E3           ORR         R0,R0,#0x28000
   \   00000030   001080E5           STR         R1,[R0, #+0]
   \   00000034   020000EA           B           ??IRQ_Eint1_0
     21             }
     22             else
     23             { IOCLR=LEDCON;
     24             }
     25             while((EXTINT&0x02)!=0)    //等待外部中断信号恢复为高电平
     26             {  EXTINT=0x02;
   \                     ??IRQ_Eint1_1:
   \   00000038   ........           LDR         R0,??DataTable2    ;; 0xe01fc140
   \   0000003C   0210A0E3           MOV         R1,#+2
   \   00000040   0010C0E5           STRB        R1,[R0, #+0]
     27             }
   \                     ??IRQ_Eint1_0:
   \   00000044   ........           LDR         R0,??DataTable2    ;; 0xe01fc140
   \   00000048   0000D0E5           LDRB        R0,[R0, #+0]
   \   0000004C   020010E2           ANDS        R0,R0,#0x2
   \   00000050   F8FFFF1A           BNE         ??IRQ_Eint1_1
     28          }
   \   00000054   0300BDE8           LDMIA       SP!,{R0,R1}        ;; Pop
   \   00000058   04F05EE2           SUBS        PC,LR,#+4          ;; return
     29          /*******************************************************************************
     30          *名称: main()
     31          *功能:初始化外部中断1及I/O连接等
     32          *******************************************************************************/
     33          

   \                                 In segment CODE, align 4, keep-with-next
     34          int main()
     35          {  PINSEL0=0x20000000;       //设置I/O口工作模式,P0.14设置为EINT1
   \                     main:
   \   00000000   00B5               PUSH        {LR}
   \   00000002   0B48               LDR         R0,??main_0        ;; 0xe002c000
   \   00000004   8021               MOV         R1,#+128
   \   00000006   8905               LSL         R1,R1,#+22         ;; #+536870912
   \   00000008   0160               STR         R1,[R0, #+0]
     36             PINSEL1=0x00000000;
   \   0000000A   0020               MOV         R0,#+0
   \   0000000C   0949               LDR         R1,??main_0+0x4    ;; 0xe002c004
   \   0000000E   0860               STR         R0,[R1, #+0]
     37             IODIR=LEDCON;             //设置LED控制口为输出,其它I/O为输入
   \   00000010   0949               LDR         R1,??main_0+0x8    ;; 0xe0028008
   \   00000012   8022               MOV         R2,#+128
   \   00000014   1201               LSL         R2,R2,#+4          ;; #+2048
   \   00000016   0A60               STR         R2,[R1, #+0]
     38             
     39             /*打开EINT1中断(不设置向量控制器,即使用非向量IRQ)*/
     40             VICIntSelect=0x00000000;
   \   00000018   0849               LDR         R1,??main_0+0xC    ;; 0xfffff00c
   \   0000001A   0860               STR         R0,[R1, #+0]
     41             VICIntEnable=0x00008000;
   \   0000001C   0848               LDR         R0,??main_0+0x10   ;; 0xfffff010
   \   0000001E   1101               LSL         R1,R2,#+4
   \   00000020   0160               STR         R1,[R0, #+0]
     42             EXTINT=0x07;               //清除外部中断标志
   \   00000022   ....               LDR         R0,??DataTable2    ;; 0xe01fc140
   \   00000024   0721               MOV         R1,#+7
   \   00000026   0170               STRB        R1,[R0, #+0]
     43             __enable_interrupt(); 
   \   00000028   ........           _BLF        ??EnI_t,??rT??EnI_t
     44             //enable_irq();
     45               while(1);                  //等待中断
   \                     ??main_1:
   \   0000002C   FEE7               B           ??main_1
   \   0000002E   C046               NOP         
   \                     ??main_0:
   \   00000030   00C002E0           DC32        0xe002c000
   \   00000034   04C002E0           DC32        0xe002c004
   \   00000038   088002E0           DC32        0xe0028008
   \   0000003C   0CF0FFFF           DC32        0xfffff00c
   \   00000040   10F0FFFF           DC32        0xfffff010
     46             
     47          }

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable2:
   \   00000000   40C11FE0           DC32        0xe01fc140

   Maximum stack usage in bytes:

     Function  CSTACK
     --------  ------
     IRQ_Eint1     8
     main          4


   Segment part sizes:

     Function/Label Bytes
     -------------- -----
     IRQ_Eint1        92
     main             68
     ??DataTable2      4
      Others          24

 
 188 bytes in segment CODE
 
 164 bytes of CODE memory (+ 24 bytes shared)

Errors: none
Warnings: none

⌨️ 快捷键说明

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