📄 main.s79
字号:
//////////////////////////////////////////////////////////////////////////////
// /
// 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\Li /
// st\ -o E:\Project\examples\IAR\基础实验\EINT1\Debug /
// \Obj\ -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\m /
// ain.s79 /
// /
// /
//////////////////////////////////////////////////////////////////////////////
NAME main
RTMODEL "ARMv4M", "USED"
RTMODEL "ARMv4T", "USED"
RTMODEL "StackAlign4", "USED"
RTMODEL "__cpu_mode", "__pcs__interwork"
RTMODEL "__data_model", "absolute"
RTMODEL "__endian", "little"
RTMODEL "__rt_version", "6"
RSEG CSTACK:DATA:NOROOT(2)
EXTERN ??EnI_t
??DataTable0 EQU 0
??DataTable1 EQU 0
MULTWEAK ??main??rA
MULTWEAK ??rT??EnI_t
PUBLIC IRQ_Eint1
FUNCTION IRQ_Eint1,0203H
LOCFRAME CSTACK, 8, STACK
PUBLIC main
FUNCTION main,0a01H
LOCFRAME CSTACK, 4, STACK
CFI Names cfiNames0
CFI StackFrame CFA R13 HUGEDATA
CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32
CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, CPSR:32, R13:32
CFI Resource R14:32, SPSR:32
CFI VirtualResource ?RET:32
CFI EndNames cfiNames0
CFI Common cfiCommon0 Using cfiNames0
CFI CodeAlign 4
CFI DataAlign 4
CFI ReturnAddress ?RET CODE
CFI CFA R13+0
CFI R0 SameValue
CFI R1 SameValue
CFI R2 SameValue
CFI R3 SameValue
CFI R4 SameValue
CFI R5 SameValue
CFI R6 SameValue
CFI R7 SameValue
CFI R8 SameValue
CFI R9 SameValue
CFI R10 SameValue
CFI R11 SameValue
CFI R12 SameValue
CFI CPSR SPSR
CFI R14 Undefined
CFI SPSR Undefined
CFI ?RET add(R14, literal(-4))
CFI EndCommon cfiCommon0
CFI Common cfiCommon1 Using cfiNames0
CFI CodeAlign 4
CFI DataAlign 4
CFI ReturnAddress ?RET CODE
CFI CFA R13+0
CFI R0 Undefined
CFI R1 Undefined
CFI R2 Undefined
CFI R3 Undefined
CFI R4 SameValue
CFI R5 SameValue
CFI R6 SameValue
CFI R7 SameValue
CFI R8 SameValue
CFI R9 SameValue
CFI R10 SameValue
CFI R11 SameValue
CFI R12 Undefined
CFI CPSR SameValue
CFI R14 Undefined
CFI SPSR SameValue
CFI ?RET R14
CFI EndCommon cfiCommon1
CFI Common cfiCommon2 Using cfiNames0
CFI CodeAlign 2
CFI DataAlign 4
CFI ReturnAddress ?RET CODE
CFI CFA R13+0
CFI R0 Undefined
CFI R1 Undefined
CFI R2 Undefined
CFI R3 Undefined
CFI R4 SameValue
CFI R5 SameValue
CFI R6 SameValue
CFI R7 SameValue
CFI R8 SameValue
CFI R9 SameValue
CFI R10 SameValue
CFI R11 SameValue
CFI R12 Undefined
CFI CPSR SameValue
CFI R14 Undefined
CFI SPSR SameValue
CFI ?RET R14
CFI EndCommon cfiCommon2
main SYMBOL "main"
??main??rA SYMBOL "??rA", main
// 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 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock0 Using cfiCommon0
CFI Function IRQ_Eint1
CODE32
// 14 __irq void IRQ_Eint1(void)
// 15 { uint32 i;
IRQ_Eint1:
STMDB SP!,{R0,R1} ;; Push
CFI R1 Frame(CFA, -4)
CFI R0 Frame(CFA, -8)
CFI CFA R13+8
// 16
// 17 i=VICIRQStatus; //读出VICIRQStatus的值
MVN R0,#+255
BIC R0,R0,#0xF00
LDR R0,[R0, #+0]
// 18 i=IOSET; //读出当前LED控制值
MOV R0,#-536870908
ORR R0,R0,#0x28000
LDR R0,[R0, #+0]
// 19 if((i&LEDCON)==0) //控制LED输出
MOV R1,#+2048
ANDS R0,R0,#0x800
MOVNE R0,#-536870900
// 20 { IOSET=LEDCON;
MOVEQ R0,#-536870908
ORR R0,R0,#0x28000
STR R1,[R0, #+0]
B ??IRQ_Eint1_0
// 21 }
// 22 else
// 23 { IOCLR=LEDCON;
// 24 }
// 25 while((EXTINT&0x02)!=0) //等待外部中断信号恢复为高电平
// 26 { EXTINT=0x02;
??IRQ_Eint1_1:
LDR R0,??DataTable2 ;; 0xe01fc140
MOV R1,#+2
STRB R1,[R0, #+0]
// 27 }
??IRQ_Eint1_0:
LDR R0,??DataTable2 ;; 0xe01fc140
LDRB R0,[R0, #+0]
ANDS R0,R0,#0x2
BNE ??IRQ_Eint1_1
// 28 }
LDMIA SP!,{R0,R1} ;; Pop
CFI R0 SameValue
CFI R1 SameValue
CFI CFA R13+0
SUBS PC,LR,#+4 ;; return
CFI EndBlock cfiBlock0
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock1 Using cfiCommon1
CFI NoFunction
CODE32
??main??rA:
ADD R12,PC,#+1
BX R12
CFI EndBlock cfiBlock1
REQUIRE main
// 29 /*******************************************************************************
// 30 *名称: main()
// 31 *功能:初始化外部中断1及I/O连接等
// 32 *******************************************************************************/
// 33
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock2 Using cfiCommon2
CFI Function main
CODE16
// 34 int main()
// 35 { PINSEL0=0x20000000; //设置I/O口工作模式,P0.14设置为EINT1
main:
PUSH {LR}
CFI ?RET Frame(CFA, -4)
CFI CFA R13+4
LDR R0,??main_0 ;; 0xe002c000
MOV R1,#+128
LSL R1,R1,#+22 ;; #+536870912
STR R1,[R0, #+0]
// 36 PINSEL1=0x00000000;
MOV R0,#+0
LDR R1,??main_0+0x4 ;; 0xe002c004
STR R0,[R1, #+0]
// 37 IODIR=LEDCON; //设置LED控制口为输出,其它I/O为输入
LDR R1,??main_0+0x8 ;; 0xe0028008
MOV R2,#+128
LSL R2,R2,#+4 ;; #+2048
STR R2,[R1, #+0]
// 38
// 39 /*打开EINT1中断(不设置向量控制器,即使用非向量IRQ)*/
// 40 VICIntSelect=0x00000000;
LDR R1,??main_0+0xC ;; 0xfffff00c
STR R0,[R1, #+0]
// 41 VICIntEnable=0x00008000;
LDR R0,??main_0+0x10 ;; 0xfffff010
LSL R1,R2,#+4
STR R1,[R0, #+0]
// 42 EXTINT=0x07; //清除外部中断标志
LDR R0,??DataTable2 ;; 0xe01fc140
MOV R1,#+7
STRB R1,[R0, #+0]
// 43 __enable_interrupt();
_BLF ??EnI_t,??rT??EnI_t
// 44 //enable_irq();
// 45 while(1); //等待中断
??main_1:
B ??main_1
NOP
DATA
??main_0:
DC32 0xe002c000
DC32 0xe002c004
DC32 0xe0028008
DC32 0xfffff00c
DC32 0xfffff010
CFI EndBlock cfiBlock2
// 46
// 47 }
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable2:
DC32 0xe01fc140
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock3 Using cfiCommon2
CFI NoFunction
CODE16
??rT??EnI_t:
PUSH {R3}
CFI CFA R13+4
LDR R3,??Subroutine1_0 ;; ??EnI_t
MOV R12,R3
POP {R3}
CFI CFA R13+0
MOV PC,R12
NOP
DATA
??Subroutine1_0:
DC32 ??EnI_t
CFI EndBlock cfiBlock3
END
//
// 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 + -