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

📄 main.lst

📁 基于陀螺仪原理的惯性导航程序 用于测量量角速度
💻 LST
📖 第 1 页 / 共 4 页
字号:
 0000017C  E280001E  ADD         R0,R0,#0x001E
 00000180  E1500001  CMP         R0,R1
 00000184  AA000003  BGE         L_13  ; Targ=0x198
   92:                 ZERO_V--;
 00000188  E5100000  LDR         R0,=ZERO_V ; ZERO_V
 0000018C  E5901000  LDR         R1,[R0,#0x0] ; ZERO_V
 00000190  E2411001  SUB         R1,R1,#0x0001
 00000194  E5801000  STR         R1,[R0,#0x0] ; ZERO_V
   94:         }
 00000198          L_13:
   95:         z_temp1 = z_temp;
 00000198  E5100000  LDR         R0,=z_temp ; z_temp
 0000019C  E5901000  LDR         R1,[R0,#0x0] ; z_temp
 000001A0  E5100000  LDR         R0,=z_temp1 ; z_temp1
 000001A4  E5801000  STR         R1,[R0,#0x0] ; z_temp1
   96:         z_temp = 0;
 000001A8  E3A01000  MOV         R1,#0x0
 000001AC  E5100000  LDR         R0,=z_temp ; z_temp
 000001B0  E5801000  STR         R1,[R0,#0x0] ; z_temp
   97:         z_time = 0; 
 000001B4  E3A01000  MOV         R1,#0x0
 000001B8  E5100000  LDR         R0,=z_time ; z_time
 000001BC  E5801000  STR         R1,[R0,#0x0] ; z_time
   98:         x++;
 000001C0  E5100000  LDR         R0,=x ; x
 000001C4  E2851001  ADD         R1,R5,#0x0001
 000001C8  E5801000  STR         R1,[R0,#0x0] ; x
  100:         if(x>30)
 000001CC  E5100000  LDR         R0,=x ; x
 000001D0  E5901000  LDR         R1,[R0,#0x0] ; x
 000001D4  E351001E  CMP         R1,#0x001E
ARM COMPILER V2.53,  main                                                                  22/09/07  23:08:04  PAGE 11  

 000001D8  9A000001  BLS         L_16  ; Targ=0x1E4
  102:             z_i=7;
 000001DC  E3A03007  MOV         R3,#0x7
  103:             z_j=30;
 000001E0  E3A0201E  MOV         R2,#0x1E
  104:         }
 000001E4          L_16:
  105:         if(x>50)
 000001E4  E3510032  CMP         R1,#0x0032
 000001E8  9A000000  BLS         L_5  ; Targ=0x1F0
  107:             z_i=150;
 000001EC  E3A03096  MOV         R3,#0x96
  110:     }
 000001F0          L_5:
 000001F0  E1A00004  MOV         R0,R4 ; flag_demarcate
 000001F4  E1A00C00  MOV         R0,R0,LSL #24 ; flag_demarcate
 000001F8  E1A00C20  MOV         R0,R0,LSR #24
 000001FC  E3A05006  MOV         R5,#0x6
 00000200  E0000095  MUL         R0,R5,R0
 00000204  E2800039  ADD         R0,R0,#0x0039
 00000208  E1510000  CMP         R1,R0
 0000020C  3AFFFF99  BCC         L_8  ; Targ=0x78
 00000210            ; SCOPE-END
  115: }
 00000210  E8BD00F0  LDMIA       R13!,{R4-R7}
 00000214  E8BD0008  LDMIA       R13!,{R3}
 00000218  E12FFF13  BX          R3
 0000021C          ENDP ; 'demarcate?A'


*** CODE SEGMENT '?PR?SysClkInit?A?main':
  119:      PLLKEY1=0xAA;
 00000000  E3A010AA  MOV         R1,#0xAA
 00000004  E5100000  LDR         R0,=0xFFFF0410
 00000008  E5801000  STR         R1,[R0,#0x0]
  120:      PLLCON=0x01;   //PLL配置  
 0000000C  E3A01001  MOV         R1,#0x1
 00000010  E5100000  LDR         R0,=0xFFFF0414
 00000014  E5801000  STR         R1,[R0,#0x0]
  121:      PLLKEY2=0x55;
 00000018  E3A02055  MOV         R2,#0x55
 0000001C  E5100000  LDR         R0,=0xFFFF0418
 00000020  E5802000  STR         R2,[R0,#0x0]
  122:      POWKEY1=0x01;
 00000024  E5100000  LDR         R0,=0xFFFF0404
 00000028  E5801000  STR         R1,[R0,#0x0]
  123:      POWCON=0x00;  //CPU时钟配置为41.78MHz
 0000002C  E3A01000  MOV         R1,#0x0
 00000030  E5100000  LDR         R0,=0xFFFF0408
 00000034  E5801000  STR         R1,[R0,#0x0]
  124:      POWKEY2=0xF4;
 00000038  E3A010F4  MOV         R1,#0xF4
 0000003C  E5100000  LDR         R0,=0xFFFF040C
 00000040  E5801000  STR         R1,[R0,#0x0]
  126: }
 00000044  E12FFF1E  BX          R14
 00000048          ENDP ; 'SysClkInit?A'


*** CODE SEGMENT '?PR?FIQ_Handler?A?main':
  132: void FIQ_Handler(void) __fiq   //FIQ中断服务程序
 00000000  E92D401F  STMDB       R13!,{R0-R4,LR}
  133: { 
 00000004            ; SCOPE-START
  135:       WatchDog();
 00000004  E3A04A01  MOV         R4,#0x1000
 00000008  E5108000  LDR         R0,=0xFFFF0360
 0000000C  E5884000  STR         R4,[R8,#0x0]
 00000010  E3A090FF  MOV         R9,#0xFF
 00000014  E5108000  LDR         R0,=0xFFFF036C
ARM COMPILER V2.53,  main                                                                  22/09/07  23:08:04  PAGE 12  

 00000018  E5889000  STR         R9,[R8,#0x0]
  137:     if(FIQSTA & TIMER0)    //读取FIQ中断状态,判断FIQ中断源
 0000001C  E5108000  LDR         R0,=0xFFFF0100
 00000020  E5988000  LDR         R8,[R8,#0x0]
 00000024  E3180004  TST         R8,#0x0004
 00000028  0A000041  BEQ         L_18  ; Targ=0x134
  139:         T0CLRI=0;                //清Timer0中断
 0000002C  E3A09000  MOV         R9,#0x0
 00000030  E5108000  LDR         R0,=0xFFFF030C
 00000034  E5889000  STR         R9,[R8,#0x0]
  140:         AD_value[0]=AD_value[1];
 00000038  E5108000  LDR         R0,=AD_value + 0x2 ; AD_value+2
 0000003C  E1D890B0  LDRH        R9,[R8,#0x0] ; AD_value+2
 00000040  E5108000  LDR         R0,=AD_value ; AD_value
 00000044  E1C890B0  STRH        R9,[R8,#0x0] ; AD_value
  141:         AD_value[1]=AD_value[2];
 00000048  E5108000  LDR         R0,=AD_value + 0x4 ; AD_value+4
 0000004C  E1D890B0  LDRH        R9,[R8,#0x0] ; AD_value+4
 00000050  E5108000  LDR         R0,=AD_value + 0x2 ; AD_value+2
 00000054  E1C890B0  STRH        R9,[R8,#0x0] ; AD_value+2
  143:         AD_value[2]=read_ADC(2); //根据通道号读ADC的值
 00000058  E3A00002  MOV         R0,#0x2
 0000005C  EBFFFFE7  BL          read_ADC?A  ; Targ=0x0
 00000060  E5108000  LDR         R0,=AD_value + 0x4 ; AD_value+4
 00000064  E1C800B0  STRH        R0,[R8,#0x0] ; AD_value+4
  144:         AD_value[2]=szlb(AD_value[2]);  //滤波
 00000068  E5108000  LDR         R0,=AD_value + 0x4 ; AD_value+4
 0000006C  E1D880B0  LDRH        R8,[R8,#0x0] ; AD_value+4
 00000070  E1A00008  MOV         R0,R8
 00000074  EBFFFFE1  BL          szlb?A  ; Targ=0x0
 00000078  E5108000  LDR         R0,=AD_value + 0x4 ; AD_value+4
 0000007C  E1C800B0  STRH        R0,[R8,#0x0] ; AD_value+4
  145:         WatchDog();
 00000080  E3A09A01  MOV         R9,#0x1000
 00000084  E5108000  LDR         R0,=0xFFFF0360
 00000088  E5889000  STR         R9,[R8,#0x0]
 0000008C  E3A090FF  MOV         R9,#0xFF
 00000090  E5108000  LDR         R0,=0xFFFF036C
 00000094  E5889000  STR         R9,[R8,#0x0]
  148:         if(count1==3)                                                                                    
 00000098  E5108000  LDR         R0,=count1 ; count1
 0000009C  E1D8B0B0  LDRH        R11,[R8,#0x0] ; count1
 000000A0  E1A0800B  MOV         R8,R11
 000000A4  E3580003  CMP         R8,#0x0003
 000000A8  1A00001D  BNE         L_19  ; Targ=0x124
  150:            Z_w_value=Z_w_value+(AD_value[2]+AD_value[0]-ZERO_V);//3310             //注意RS150 零点不一定是2.5V
 000000AC  E5108000  LDR         R0,=AD_value ; AD_value
 000000B0  E1D880B0  LDRH        R8,[R8,#0x0] ; AD_value
 000000B4  E1A09008  MOV         R9,R8
 000000B8  E5108000  LDR         R0,=AD_value + 0x4 ; AD_value+4
 000000BC  E1D880B0  LDRH        R8,[R8,#0x0] ; AD_value+4
 000000C0  E0888009  ADD         R8,R8,R9
 000000C4  E5109000  LDR         R1,=ZERO_V ; ZERO_V
 000000C8  E5999000  LDR         R9,[R9,#0x0] ; ZERO_V
 000000CC  E0488009  SUB         R8,R8,R9
 000000D0  E5109000  LDR         R1,=Z_w_value ; Z_w_value
 000000D4  E5999000  LDR         R9,[R9,#0x0] ; Z_w_value
 000000D8  E0899008  ADD         R9,R9,R8
 000000DC  E5108000  LDR         R0,=Z_w_value ; Z_w_value
 000000E0  E5889000  STR         R9,[R8,#0x0] ; Z_w_value
  153:            Z_w_result=-Z_w_value*0.00152;   //19-38 ->128Hz //  152->32Hz        2.5*1000/(128*2*12.5mv*4096)  RS150       du
 000000E4  E5108000  LDR         R0,=Z_w_value ; Z_w_value
 000000E8  E5980000  LDR         R0,[R8,#0x0] ; Z_w_value
 000000EC  EBFFFFC3  BL          ?C?FCAST?A  ; Targ=0x0 ; ?C?FCAST?A
 000000F0  EBFFFFC2  BL          ?C?FPNEG?A  ; Targ=0x0 ; ?C?FPNEG?A
 000000F4  E5101000  LDR         R1,=0x3AC73ABD
ARM COMPILER V2.53,  main                                                                  22/09/07  23:08:04  PAGE 13  

 000000F8  EBFFFFC0  BL          ?C?FPMUL?A  ; Targ=0x0 ; ?C?FPMUL?A
 000000FC  E5108000  LDR         R0,=Z_w_result ; Z_w_result
 00000100  E5880000  STR         R0,[R8,#0x0] ; Z_w_result
  154:          count1=0;
 00000104  E3A09000  MOV         R9,#0x0
 00000108  E5108000  LDR         R0,=count1 ; count1
 0000010C  E1C890B0  STRH        R9,[R8,#0x0] ; count1
  155:          zus++;
 00000110  E5108000  LDR         R0,=zus ; zus
 00000114  E5D89000  LDRB        R9,[R8,#0x0] ; zus
 00000118  E2899001  ADD         R9,R9,#0x0001
 0000011C  E5C89000  STRB        R9,[R8,#0x0] ; zus
  156:          }
 00000120  EA00001D  B           L_21  ; Targ=0x19C
 00000124          L_19:
  158:          {count1++;}
 00000124  E5108000  LDR         R0,=count1 ; count1
 00000128  E28B9001  ADD         R9,R11,#0x0001
 0000012C  E1C890B0  STRH        R9,[R8,#0x0] ; count1
  160:     return;
 00000130  EA000019  B           L_21  ; Targ=0x19C
  161:       }
 00000134          L_18:
  162:     if(FIQSTA & UART)    
 00000134  E5108000  LDR         R0,=0xFFFF0100
 00000138  E5988000  LDR         R8,[R8,#0x0]
 0000013C  E3180901  TST         R8,#0x4000
 00000140  0A000004  BEQ         L_22  ; Targ=0x158
  171:        ON_LED42();
 00000144  E3A09701  MOV         R9,#0x40000
 00000148  E5108000  LDR         R0,=0xFFFFF468
 0000014C  E5889000  STR         R9,[R8,#0x0]
  172:        UART_R_ISR();
 00000150  EBFFFFAA  BL          UART_R_ISR?A  ; Targ=0x0
  173:        return;
 00000154  EA000010  B           L_21  ; Targ=0x19C
  174:      }
 00000158          L_22:
  175:     if(FIQSTA & TIMER3)    //读取IRQ中断状态,判断IRQ中断源
 00000158  E5108000  LDR         R0,=0xFFFF0100
 0000015C  E5988000  LDR         R8,[R8,#0x0]
 00000160  E3180020  TST         R8,#0x0020
 00000164  0A00000C  BEQ         L_21  ; Targ=0x19C
  176:       {                           //Timer3中断
 00000168            ; SCOPE-START
  178:        temp=Z_w_result;       // Watchdog interrupt allows saving...
 00000168  E5108000  LDR         R0,=Z_w_result ; Z_w_result
 0000016C  E598A000  LDR         R10,[R8,#0x0] ; Z_w_result
 00000170  ---- Variable 'temp' assigned to Register 'R10' ----
  180:        T3CLRI=0;
 00000170  E3A09000  MOV         R9,#0x0
 00000174  E5108000  LDR         R0,=0xFFFF036C
 00000178  E5889000  STR         R9,[R8,#0x0]
  181:        T3LD = 0x1000;       // 0x1000/32768 = 125ms
 0000017C  E5108000  LDR         R0,=0xFFFF0360
 00000180  E5884000  STR         R4,[R8,#0x0]
  183:        RSTSTA = 0x4;            // Software reset 
 00000184  E3A09004  MOV         R9,#0x4
 00000188  E5108000  LDR         R0,=0xFFFF0230
 0000018C  E5889000  STR         R9,[R8,#0x0]
  184:        Z_w_result=temp;
 00000190  E1A0900A  MOV         R9,R10 ; temp
 00000194  E5108000  LDR         R0,=Z_w_result ; Z_w_result
 00000198  E5889000  STR         R9,[R8,#0x0] ; Z_w_result
  185:        return;
 0000019C            ; SCOPE-END
ARM COMPILER V2.53,  main                                                                  22/09/07  23:08:04  PAGE 14  

  186:       }
 0000019C            ; SCOPE-END
  188: }
 0000019C          L_21:
 0000019C  E8BD401F  LDMIA       R13!,{R0-R4,LR}
 000001A0  E25EF004  SUBS        R15,R14,#0x0004
 000001A4          ENDP ; 'FIQ_Handler?A'


*** CODE SEGMENT '?PR?main?main':
  199: void main(void)
 00000000  E92D4000  STMDB       R13!,{LR}
  200: {
 00000004            ; SCOPE-START
  205:       Z_COMMUNI_INIT();
 00000004  EBFFFFFD  BL          Z_COMMUNI_INIT?A  ; Targ=0x0
  208:      pdata=0;
 00000008  E3A04000  MOV         R4,#0x0
 0000000C  E5100000  LDR         R0,=pdata ; pdata
 00000010  E5C04000  STRB        R4,[R0,#0x0] ; pdata
  209:      pmax=0;
 00000014  E5100000  LDR         R0,=pmax ; pmax
 00000018  E5C04000  STRB        R4,[R0,#0x0] ; pmax
  210:      pmin=0;
 0000001C  E5100000  LDR         R0,=pmin ; pmin
 00000020  E5C04000  STRB        R4,[R0,#0x0] ; pmin
  211:      for(i=0;i<6;i++)
 00000024  E1A00004  MOV         R0,R4 ; i
 00000028  ---- Variable 'i' assigned to Register 'R0' ----
 00000028  EA000008  B           L_26  ; Targ=0x50
 0000002C          L_27:
  212:        {datas[i]=1927;}
 0000002C  E5101000  LDR         R1,=0x787
 00000030  E1A02000  MOV         R2,R0 ; i
 00000034  E1A03C02  MOV         R3,R2,LSL #24 ; i
 00000038  E1A03C23  MOV         R3,R3,LSR #24
 0000003C  E1A03083  MOV         R3,R3,LSL #1
 00000040  E5102000  LDR         R2,=datas ; datas
 00000044  E18210B3  STRH        R1,[R2,R3]
 00000048  E2800001  ADD         R0,R0,#0x0001 ; i
 0000004C  E20000FF  AND         R0,R0,#0x00FF
 00000050          L_26:
 00000050  E1A01000  MOV         R1,R0 ; i
 00000054  E1A01C01  MOV         R1,R1,LSL #24 ; i
 00000058  E1A01C21  MOV         R1,R1,LSR #24
 0000005C  E3510006  CMP         R1,#0x0006
 00000060  BAFFFFF1  BLT         L_27  ; Targ=0x2C
  213:      for(i=0;i<3;i++)
 00000064  E1A00004  MOV         R0,R4 ; i
 00000068  EA000008  B           L_31  ; Targ=0x90
 0000006C          L_32:
  214:        { AD_value[i]=1927; }
 0000006C  E5101000  LDR         R1,=0x787
 00000070  E1A02000  MOV         R2,R0 ; i
 00000074  E1A03C02  MOV         R3,R2,LSL #24 ; i
 00000078  E1A03C23  MOV         R3,R3,LSR #24
 0000007C  E1A03083  MOV         R3,R3,LSL #1
 00000080  E5102000  LDR         R2,=AD_value ; AD_value
 00000084  E18210B3  STRH        R1,[R2,R3]
 00000088  E2800001  ADD         R0,R0,#0x0001 ; i
 0000008C  E20000FF  AND         R0,R0,#0x00FF
 00000090          L_31:
 00000090  E1A01000  MOV         R1,R0 ; i
 00000094  E1A01C01  MOV         R1,R1,LSL #24 ; i
 00000098  E1A01C21  MOV         R1,R1,LSR #24
 0000009C  E3510003  CMP         R1,#0x0003
 000000A0  BAFFFFF1  BLT         L_32  ; Targ=0x6C
  216:       Z_w_value=-90/0.00152;  
ARM COMPILER V2.53,  main                                                                  22/09/07  23:08:04  PAGE 15  

 000000A4  E5101000  LDR         R1,=0xFFFF18B6
 000000A8  E5100000  LDR         R0,=Z_w_value ; Z_w_value
 000000AC  E5801000  STR         R1,[R0,#0x0] ; Z_w_value
  217:       Z_w_result=0;  //固定坐标系下位移
 000000B0  E3A01000  MOV         R1,#0x0
 000000B4  E5100000  LDR         R0,=Z_w_result ; Z_w_result
 000000B8  E5801000  STR         R1,[R0,#0x0] ; Z_w_result
  218:       temp1=0;
 000000BC  E5100000  LDR         R0,=temp1 ; temp1
 000000C0  E5C04000  STRB        R4,[R0,#0x0] ; temp1

⌨️ 快捷键说明

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