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

📄 main.lst

📁 我找的ADXL345的代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -