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

📄 app.txt

📁 IARSOURCECODE是基于LPC2478嵌入式软件IAR EWARM V4.42的应用实例代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
0001ac  e1a0a82a          LSR      r10,r10,#16
0001b0  e3a01ffa          MOV      r1,#0x3e8
0001b4  e59d0000          LDR      r0,[sp,#0]
0001b8  ebfffffe          BL       __aeabi_uidivmod
0001bc  e200b0ff          AND      r11,r0,#0xff
0001c0  e1a0300a          MOV      r3,r10
0001c4  e1a0200b          MOV      r2,r11
0001c8  e3a01000          MOV      r1,#0
0001cc  e1a00001          MOV      r0,r1
0001d0  ebfffffe          BL       OSTimeDlyHMSM
0001d4  e2840001          ADD      r0,r4,#1
0001d8  e20040ff          AND      r4,r0,#0xff
                  |L1.476|
0001dc  e3540004          CMP      r4,#4
0001e0  daffffe7          BLE      |L1.388|
;;;159            }
;;;160    
;;;161            LED_Off(0);                                             /* Turn off all LEDs                                        */
0001e4  e3a00000          MOV      r0,#0
0001e8  ebfffffe          BL       LED_Off
;;;162            delay0      = ADC_GetStatus(0) + 32;
0001ec  e3a00000          MOV      r0,#0
0001f0  ebfffffe          BL       ADC_GetStatus
0001f4  e2800020          ADD      r0,r0,#0x20
0001f8  e58d0000          STR      r0,[sp,#0]
;;;163            OSTimeDlyHMSM(0, 0, delay0 / 1000, delay0 % 1000);      /* Delay                                                    */
0001fc  e3a01ffa          MOV      r1,#0x3e8
000200  e59d0000          LDR      r0,[sp,#0]
000204  ebfffffe          BL       __aeabi_uidivmod
000208  e1a0a801          LSL      r10,r1,#16
00020c  e1a0a82a          LSR      r10,r10,#16
000210  e3a01ffa          MOV      r1,#0x3e8
000214  e59d0000          LDR      r0,[sp,#0]
000218  ebfffffe          BL       __aeabi_uidivmod
00021c  e200b0ff          AND      r11,r0,#0xff
000220  e1a0300a          MOV      r3,r10
000224  e1a0200b          MOV      r2,r11
000228  e3a01000          MOV      r1,#0
00022c  e1a00001          MOV      r0,r1
000230  ebfffffe          BL       OSTimeDlyHMSM
;;;164    
;;;165                                                                    /* Determine what buttons have been pressed                 */
;;;166            leds        = 0;
000234  e3a08000          MOV      r8,#0
;;;167            while (1) {
000238  ea000010          B        |L1.640|
                  |L1.572|
;;;168                msg     = OSQAccept(AppKbdQ, &err);
00023c  e28d1004          ADD      r1,sp,#4
000240  e59f00ec          LDR      r0,|L1.820|
000244  e5900000          LDR      r0,[r0,#0]  ; AppKbdQ
000248  ebfffffe          BL       OSQAccept
00024c  e1a06000          MOV      r6,r0
;;;169    
;;;170                if (err == OS_Q_EMPTY || msg == (void *)0) {
000250  e5dd0004          LDRB     r0,[sp,#4]
000254  e350001f          CMP      r0,#0x1f
000258  0a000001          BEQ      |L1.612|
00025c  e3560000          CMP      r6,#0
000260  1a000000          BNE      |L1.616|
                  |L1.612|
;;;171                    break;
000264  ea000006          B        |L1.644|
                  |L1.616|
;;;172                }
;;;173    
;;;174                led     = (CPU_INT32U)msg;
000268  e20670ff          AND      r7,r6,#0xff
;;;175    
;;;176                if (led > 4) {
00026c  e3570004          CMP      r7,#4
000270  da000000          BLE      |L1.632|
;;;177                    break;
000274  ea000002          B        |L1.644|
                  |L1.632|
;;;178                }
;;;179    
;;;180                leds   |= (1 << led);
000278  e3a00001          MOV      r0,#1
00027c  e1888710          ORR      r8,r8,r0,LSL r7
                  |L1.640|
000280  eaffffed          B        |L1.572|
                  |L1.644|
000284  e1a00000          MOV      r0,r0
;;;181            }
;;;182    
;;;183                                                                    /* If no buttons have been pressed, continue at beginning   */
;;;184            if (leds == 0) {
000288  e3580000          CMP      r8,#0
00028c  1a000000          BNE      |L1.660|
;;;185                continue;
000290  ea000026          B        |L1.816|
                  |L1.660|
;;;186            }
;;;187    
;;;188                                                                    /* Otherwise, blink LEDs that were pressed 20 times         */
;;;189            for (j = 0; j < 20; j++) {
000294  e3a05000          MOV      r5,#0
000298  ea000021          B        |L1.804|
                  |L1.668|
;;;190                for (i = 1; i <= 4; i++) {
00029c  e3a04001          MOV      r4,#1
0002a0  ea000009          B        |L1.716|
                  |L1.676|
;;;191                    if ((leds & (1 << i)) == (1 << i)) {
0002a4  e3a00001          MOV      r0,#1
0002a8  e0080410          AND      r0,r8,r0,LSL r4
0002ac  e3a01001          MOV      r1,#1
0002b0  e1a01411          LSL      r1,r1,r4
0002b4  e1500001          CMP      r0,r1
0002b8  1a000001          BNE      |L1.708|
;;;192                        LED_Toggle(i);
0002bc  e1a00004          MOV      r0,r4
0002c0  ebfffffe          BL       LED_Toggle
                  |L1.708|
0002c4  e2840001          ADD      r0,r4,#1
0002c8  e20040ff          AND      r4,r0,#0xff
                  |L1.716|
0002cc  e3540004          CMP      r4,#4
0002d0  dafffff3          BLE      |L1.676|
;;;193                    }
;;;194                }
;;;195                delay1  = (ADC_GetStatus(1) >> 2) + 32;
0002d4  e3a00001          MOV      r0,#1
0002d8  ebfffffe          BL       ADC_GetStatus
0002dc  e3a01020          MOV      r1,#0x20
0002e0  e0819140          ADD      r9,r1,r0,ASR #2
;;;196                OSTimeDlyHMSM(0, 0, delay1 / 1000, delay1 % 1000);
0002e4  e3a01ffa          MOV      r1,#0x3e8
0002e8  e1a00009          MOV      r0,r9
0002ec  ebfffffe          BL       __aeabi_uidivmod
0002f0  e1a0a801          LSL      r10,r1,#16
0002f4  e1a0a82a          LSR      r10,r10,#16
0002f8  e3a01ffa          MOV      r1,#0x3e8
0002fc  e1a00009          MOV      r0,r9
000300  ebfffffe          BL       __aeabi_uidivmod
000304  e200b0ff          AND      r11,r0,#0xff
000308  e1a0300a          MOV      r3,r10
00030c  e1a0200b          MOV      r2,r11
000310  e3a01000          MOV      r1,#0
000314  e1a00001          MOV      r0,r1
000318  ebfffffe          BL       OSTimeDlyHMSM
00031c  e2850001          ADD      r0,r5,#1
000320  e20050ff          AND      r5,r0,#0xff
                  |L1.804|
000324  e3550014          CMP      r5,#0x14
000328  baffffdb          BLT      |L1.668|
00032c  e1a00000          MOV      r0,r0
                  |L1.816|
000330  eaffff91          B        |L1.380|
                  |L1.820|
000334  00000000          DCD      ||.data||
                  |L1.824|
000338  00000800          DCD      ||.bss||+0x800
                  |L1.828|
00033c  00000ffc          DCD      ||.bss||+0xffc
                  |L1.832|
000340  4b657962          DCB      "Keyb"
000344  6f617264          DCB      "oard"
000348  00000000          DCB      "\0\0\0\0"
                  |L1.844|
00034c  0001c200          DCD      0x0001c200
                  |L1.848|
000350  00001000          DCD      ||.bss||+0x1000
                          ENDP

                  main PROC
;;;76     int  main (void)
;;;77     {
000354  e52de004          PUSH     {lr}
000358  e24dd01c          SUB      sp,sp,#0x1c
;;;78         CPU_INT08U  err;
;;;79     
;;;80     
;;;81         BSP_IntDisAll();                                            /* Disable all interrupts until we are ready to accept them */
00035c  ebfffffe          BL       BSP_IntDisAll
;;;82     
;;;83         OSInit();                                                   /* Initialize "uC/OS-II, The Real-Time Kernel"              */
000360  ebfffffe          BL       OSInit
;;;84     
;;;85         OSTaskCreateExt(AppTaskStart,                               /* Create the start task                                    */
000364  e3a03003          MOV      r3,#3
000368  e3a02000          MOV      r2,#0
00036c  e3a01c02          MOV      r1,#0x200
000370  e59f003c          LDR      r0,|L1.948|
000374  e98d000f          STMIB    sp,{r0-r3}
000378  e3a03001          MOV      r3,#1
00037c  e59f2034          LDR      r2,|L1.952|
000380  e3a01000          MOV      r1,#0
000384  e24f0f95          ADR      r0,AppTaskStart
000388  e58d3000          STR      r3,[sp,#0]
00038c  ebfffffe          BL       OSTaskCreateExt
;;;86                         (void *)0,
;;;87                         (OS_STK *)&AppTaskStartStk[APP_TASK_START_STK_SIZE - 1],
;;;88                         APP_TASK_START_PRIO,
;;;89                         APP_TASK_START_PRIO,
;;;90                         (OS_STK *)&AppTaskStartStk[0],
;;;91                         APP_TASK_START_STK_SIZE,
;;;92                         (void *)0,
;;;93                         OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
;;;94     
;;;95     
;;;96     
;;;97     #if OS_TASK_NAME_SIZE > 13
;;;98         OSTaskNameSet(APP_TASK_START_PRIO, "Start Task", &err);
000390  e28d2018          ADD      r2,sp,#0x18
000394  e28f1020          ADR      r1,|L1.956|
000398  e3a00001          MOV      r0,#1
00039c  ebfffffe          BL       OSTaskNameSet
;;;99     #endif
;;;100    
;;;101        OSStart();                                                  /* Start multitasking (i.e. give control to uC/OS-II)       */
0003a0  ebfffffe          BL       OSStart
;;;102    }
0003a4  e3a00000          MOV      r0,#0
0003a8  e28dd01c          ADD      sp,sp,#0x1c
0003ac  e49de004          POP      {lr}
0003b0  e12fff1e          BX       lr
                          ENDP

                  |L1.948|
0003b4  00000000          DCD      ||.bss||
                  |L1.952|
0003b8  000007fc          DCD      ||.bss||+0x7fc
                  |L1.956|
0003bc  53746172          DCB      "Star"
0003c0  74205461          DCB      "t Ta"
0003c4  736b0000          DCB      "sk\0\0"

                          AREA ||.data||, DATA, ALIGN=2

                  AppKbdQ
000000  00000000          DCD      0x00000000

                          AREA ||.bss||, DATA, NOINIT, ALIGN=2

                  AppTaskStartStk
                          %        2048
                  AppTaskKbdStk
                          %        2048
                  AppKbdQStorage
                          %        64

                  __ARM_use_no_argv EQU 0

⌨️ 快捷键说明

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