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

📄 main.lst

📁 keil开发平台下的ADUC7027的功能模块代码。
💻 LST
📖 第 1 页 / 共 2 页
字号:
 00000014  E3A01801  MOV         R1,#0x10000
 00000018  E5100000  LDR         R0,=0xFFFFF458
 0000001C  E5801000  STR         R1,[R0,#0x0]
   44: }
 00000020          L_2:
 00000020  E8BD0003  LDMIA       R13!,{R0-R1}
 00000024  E25EF004  SUBS        R15,R14,#0x0004
 00000028          ENDP ; 'IRQ_Handler?A'


*** CODE SEGMENT '?PR?FIQ_Handler?A?main':
   50:  if(FIQSTA & EXTERNAL_IRQ1)    //读取FIQ中断状态,判断FIQ中断源
ARM COMPILER V2.50a,  main                                                                 22/04/06  16:43:25  PAGE 4   

 00000000  E5108000  LDR         R0,=0xFFFF0100
 00000004  E5988000  LDR         R8,[R8,#0x0]
 00000008  E3180701  TST         R8,#0x40000
 0000000C  0A000002  BEQ         L_4  ; Targ=0x1C
   52:    ON_LED5();
 00000010  E3A09802  MOV         R9,#0x20000
 00000014  E5108000  LDR         R0,=0xFFFFF458
 00000018  E5889000  STR         R9,[R8,#0x0]
   55: }
 0000001C          L_4:
 0000001C  E25EF004  SUBS        R15,R14,#0x0004
 00000020          ENDP ; 'FIQ_Handler?A'


*** CODE SEGMENT '?PR?SWI_0?A?main':
   61:  ON_LED6();
 00000000  E3A01701  MOV         R1,#0x40000
 00000004  E5100000  LDR         R0,=0xFFFFF458
 00000008  E5801000  STR         R1,[R0,#0x0]
   62: }
 0000000C  E12FFF1E  BX          R14
 00000010          ENDP ; 'SWI_0?A'


*** CODE SEGMENT '?PR?SWI_1?A?main':
   69:  ON_LED7();
 00000000  E3A01702  MOV         R1,#0x80000
 00000004  E5100000  LDR         R0,=0xFFFFF458
 00000008  E5801000  STR         R1,[R0,#0x0]
   70: }
 0000000C  E12FFF1E  BX          R14
 00000010          ENDP ; 'SWI_1?A'


*** CODE SEGMENT '?PR?SWI_2?A?main':
   74: uint32 SWI_2(uint32 a,uint32 b) __swi(2)      //2号软中断,实现两个整数相加
 00000000  E1A03001  MOV         R3,R1 ; b
 00000004  ---- Variable 'b' assigned to Register 'R3' ----
 00000004  E1A02000  MOV         R2,R0 ; a
 00000008  ---- Variable 'a' assigned to Register 'R2' ----
   76:  return a+b;
 00000008  E1A01003  MOV         R1,R3 ; b
 0000000C  E1A00002  MOV         R0,R2 ; a
 00000010  E0800001  ADD         R0,R0,R1 ; a
   77: }
 00000014  E12FFF1E  BX          R14
 00000018          ENDP ; 'SWI_2?A'


