There is simple code
usRDelay(17); Comm_LineOut_Port=SendData.B.Bit02; usRDelay(17); Comm_LineOut_Port=SendData.B.Bit01; usRDelay(17); Comm_LineOut_Port=SendData.B.Bit00; usRDelay(17); Comm_LineOut_Port=1;
I compiled it by keil for arm ver v4.53.0.0(coretex m3)
I got below assambly code
But I meet unexpected code line 0083ae
0083ae e00b B |L1.33736| |L1.33712| DCD TimeAlarmFlags |L1.33716| DCD PwrOn_Redy_Cnt |L1.33720| DCD TimeFlags |L1.33724| DCD PCU_C |L1.33728| DCD GPIO_C |L1.33732| DCD uR0 |L1.33736|
So fuction usRDelay(17); is more delayed. Why unexpected code is generated? What is that code? (p.s. TimeAlarmFlags is defined unsigned char by me, but why that is suddenly located?)
;;;7580 usRDelay(17); 008346 2011 MOVS r0,#0x11 008348 491e LDR r1,|L1.33732| 00834a 7008 STRB r0,[r1,#0] 00834c bf00 NOP |L1.33614| 00834e 481d LDR r0,|L1.33732| 008350 7800 LDRB r0,[r0,#0] ; uR0 008352 1e40 SUBS r0,r0,#1 008354 f01000ff ANDS r0,r0,#0xff 008358 491a LDR r1,|L1.33732| 00835a 7008 STRB r0,[r1,#0] 00835c d1f7 BNE |L1.33614| ;;;7581 Comm_LineOut_Port=SendData.B.Bit02; 00835e f89d0000 LDRB r0,[sp,#0] 008362 f3c00180 UBFX r1,r0,#2,#1 008366 4816 LDR r0,|L1.33728| 008368 6800 LDR r0,[r0,#0] ; GPIO_C 00836a 6800 LDR r0,[r0,#0] 00836c f36120cb BFI r0,r1,#11,#1 008370 4913 LDR r1,|L1.33728| 008372 6809 LDR r1,[r1,#0] ; GPIO_C 008374 6008 STR r0,[r1,#0] ;;;7582 usRDelay(17); 008376 2011 MOVS r0,#0x11 008378 4912 LDR r1,|L1.33732| 00837a 7008 STRB r0,[r1,#0] 00837c bf00 NOP |L1.33662| 00837e 4811 LDR r0,|L1.33732| 008380 7800 LDRB r0,[r0,#0] ; uR0 008382 1e40 SUBS r0,r0,#1 008384 f01000ff ANDS r0,r0,#0xff 008388 490e LDR r1,|L1.33732| 00838a 7008 STRB r0,[r1,#0] 00838c d1f7 BNE |L1.33662| ;;;7583 Comm_LineOut_Port=SendData.B.Bit01; 00838e f89d0000 LDRB r0,[sp,#0] 008392 f3c00140 UBFX r1,r0,#1,#1 008396 480a LDR r0,|L1.33728| 008398 6800 LDR r0,[r0,#0] ; GPIO_C 00839a 6800 LDR r0,[r0,#0] 00839c f36120cb BFI r0,r1,#11,#1 0083a0 4907 LDR r1,|L1.33728| 0083a2 6809 LDR r1,[r1,#0] ; GPIO_C 0083a4 6008 STR r0,[r1,#0] ;;;7584 usRDelay(17); 0083a6 2011 MOVS r0,#0x11 0083a8 4906 LDR r1,|L1.33732| 0083aa 7008 STRB r0,[r1,#0] 0083ac bf00 NOP |L1.33710| 0083ae e00b B |L1.33736| |L1.33712| DCD TimeAlarmFlags |L1.33716| DCD PwrOn_Redy_Cnt |L1.33720| DCD TimeFlags |L1.33724| DCD PCU_C |L1.33728| DCD GPIO_C |L1.33732| DCD uR0 |L1.33736| 0083c8 48fb LDR r0,|L1.34744| 0083ca 7800 LDRB r0,[r0,#0] ; uR0 0083cc 1e40 SUBS r0,r0,#1 0083ce f01000ff ANDS r0,r0,#0xff 0083d2 49f9 LDR r1,|L1.34744| 0083d4 7008 STRB r0,[r1,#0] 0083d6 d1ea BNE |L1.33710| ;;;7585 Comm_LineOut_Port=SendData.B.Bit00; 0083d8 f89d0000 LDRB r0,[sp,#0] 0083dc 49f7 LDR r1,|L1.34748| 0083de 6809 LDR r1,[r1,#0] ; GPIO_C 0083e0 6809 LDR r1,[r1,#0] 0083e2 f36021cb BFI r1,r0,#11,#1 0083e6 48f5 LDR r0,|L1.34748| 0083e8 6800 LDR r0,[r0,#0] ; GPIO_C 0083ea 6001 STR r1,[r0,#0] ;;;7586 usRDelay(17); 0083ec 2011 MOVS r0,#0x11 0083ee 49f2 LDR r1,|L1.34744| 0083f0 7008 STRB r0,[r1,#0] 0083f2 bf00 NOP |L1.33780| 0083f4 48f0 LDR r0,|L1.34744| 0083f6 7800 LDRB r0,[r0,#0] ; uR0 0083f8 1e40 SUBS r0,r0,#1 0083fa f01000ff ANDS r0,r0,#0xff 0083fe 49ee LDR r1,|L1.34744| 008400 7008 STRB r0,[r1,#0] 008402 d1f7 BNE |L1.33780| ;;;7587 ;;;7588 Comm_LineOut_Port=1; 008404 48ed LDR r0,|L1.34748| 008406 6800 LDR r0,[r0,#0] ; GPIO_C 008408 6800 LDR r0,[r0,#0] 00840a f4206000 BIC r0,r0,#0x800 00840e f5006000 ADD r0,r0,#0x800 008412 49ea LDR r1,|L1.34748| 008414 6809 LDR r1,[r1,#0] ; GPIO_C 008416 6008 STR r0,[r1,#0]
. . . .. (skip). . . . . ;;;7581 Comm_LineOut_Port=SendData.B.Bit02; 00835e f89d0000 LDRB r0,[sp,#0] 008362 f3c00180 UBFX r1,r0,#2,#1 008366 4816 LDR r0,|L1.33728| 008368 6800 LDR r0,[r0,#0] ; GPIO_C 00836a 6800 LDR r0,[r0,#0] 00836c f36120cb BFI r0,r1,#11,#1 008370 4913 LDR r1,|L1.33728| 008372 6809 LDR r1,[r1,#0] ; GPIO_C 008374 6008 STR r0,[r1,#0] ;;;7582 usRDelay(17); 008376 2011 MOVS r0,#0x11 008378 4912 LDR r1,|L1.33732| 00837a 7008 STRB r0,[r1,#0] 00837c bf00 NOP |L1.33662| 00837e 4811 LDR r0,|L1.33732| 008380 7800 LDRB r0,[r0,#0] ; uR0 008382 1e40 SUBS r0,r0,#1 008384 f01000ff ANDS r0,r0,#0xff 008388 490e LDR r1,|L1.33732| 00838a 7008 STRB r0,[r1,#0] 00838c d1f7 BNE |L1.33662| ;;;7583 Comm_LineOut_Port=SendData.B.Bit01; 00838e f89d0000 LDRB r0,[sp,#0] 008392 f3c00140 UBFX r1,r0,#1,#1 008396 480a LDR r0,|L1.33728| 008398 6800 LDR r0,[r0,#0] ; GPIO_C 00839a 6800 LDR r0,[r0,#0] 00839c f36120cb BFI r0,r1,#11,#1 0083a0 4907 LDR r1,|L1.33728| 0083a2 6809 LDR r1,[r1,#0] ; GPIO_C 0083a4 6008 STR r0,[r1,#0] ;;;7584 usRDelay(17); 0083a6 2011 MOVS r0,#0x11 0083a8 4906 LDR r1,|L1.33732| 0083aa 7008 STRB r0,[r1,#0] 0083ac bf00 NOP |L1.33710| 0083ae e00b B |L1.33736| |L1.33712| DCD TimeAlarmFlags |L1.33716| DCD PwrOn_Redy_Cnt |L1.33720| DCD TimeFlags |L1.33724| DCD PCU_C |L1.33728| DCD GPIO_C |L1.33732| DCD uR0 |L1.33736| 0083c8 48fb LDR r0,|L1.34744| 0083ca 7800 LDRB r0,[r0,#0] ; uR0 0083cc 1e40 SUBS r0,r0,#1 0083ce f01000ff ANDS r0,r0,#0xff 0083d2 49f9 LDR r1,|L1.34744| 0083d4 7008 STRB r0,[r1,#0] 0083d6 d1ea BNE |L1.33710| ;;;7585 Comm_LineOut_Port=SendData.B.Bit00; 0083d8 f89d0000 LDRB r0,[sp,#0] 0083dc 49f7 LDR r1,|L1.34748| 0083de 6809 LDR r1,[r1,#0] ; GPIO_C 0083e0 6809 LDR r1,[r1,#0] 0083e2 f36021cb BFI r1,r0,#11,#1 0083e6 48f5 LDR r0,|L1.34748| 0083e8 6800 LDR r0,[r0,#0] ; GPIO_C 0083ea 6001 STR r1,[r0,#0] ;;;7586 usRDelay(17); 0083ec 2011 MOVS r0,#0x11 0083ee 49f2 LDR r1,|L1.34744| 0083f0 7008 STRB r0,[r1,#0] 0083f2 bf00 NOP |L1.33780| 0083f4 48f0 LDR r0,|L1.34744| 0083f6 7800 LDRB r0,[r0,#0] ; uR0 0083f8 1e40 SUBS r0,r0,#1 0083fa f01000ff ANDS r0,r0,#0xff 0083fe 49ee LDR r1,|L1.34744| 008400 7008 STRB r0,[r1,#0] 008402 d1f7 BNE |L1.33780| ;;;7587 ;;;7588 Comm_LineOut_Port=1; 008404 48ed LDR r0,|L1.34748| 008406 6800 LDR r0,[r0,#0] ; GPIO_C 008408 6800 LDR r0,[r0,#0] 00840a f4206000 BIC r0,r0,#0x800 00840e f5006000 ADD r0,r0,#0x800 008412 49ea LDR r1,|L1.34748| 008414 6809 LDR r1,[r1,#0] ; GPIO_C 008416 6008 STR r0,[r1,#0] ;;;7589 CSP_PCU_Set_Direction_Type(PCU_C, PIN_11, PnCR_INPUT_LOGIC);//ìž…ë ¥ 008418 2202 MOVS r2,#2 00841a 210b MOVS r1,#0xb 00841c 48e8 LDR r0,|L1.34752| 00841e 6800 LDR r0,[r0,#0] ; PCU_C 008420 f7fffffe BL CSP_PCU_Set_Direction_Type ;;;7590 ;;;7591 __enable_irq(); 008424 b662 CPSIE i ;;;7592 ;;;7593 return (UINT8)bR1.U; 008426 f89d0004 LDRB r0,[sp,#4] ;;;7594 ;;;7595 } 00842a bd1c POP {r2-r4,pc} ;;;7596 ENDP