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

📄 main.s79

📁 ARM仿真案例
💻 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 + -