*** CODE SEGMENT '?PR?main?main':
   81: void main(void)
 00000000  E92D4000  STMDB       R13!,{LR}
   84:  sys_clk_init();
 00000004  EBFFFFFD  BL          sys_clk_init?A  ; Targ=0x0
   86:  EN_LED4();       //使能LED
 00000008  E5100000  LDR         R0,=0xFFFFF40C
 0000000C  E5901000  LDR         R1,[R0,#0x0]
 00000010  E3C1100F  BIC         R1,R1,#0x000F
 00000014  E5801000  STR         R1,[R0,#0x0]
 00000018  E5100000  LDR         R0,=0xFFFFF450
 0000001C  E5901000  LDR         R1,[R0,#0x0]
 00000020  E3811401  ORR         R1,R1,#0x1000000
 00000024  E5801000  STR         R1,[R0,#0x0]
   87:  EN_LED5();
 00000028  E5100000  LDR         R0,=0xFFFFF40C
 0000002C  E5901000  LDR         R1,[R0,#0x0]
 00000030  E3C110F0  BIC         R1,R1,#0x00F0
 00000034  E5801000  STR         R1,[R0,#0x0]
 00000038  E5100000  LDR         R0,=0xFFFFF450
 0000003C  E5901000  LDR         R1,[R0,#0x0]
 00000040  E3811402  ORR         R1,R1,#0x2000000
 00000044  E5801000  STR         R1,[R0,#0x0]
   88:  EN_LED6();
 00000048  E5100000  LDR         R0,=0xFFFFF40C
ARM COMPILER V2.50a,  main                                                                 22/04/06  16:43:25  PAGE 5   

 0000004C  E5901000  LDR         R1,[R0,#0x0]
 00000050  E3C11C0F  BIC         R1,R1,#0x0F00
 00000054  E5801000  STR         R1,[R0,#0x0]
 00000058  E5100000  LDR         R0,=0xFFFFF450
 0000005C  E5901000  LDR         R1,[R0,#0x0]
 00000060  E3811301  ORR         R1,R1,#0x4000000
 00000064  E5801000  STR         R1,[R0,#0x0]
   89:  EN_LED7();
 00000068  E5100000  LDR         R0,=0xFFFFF40C
 0000006C  E5901000  LDR         R1,[R0,#0x0]
 00000070  E3C11A0F  BIC         R1,R1,#0xF000
 00000074  E5801000  STR         R1,[R0,#0x0]
 00000078  E5100000  LDR         R0,=0xFFFFF450
 0000007C  E5901000  LDR         R1,[R0,#0x0]
 00000080  E3811302  ORR         R1,R1,#0x8000000
 00000084  E5801000  STR         R1,[R0,#0x0]
   90:  EN_LED8();
 00000088  E5100000  LDR         R0,=0xFFFFF408
 0000008C  E5901000  LDR         R1,[R0,#0x0]
 00000090  E3C1180F  BIC         R1,R1,#0xF0000
 00000094  E5801000  STR         R1,[R0,#0x0]
 00000098  E5100000  LDR         R0,=0xFFFFF440
 0000009C  E5901000  LDR         R1,[R0,#0x0]
 000000A0  E3811201  ORR         R1,R1,#0x10000000
 000000A4  E5801000  STR         R1,[R0,#0x0]
   92:  OFF_LED4();     //初始化关掉LED
 000000A8  E3A01801  MOV         R1,#0x10000
 000000AC  E5100000  LDR         R0,=0xFFFFF454
 000000B0  E5801000  STR         R1,[R0,#0x0]
   93:  OFF_LED5();
 000000B4  E3A01802  MOV         R1,#0x20000
 000000B8  E5100000  LDR         R0,=0xFFFFF454
 000000BC  E5801000  STR         R1,[R0,#0x0]
   94:  OFF_LED6();
 000000C0  E3A01701  MOV         R1,#0x40000
 000000C4  E5100000  LDR         R0,=0xFFFFF454
 000000C8  E5801000  STR         R1,[R0,#0x0]
   95:  OFF_LED7();
 000000CC  E3A01702  MOV         R1,#0x80000
 000000D0  E5100000  LDR         R0,=0xFFFFF454
 000000D4  E5801000  STR         R1,[R0,#0x0]
   96:  OFF_LED8(); 
 000000D8  E3A01601  MOV         R1,#0x100000
 000000DC  E5100000  LDR         R0,=0xFFFFF444
 000000E0  E5801000  STR         R1,[R0,#0x0]
   98:  SWI_0();  //用软中断的方法来打开LED6
 000000E4  EF000000  SWI         0x0 ; SWI_0?A
   99:  SWI_1();  //用软中断的方法来打开LED7
 000000E8  EF000001  SWI         0x1 ; SWI_1?A
  100:  if(SWI_2(100,200)==300)      //调用软中断,计算100加200,如果结果等于300,则点亮LED8
 000000EC  E3A00064  MOV         R0,#0x64
 000000F0  E3A010C8  MOV         R1,#0xC8
 000000F4  EF000002  SWI         0x2 ; SWI_2?A
 000000F8  E3500F4B  CMP         R0,#0x012C ; SWI_2?A
 000000FC  1A000002  BNE         L_6  ; Targ=0x10C
  102:    ON_LED8();
 00000100  E3A01601  MOV         R1,#0x100000
 00000104  E5100000  LDR         R0,=0xFFFFF448
 00000108  E5801000  STR         R1,[R0,#0x0]
  103:   }
 0000010C          L_6:
  105:  IRQEN |= EXTERNAL_IRQ0;   //将外部中断0配置成IRQ中断(按键S4)
 0000010C  E5100000  LDR         R0,=0xFFFF0008
 00000110  E5901000  LDR         R1,[R0,#0x0]
 00000114  E3811902  ORR         R1,R1,#0x8000
 00000118  E5801000  STR         R1,[R0,#0x0]
ARM COMPILER V2.50a,  main                                                                 22/04/06  16:43:25  PAGE 6   

  106:  FIQEN |= EXTERNAL_IRQ1;   //将外部中断1配置成FIQ中断(按键S3)
 0000011C  E5100000  LDR         R0,=0xFFFF0108
 00000120  E5901000  LDR         R1,[R0,#0x0]
 00000124  E3811701  ORR         R1,R1,#0x40000
 00000128  E5801000  STR         R1,[R0,#0x0]
  108:  while(1)           //由于是高电平触发中断,所以要同时按住S4、S3键才能运行主程序,即熄灭LED
 0000012C          L_9:
  110:    OFF_LED4();      //当先放开S4,后放开S3时,FIQ可中断IRQ,从而能点亮LED5。相反,如果先放开
 0000012C  E3A01801  MOV         R1,#0x10000
 00000130  E5100000  LDR         R0,=0xFFFFF454
 00000134  E5801000  STR         R1,[R0,#0x0]
  111:    OFF_LED5();      //S3,后放开S4,则IRQ不能中断FIQ,所以不能点亮LED4。
 00000138  E3A01802  MOV         R1,#0x20000
 0000013C  E5100000  LDR         R0,=0xFFFFF454
 00000140  E5801000  STR         R1,[R0,#0x0]
  112:   }
 00000144  EAFFFFF8  B           L_9  ; Targ=0x12C
  113: }
 00000148  E8BD0008  LDMIA       R13!,{R3}
 0000014C  E12FFF13  BX          R3
 00000150          ENDP ; 'main'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =         4
  const size           =    ------
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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