📄 main.lst
字号:
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 + -