📄 main.lst
字号:
00000004 2200 MOV R2,#0x0
00000006 ---- Variable 'i' assigned to Register 'R2' ----
00000006 E00C B L_23 ; T=0x00000022
183: for(j=0; j<Timer2; j++)
00000008 L_30:
00000008 2400 MOV R4,#0x0
0000000A ---- Variable 'j' assigned to Register 'R4' ----
0000000A E005 B L_28 ; T=0x00000018
184: while(k>0) k--;
0000000C L_34:
0000000C E000 B L_31 ; T=0x00000010
0000000E L_33:
0000000E 3B01 SUB R3,#0x1
00000010 L_31:
00000010 1C1D MOV R5,R3 ; k
00000012 2D00 CMP R5,#0x0 ; k
00000014 D8FB BHI L_33 ; T=0x0000000E
00000016 3401 ADD R4,#0x1
00000018 L_28:
00000018 1C0E MOV R6,R1 ; Timer2
0000001A 1C25 MOV R5,R4 ; j
0000001C 42B5 CMP R5,R6 ; j
0000001E D3F5 BCC L_34 ; T=0x0000000C
185: }
00000020 3201 ADD R2,#0x1
00000022 L_23:
00000022 1C05 MOV R5,R0 ; Time1
00000024 1C14 MOV R4,R2 ; i
00000026 42AC CMP R4,R5 ; i
00000028 D3EE BCC L_30 ; T=0x00000008
0000002A ; SCOPE-END
186: }
0000002A BC70 POP {R4-R6}
0000002C 4770 BX R14
0000002E ENDP ; 'Delay?T'
*** CODE SEGMENT '?PR?main?main':
187: void main(void)
00000000 B500 PUSH {LR}
189: ADuC7026_Initiate(); //ADuC7026 Initialization
00000002 F7FF BL ADuC7026_Initiate?T ; T=0x0001 (1)
00000004 FFFD BL ADuC7026_Initiate?T ; T=0x0001 (2)
190: ADXL345_Initiate(); //ADXL345 Initialization
00000006 F7FF BL ADXL345_Initiate?T ; T=0x0001 (1)
00000008 FFFB BL ADXL345_Initiate?T ; T=0x0001 (2)
193: IsStart=0x00;
0000000A 2200 MOV R2,#0x0
ARM COMPILER V2.42, main 11/08/08 15:14:09 PAGE 17
0000000C 4800 LDR R0,=IsStart ; IsStart
0000000E 7002 STRB R2,[R0,#0x0] ; IsStart
196: ShakeStatus=0x00;
00000010 4800 LDR R0,=ShakeStatus ; ShakeStatus
00000012 7002 STRB R2,[R0,#0x0] ; ShakeStatus
197: LastShakeStatus=0x00;
00000014 4800 LDR R0,=LastShakeStatus ; LastShakeStatus
00000016 7002 STRB R2,[R0,#0x0] ; LastShakeStatus
198: ShakeDetectStep=0x00;
00000018 4800 LDR R0,=ShakeDetectStep ; ShakeDetectStep
0000001A 7002 STRB R2,[R0,#0x0] ; ShakeDetectStep
199: ShakeDetectCounter=0;
0000001C 2000 MOV R0,#0x0
0000001E 4800 LDR R1,=ShakeDetectCounter ; ShakeDetectCounter
00000020 6008 STR R0,[R1,#0x0] ; ShakeDetectCounter
200: ShakeStopCounter=0;
00000022 4800 LDR R1,=ShakeStopCounter ; ShakeStopCounter
00000024 6008 STR R0,[R1,#0x0] ; ShakeStopCounter
203: RotateStatus=0x00;
00000026 4800 LDR R1,=RotateStatus ; RotateStatus
00000028 700A STRB R2,[R1,#0x0] ; RotateStatus
204: LastRotateStatus=0x00;
0000002A 4800 LDR R1,=LastRotateStatus ; LastRotateStatus
0000002C 700A STRB R2,[R1,#0x0] ; LastRotateStatus
205: RotateCounter=0;
0000002E 4800 LDR R1,=RotateCounter ; RotateCounter
00000030 6008 STR R0,[R1,#0x0] ; RotateCounter
208: TapStatus=0x00;
00000032 4800 LDR R1,=TapStatus ; TapStatus
00000034 700A STRB R2,[R1,#0x0] ; TapStatus
209: TapCounter=0;
00000036 4800 LDR R1,=TapCounter ; TapCounter
00000038 6008 STR R0,[R1,#0x0] ; TapCounter
214: DevID=(unsigned char)I2C_READ_REGISTER(0x00); //get device ID first
0000003A F7FF BL I2C_READ_REGISTER?T ; T=0x0001 (1)
0000003C FFE1 BL I2C_READ_REGISTER?T ; T=0x0001 (2)
0000003E 4800 LDR R1,=DevID ; DevID
00000040 7008 STRB R0,[R1,#0x0] ; DevID
215: I2C_READ_REGISTER(0x30); //clear interrupt;
00000042 2030 MOV R0,#0x30
00000044 F7FF BL I2C_READ_REGISTER?T ; T=0x0001 (1)
00000046 FFDC BL I2C_READ_REGISTER?T ; T=0x0001 (2)
217: while(1) //Endless loop
00000048 L_37:
220: if(IsStart==0x01) // Start
00000048 4800 LDR R0,=IsStart ; IsStart
0000004A 7800 LDRB R0,[R0,#0x0] ; IsStart
0000004C 2801 CMP R0,#0x1
0000004E D1FB BNE L_37 ; T=0x00000048
222: Interrupt=(unsigned char)I2C_READ_REGISTER(0x30); // get interrupt status
00000050 2030 MOV R0,#0x30
00000052 F7FF BL I2C_READ_REGISTER?T ; T=0x0001 (1)
00000054 FFD5 BL I2C_READ_REGISTER?T ; T=0x0001 (2)
00000056 4800 LDR R1,=Interrupt ; Interrupt
00000058 7008 STRB R0,[R1,#0x0] ; Interrupt
226: if((Interrupt&0x04)==0x04) //freefall interrupt
0000005A 4800 LDR R0,=Interrupt ; Interrupt
0000005C 7800 LDRB R0,[R0,#0x0] ; Interrupt
0000005E 2104 MOV R1,#0x4
00000060 4208 TST R0,R1
00000062 D00A BEQ L_40 ; T=0x0000007A
232: TapStatus=0x40; // double tap assert
00000064 2140 MOV R1,#0x40
00000066 4800 LDR R0,=TapStatus ; TapStatus
00000068 7001 STRB R1,[R0,#0x0] ; TapStatus
233: TapCounter=0x00; // clear time counter,
ARM COMPILER V2.42, main 11/08/08 15:14:09 PAGE 18
0000006A 2100 MOV R1,#0x0
0000006C 4800 LDR R0,=TapCounter ; TapCounter
0000006E 6001 STR R1,[R0,#0x0] ; TapCounter
234: PutChar(TapStatus); // send status to PC demo
00000070 4800 LDR R0,=TapStatus ; TapStatus
00000072 7800 LDRB R0,[R0,#0x0] ; TapStatus
00000074 F7FF BL PutChar?T ; T=0x0001 (1)
00000076 FFC4 BL PutChar?T ; T=0x0001 (2)
239: }
00000078 E012 B L_41 ; T=0x000000A0
0000007A L_40:
242: if(TapCounter>=75) // wait for time counter overflow, then clear TapStatus,
0000007A 4800 LDR R0,=TapCounter ; TapCounter
0000007C 6802 LDR R2,[R0,#0x0] ; TapCounter
0000007E 2A4B CMP R2,#0x4B
00000080 D30A BCC L_42 ; T=0x00000098
244: TapStatus=0x00; // clear TapStatus
00000082 2100 MOV R1,#0x0
00000084 4800 LDR R0,=TapStatus ; TapStatus
00000086 7001 STRB R1,[R0,#0x0] ; TapStatus
245: TapCounter=0x00; // clear time counter,
00000088 2100 MOV R1,#0x0
0000008A 4800 LDR R0,=TapCounter ; TapCounter
0000008C 6001 STR R1,[R0,#0x0] ; TapCounter
246: PutChar(TapStatus); // send status to PC demo
0000008E 4800 LDR R0,=TapStatus ; TapStatus
00000090 7800 LDRB R0,[R0,#0x0] ; TapStatus
00000092 F7FF BL PutChar?T ; T=0x0001 (1)
00000094 FFB5 BL PutChar?T ; T=0x0001 (2)
247: }
00000096 E003 B L_41 ; T=0x000000A0
00000098 L_42:
248: else TapCounter++;
00000098 4800 LDR R0,=TapCounter ; TapCounter
0000009A 1C11 MOV R1,R2
0000009C 3101 ADD R1,#0x1
0000009E 6001 STR R1,[R0,#0x0] ; TapCounter
249: }
000000A0 L_41:
252: if((Interrupt&0x40)==0x40) //Single Tap interrupt,
000000A0 4800 LDR R0,=Interrupt ; Interrupt
000000A2 7800 LDRB R0,[R0,#0x0] ; Interrupt
000000A4 2140 MOV R1,#0x40
000000A6 4208 TST R0,R1
000000A8 D016 BEQ L_44 ; T=0x000000D8
254: if((RotateStatus==0x05) && (LastRotateStatus==0x05) )
000000AA 4800 LDR R0,=RotateStatus ; RotateStatus
000000AC 7800 LDRB R0,[R0,#0x0] ; RotateStatus
000000AE 2805 CMP R0,#0x5
000000B0 D125 BNE L_47 ; T=0x000000FE
000000B2 4800 LDR R0,=LastRotateStatus ; LastRotateStatus
000000B4 7800 LDRB R0,[R0,#0x0] ; LastRotateStatus
000000B6 2805 CMP R0,#0x5
000000B8 D121 BNE L_47 ; T=0x000000FE
256: if(TapStatus==0x00)
000000BA 4800 LDR R0,=TapStatus ; TapStatus
000000BC 7800 LDRB R0,[R0,#0x0] ; TapStatus
000000BE 2800 CMP R0,#0x0
000000C0 D11D BNE L_47 ; T=0x000000FE
258: TapStatus=0x20;
000000C2 2120 MOV R1,#0x20
000000C4 4800 LDR R0,=TapStatus ; TapStatus
000000C6 7001 STRB R1,[R0,#0x0] ; TapStatus
259: TapCounter=0x00;
000000C8 2100 MOV R1,#0x0
000000CA 4800 LDR R0,=TapCounter ; TapCounter
ARM COMPILER V2.42, main 11/08/08 15:14:09 PAGE 19
000000CC 6001 STR R1,[R0,#0x0] ; TapCounter
260: PutChar(TapStatus);
000000CE 4800 LDR R0,=TapStatus ; TapStatus
000000D0 7800 LDRB R0,[R0,#0x0] ; TapStatus
000000D2 F7FF BL PutChar?T ; T=0x0001 (1)
000000D4 FF95 BL PutChar?T ; T=0x0001 (2)
265: }
000000D6 E012 B L_47 ; T=0x000000FE
000000D8 L_44:
268: if(TapCounter>=75)
000000D8 4800 LDR R0,=TapCounter ; TapCounter
000000DA 6802 LDR R2,[R0,#0x0] ; TapCounter
000000DC 2A4B CMP R2,#0x4B
000000DE D30A BCC L_48 ; T=0x000000F6
270: TapStatus=0x00;
000000E0 2100 MOV R1,#0x0
000000E2 4800 LDR R0,=TapStatus ; TapStatus
000000E4 7001 STRB R1,[R0,#0x0] ; TapStatus
271: TapCounter=0x00;
000000E6 2100 MOV R1,#0x0
000000E8 4800 LDR R0,=TapCounter ; TapCounter
000000EA 6001 STR R1,[R0,#0x0] ; TapCounter
272: PutChar(TapStatus);
000000EC 4800 LDR R0,=TapStatus ; TapStatus
000000EE 7800 LDRB R0,[R0,#0x0] ; TapStatus
000000F0 F7FF BL PutChar?T ; T=0x0001 (1)
000000F2 FF86 BL PutChar?T ; T=0x0001 (2)
273: }
000000F4 E003 B L_47 ; T=0x000000FE
000000F6 L_48:
274: else TapCounter++;
000000F6 4800 LDR R0,=TapCounter ; TapCounter
000000F8 1C11 MOV R1,R2
000000FA 3101 ADD R1,#0x1
000000FC 6001 STR R1,[R0,#0x0] ; TapCounter
275: }
000000FE L_47:
278: if((Interrupt&0x80)==0x80) // Data Rdy interrupt, get X Y Z data for shake and rotate function
000000FE 4800 LDR R0,=Interrupt ; Interrupt
00000100 7800 LDRB R0,[R0,#0x0] ; Interrupt
00000102 2180 MOV R1,#0x80
00000104 4208 TST R0,R1
00000106 D100 BEQ $+4
00000108 E236 B L_50 ; T=0x00000578
282: DataX1=(unsigned char)I2C_READ_REGISTER(0x32);
0000010C 2032 MOV R0,#0x32
0000010E F7FF BL I2C_READ_REGISTER?T ; T=0x0001 (1)
00000110 FF77 BL I2C_READ_REGISTER?T ; T=0x0001 (2)
00000112 4800 LDR R1,=DataX1 ; DataX1
00000114 7008 STRB R0,[R1,#0x0] ; DataX1
283: DataX2=(unsigned char)I2C_READ_REGISTER(0x33);
00000116 2033 MOV R0,#0x33
00000118 F7FF BL I2C_READ_REGISTER?T ; T=0x0001 (1)
0000011A FF72 BL I2C_READ_REGISTER?T ; T=0x0001 (2)
0000011C 4800 LDR R1,=DataX2 ; DataX2
0000011E 7008 STRB R0,[R1,#0x0] ; DataX2
284: DataY1=(unsigned char)I2C_READ_REGISTER(0x34);
00000120 2034 MOV R0,#0x34
00000122 F7FF BL I2C_READ_REGISTER?T ; T=0x0001 (1)
00000124 FF6D BL I2C_READ_REGISTER?T ; T=0x0001 (2)
00000126 4800 LDR R1,=DataY1 ; DataY1
00000128 7008 STRB R0,[R1,#0x0] ; DataY1
285: DataY2=(unsigned char)I2C_READ_REGISTER(0x35);
0000012A 2035 MOV R0,#0x35
0000012C F7FF BL I2C_READ_REGISTER?T ; T=0x0001 (1)
0000012E FF68 BL I2C_READ_REGISTER?T ; T=0x0001 (2)
ARM COMPILER V2.42, main 11/08/08 15:14:09 PAGE 20
00000130 4800 LDR R1,=DataY2 ; DataY2
00000132 7008 STRB R0,[R1,#0x0] ; DataY2
286: DataZ1=(unsigned char)I2C_READ_REGISTER(0x36);
00000134 2036 MOV R0,#0x36
00000136 F7FF BL I2C_READ_REGISTER?T ; T=0x0001 (1)
00000138 FF63 BL I2C_READ_REGISTER?T ; T=0x0001 (2)
0000013A 4800 LDR R1,=DataZ1 ; DataZ1
0000013C 7008 STRB R0,[R1,#0x0] ; DataZ1
287: DataZ2=(unsigned char)I2C_READ_REGISTER(0x37);
0000013E 2037 MOV R
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -