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

📄 main.s79

📁 ARM仿真案例
💻 S79
📖 第 1 页 / 共 2 页
字号:
        LDR      R0,??DataTable15  ;; 0xe002800c
        MOVS     R1,#+128
        LSLS     R1,R1,#+1        ;; #+256
        STR      R1,[R0, #+0]
//   41 	IOCLR=rw;
        LSLS     R1,R1,#+1
        STR      R1,[R0, #+0]
//   42 	IOCLR=0xff;		//先清零
        MOVS     R1,#+255
        STR      R1,[R0, #+0]
//   43 	IOSET=dat;		//再送数
        LDR      R0,??DataTable11  ;; 0xe0028004
        STR      R4,[R0, #+0]
//   44 	IOSET=en;
        MOVS     R1,#+128
        LSLS     R1,R1,#+3        ;; #+1024
        STR      R1,[R0, #+0]
//   45 	IOCLR=en;
        LDR      R0,??DataTable15  ;; 0xe002800c
        STR      R1,[R0, #+0]
//   46 }
        POP      {R4}
        POP      {R0}
        BX       R0               ;; return
        CFI EndBlock cfiBlock3

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock4 Using cfiCommon0
        CFI NoFunction
        ARM
??WrDat??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock4
        REQUIRE WrDat
//   47 /****************************************************************************
//   48 * 名称:WrDat()
//   49 * 功能:写数据函数
//   50 ****************************************************************************/

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock5 Using cfiCommon1
        CFI Function WrDat
        THUMB
//   51 void WrDat(INT8U dat)	//读数据
//   52 {
WrDat:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        MOVS     R4,R0
//   53    
//   54 	ChkBusy();
        BL       ChkBusy
//   55 	IOSET=rs;
        LDR      R0,??DataTable11  ;; 0xe0028004
        MOVS     R1,#+128
        LSLS     R1,R1,#+1        ;; #+256
        STR      R1,[R0, #+0]
//   56 	IOCLR=rw;
        LDR      R0,??DataTable15  ;; 0xe002800c
        LSLS     R1,R1,#+1
        STR      R1,[R0, #+0]
//   57 	IOCLR=0xff;		//先清零
        MOVS     R1,#+255
        STR      R1,[R0, #+0]
//   58 	IOSET=dat;		//再送数
        LDR      R0,??DataTable11  ;; 0xe0028004
        STR      R4,[R0, #+0]
//   59 	IOSET=en;
        MOVS     R1,#+128
        LSLS     R1,R1,#+3        ;; #+1024
        STR      R1,[R0, #+0]
//   60 	IOCLR=en;
        LDR      R0,??DataTable15  ;; 0xe002800c
        STR      R1,[R0, #+0]
//   61 }
        POP      {R4}
        POP      {R0}
        BX       R0               ;; return
        CFI EndBlock cfiBlock5

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable11:
        DC32     0xe0028004

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock6 Using cfiCommon0
        CFI NoFunction
        ARM
??DisplayText??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock6
        REQUIRE DisplayText
//   62 
//   63 /****************************************************************************
//   64 * 名称:DisText()
//   65 * 功能:显示文本函数
//   66 ****************************************************************************/
//   67 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock7 Using cfiCommon1
        CFI Function DisplayText
        THUMB
//   68 void DisplayText(INT8U addr,INT8U *p)
//   69 {
DisplayText:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        MOVS     R4,R1
//   70 	WrOp(addr);
        BL       WrOp
        B        ??DisplayText_0
//   71 	while(*p !='\0')WrDat(*(p++));
??DisplayText_1:
        BL       WrDat
        ADDS     R4,R4,#+1
??DisplayText_0:
        LDRB     R0,[R4, #+0]
        CMP      R0,#+0
        BNE      ??DisplayText_1
//   72 }
        POP      {R4}
        POP      {R0}
        BX       R0               ;; return
        CFI EndBlock cfiBlock7

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock8 Using cfiCommon0
        CFI NoFunction
        ARM
??main??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock8
        REQUIRE main
//   73 /****************************************************************************
//   74 * 名称:main()
//   75 * 功能:显示文本
//   76 ****************************************************************************/
//   77 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock9 Using cfiCommon1
        CFI Function main
        THUMB
//   78  int main (void)
//   79 {
main:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
//   80     OSInit();
        _BLF     OSInit,??OSInit??rT
//   81 
//   82     OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 3);
        MOVS     R3,#+3
        LDR      R2,??main_0      ;; TaskStartStk + 252
        MOVS     R1,#+0
        LDR      R0,??main_0+0x4  ;; TaskStart
        _BLF     OSTaskCreate,??OSTaskCreate??rT
//   83     OSStart();
        _BLF     OSStart,??OSStart??rT
//   84 }
        MOVS     R0,#+0
        POP      {R1}
        BX       R1               ;; return
        DATA
??main_0:
        DC32     TaskStartStk + 252
        DC32     TaskStart
        CFI EndBlock cfiBlock9

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock10 Using cfiCommon0
        CFI NoFunction
        ARM
??TaskStart??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock10
        REQUIRE TaskStart
//   85 /****************************************************************************
//   86 * 名称:TaskStart()
//   87 * 功能:任务
//   88 ****************************************************************************/
//   89 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock11 Using cfiCommon1
        CFI Function TaskStart
        THUMB
//   90 void  TaskStart(void *pdata)
//   91 {   pdata=pdata;
TaskStart:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
//   92     BSP_Init();
        _BLF     BSP_Init,??BSP_Init??rT
//   93     WrOp(0x0c);
        MOVS     R0,#+12
        BL       WrOp
//   94     IODIR=0x7ff;		//设置为输出
        LDR      R0,??DataTable13  ;; 0xe0028008
        LDR      R1,??DataTable14  ;; 0x7ff
        STR      R1,[R0, #+0]
//   95     IOCLR=0x7ff;
        LDR      R0,??DataTable15  ;; 0xe002800c
        STR      R1,[R0, #+0]
//   96     DisplayText(0x86,txt);
        LDR      R1,??TaskStart_0  ;; txt
        MOVS     R0,#+134
        BL       DisplayText
//   97     while(1);
??TaskStart_1:
        B        ??TaskStart_1
        DATA
??TaskStart_0:
        DC32     txt
        CFI EndBlock cfiBlock11
//   98 }

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable13:
        DC32     0xe0028008

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable14:
        DC32     0x7ff

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable15:
        DC32     0xe002800c

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock12 Using cfiCommon1
        CFI NoFunction
        THUMB
??OSInit??rT:
        LDR      R3,??Subroutine6_0  ;; OSInit
        BX       R3
        DATA
??Subroutine6_0:
        DC32     OSInit
        CFI EndBlock cfiBlock12

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock13 Using cfiCommon1
        CFI NoFunction
        THUMB
??OSTaskCreate??rT:
        PUSH     {R3}
        CFI CFA R13+4
        LDR      R3,??Subroutine7_0  ;; OSTaskCreate
        MOV      R12,R3
        POP      {R3}
        CFI CFA R13+0
        BX       R12
        Nop      
        DATA
??Subroutine7_0:
        DC32     OSTaskCreate
        CFI EndBlock cfiBlock13

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock14 Using cfiCommon1
        CFI NoFunction
        THUMB
??OSStart??rT:
        LDR      R3,??Subroutine8_0  ;; OSStart
        BX       R3
        DATA
??Subroutine8_0:
        DC32     OSStart
        CFI EndBlock cfiBlock14

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock15 Using cfiCommon1
        CFI NoFunction
        THUMB
??BSP_Init??rT:
        LDR      R3,??Subroutine9_0  ;; BSP_Init
        BX       R3
        DATA
??Subroutine9_0:
        DC32     BSP_Init
        CFI EndBlock cfiBlock15

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for txt>`:
        DATA
        DC8 "helloworld"
        DC8 0

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?*?DATA_ID`:

        RSEG INITTAB:CODE:ROOT(2)
        DATA
?init?tab?DATA_I:
        DCD      sfe(DATA_I) - sfb(DATA_I), sfb(DATA_I), sfb(DATA_ID)

        RSEG INITTAB:CODE:ROOT(2)
        DATA
?init?tab?DATA_Z:
        DCD      sfe(DATA_Z) - sfb(DATA_Z), sfb(DATA_Z), sfb(DATA_Z)

        END
// 
// 362 bytes in segment CODE
//  20 bytes in segment DATA_AN
//  12 bytes in segment DATA_I
//  12 bytes in segment DATA_ID
// 256 bytes in segment DATA_Z
//  24 bytes in segment INITTAB
// 
// 274 bytes of CODE  memory (+ 112 bytes shared)
//  12 bytes of CONST memory
// 268 bytes of DATA  memory (+  20 bytes shared)
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

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