; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\Int_RAM\blinky.o --depend=.\Int_RAM\blinky.d --device=DARMP3 --apcs=interwork -O0 -IC:\keil\ARM\INC\Freescale -D__MICROLIB --omf_browse=.\Int_RAM\blinky.crf Blinky.c]
                          ARM

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  wait PROC
;;;21     
;;;22     void wait (unsigned int delay) {  
000000  e1a00000          MOV      r0,r0
                  |L1.4|
;;;23       while (delay--);  
000004  e1b01000          MOVS     r1,r0
000008  e2400001          SUB      r0,r0,#1
00000c  1afffffc          BNE      |L1.4|
;;;24     }
000010  e12fff1e          BX       lr
;;;25     
                          ENDP

                  main PROC
;;;26     
;;;27     int main (void)  {
000014  e92d4010          PUSH     {r4,lr}
;;;28       int num = -1;
000018  e3e03000          MVN      r3,#0
;;;29       int dir =  1;
00001c  e3a04001          MOV      r4,#1
;;;30       
;;;31       for (;;) {                            /* Loop forever                       */
000020  e1a00000          MOV      r0,r0
;;;32         /* Calculate 'num': 0, 1, ... , LED_NUM-1, LED_NUM-1, ... , 1, 0, 0, ...  */
;;;33         num += dir;
000024  e0833004          ADD      r3,r3,r4
;;;34         if (num == LED_NUM) { dir = -1; num =  LED_NUM-1; } 
000028  e3530002          CMP      r3,#2
00002c  1a000002          BNE      |L1.60|
000030  e1a00000          MOV      r0,r0
000034  e3a03001          MOV      r3,#1
000038  ea000003          B        |L1.76|
                  |L1.60|
;;;35         else if   (num < 0) { dir =  1; num =  0;         }
00003c  e3530000          CMP      r3,#0
000040  aa000001          BGE      |L1.76|
000044  e1a00000          MOV      r0,r0
000048  e3a03000          MOV      r3,#0
                  |L1.76|
;;;36     
;;;37         REG16(GPIO) |=  led_mask[num];  /* Turn On  LED with index 'num'      */
00004c  e59f0024          LDR      r0,|L1.120|
000050  e1d000b0          LDRH     r0,[r0,#0]
000054  e59f1020          LDR      r1,|L1.124|
000058  e7911103          LDR      r1,[r1,r3,LSL #2]
00005c  e1800001          ORR      r0,r0,r1
000060  e59f1010          LDR      r1,|L1.120|
000064  e1c100b0          STRH     r0,[r1,#0]
;;;38         wait(5000000);
000068  e59f0010          LDR      r0,|L1.128|
00006c  ebfffffe          BL       wait
;;;39     
;;;40     	while(1);
000070  e1a00000          MOV      r0,r0
                  |L1.116|
000074  eafffffe          B        |L1.116|
;;;41         REG16(GPIO) &= ~led_mask[num];  /* Turn Off LED with index 'num'      */
;;;42         wait(5000000);
;;;43       }
;;;44     }
                          ENDP

                  |L1.120|
                          DCD      0xcc800000
                  |L1.124|
                          DCD      led_mask
                  |L1.128|
                          DCD      0x004c4b40

                          AREA ||.constdata||, DATA, READONLY, ALIGN=2

                  led_mask
                          DCD      0x00008000
                          DCD      0x00004000

                  __ARM_use_no_argv EQU 0
