📄 sensor_routines.lst
字号:
0000002E 4718 BX R3
00000030 ENDP ; 'wind_dir?T'
*** CODE SEGMENT '?PR?wind_dir_char?T?sensor_routines':
40: void wind_dir_char(void) {
00000000 B500 PUSH {LR}
00000002 ; SCOPE-START
42: tmp = read_wind_dir_bits();
00000002 F7FF BL read_wind_dir_bits?T ; T=0x0001 (1)
00000004 FFFD BL read_wind_dir_bits?T ; T=0x0001 (2)
00000008 ---- Variable 'tmp' assigned to Register 'R0' ----
43: switch (tmp) {
00000008 1C01 MOV R1,R0 ; tmp
0000000A 3901 SUB R1,#0x1
0000000C D011 BEQ L_5 ; T=0x00000032
0000000E 3901 SUB R1,#0x1
00000010 D014 BEQ L_6 ; T=0x0000003C
00000012 3901 SUB R1,#0x1
00000014 D017 BEQ L_7 ; T=0x00000046
00000016 3901 SUB R1,#0x1
00000018 D01A BEQ L_8 ; T=0x00000050
0000001A 3901 SUB R1,#0x1
0000001C D01D BEQ L_9 ; T=0x0000005A
0000001E 3901 SUB R1,#0x1
00000020 D020 BEQ L_10 ; T=0x00000064
00000022 3901 SUB R1,#0x1
ARM COMPILER V2.00d, sensor_routines 23/10/05 18:16:19 PAGE 5
00000024 D023 BEQ L_11 ; T=0x0000006E
00000026 3107 ADD R1,#0x7
00000028 D125 BNE L_3 ; T=0x00000076
44: case 0: strcpy(wind_dir_str," E"); break;
0000002A L_4:
0000002A 4800 LDR R0,=wind_dir_str ; wind_dir_str
0000002C 4800 LDR R1,=??S_1 ; ??S_1
0000002E F7FF BL strcpy?T ; T=0x0001 (1)
00000030 FFE7 BL strcpy?T ; T=0x0001 (2)
00000034 E01F B L_3 ; T=0x00000076
45: case 1: strcpy(wind_dir_str,"SE"); break;
00000036 L_5:
00000036 4800 LDR R0,=wind_dir_str ; wind_dir_str
00000038 4800 LDR R1,=??S_2 ; ??S_2
0000003A F7FF BL strcpy?T ; T=0x0001 (1)
0000003C FFE1 BL strcpy?T ; T=0x0001 (2)
00000040 E019 B L_3 ; T=0x00000076
46: case 2: strcpy(wind_dir_str," S"); break;
00000042 L_6:
00000042 4800 LDR R0,=wind_dir_str ; wind_dir_str
00000044 4800 LDR R1,=??S_3 ; ??S_3
00000046 F7FF BL strcpy?T ; T=0x0001 (1)
00000048 FFDB BL strcpy?T ; T=0x0001 (2)
0000004C E013 B L_3 ; T=0x00000076
47: case 3: strcpy(wind_dir_str,"SW"); break;
0000004E L_7:
0000004E 4800 LDR R0,=wind_dir_str ; wind_dir_str
00000050 4800 LDR R1,=??S_4 ; ??S_4
00000052 F7FF BL strcpy?T ; T=0x0001 (1)
00000054 FFD5 BL strcpy?T ; T=0x0001 (2)
00000058 E00D B L_3 ; T=0x00000076
48: case 4: strcpy(wind_dir_str," W"); break;
0000005A L_8:
0000005A 4800 LDR R0,=wind_dir_str ; wind_dir_str
0000005C 4800 LDR R1,=??S_5 ; ??S_5
0000005E F7FF BL strcpy?T ; T=0x0001 (1)
00000060 FFCF BL strcpy?T ; T=0x0001 (2)
00000064 E007 B L_3 ; T=0x00000076
49: case 5: strcpy(wind_dir_str,"NW"); break;
00000066 L_9:
00000066 4800 LDR R0,=wind_dir_str ; wind_dir_str
00000068 4800 LDR R1,=??S_6 ; ??S_6
0000006A F7FF BL strcpy?T ; T=0x0001 (1)
0000006C FFC9 BL strcpy?T ; T=0x0001 (2)
00000070 E001 B L_3 ; T=0x00000076
50: case 6: strcpy(wind_dir_str," N"); break;
00000072 L_10:
00000072 4800 LDR R0,=wind_dir_str ; wind_dir_str
00000074 4800 LDR R1,=??S_7 ; ??S_7
00000076 F7FF BL strcpy?T ; T=0x0001 (1)
00000078 FFC3 BL strcpy?T ; T=0x0001 (2)
0000007C E7FB B L_3 ; T=0x00000076
51: case 7: strcpy(wind_dir_str,"NE"); break;
0000007E L_11:
0000007E 4800 LDR R0,=wind_dir_str ; wind_dir_str
00000080 4800 LDR R1,=??S_8 ; ??S_8
00000082 F7FF BL strcpy?T ; T=0x0001 (1)
00000084 FFBD BL strcpy?T ; T=0x0001 (2)
52: }
00000088 L_3:
00000088 ; SCOPE-END
54: }
00000088 BC08 POP {R3}
0000008A 4718 BX R3
0000008C ENDP ; 'wind_dir_char?T'
*** CODE SEGMENT '?PR?wind_speed?T?sensor_routines':
ARM COMPILER V2.00d, sensor_routines 23/10/05 18:16:19 PAGE 6
55: double wind_speed (unsigned int filterred_data) {
00000000 B530 PUSH {R4-R5,LR}
00000002 1C05 MOV R5,R0 ; filterred_data
00000004 ---- Variable 'filterred_data' assigned to Register 'R5' ----
00000004 ; SCOPE-START
67: x=(double)filterred_data; // need to capture current value
00000004 1C28 MOV R0,R5 ; filterred_data
00000006 F7FF BL ?C?FCASTU?T ; T=0x0001 (1) ; ?C?FCASTU?T
00000008 FFFB BL ?C?FCASTU?T ; T=0x0001 (2) ; ?C?FCASTU?T
0000000C ---- Variable 'x' assigned to Register 'R0' ----
69: X=pow(x,-1.0);
0000000C 4800 LDR R1,=0xBF800000
0000000E F7FF BL pow?T ; T=0x0001 (1)
00000010 FFF7 BL pow?T ; T=0x0001 (2)
00000014 1C03 MOV R3,R0 ; X
00000016 ---- Variable 'X' assigned to Register 'R3' ----
70: speed=(A+B*X)/(C+D*X);
00000016 4800 LDR R0,=0x4A015254
00000018 1C19 MOV R1,R3 ; X
0000001A F7FF BL ?C?FPMUL?T ; T=0x0001 (1) ; ?C?FPMUL?T
0000001C FFF1 BL ?C?FPMUL?T ; T=0x0001 (2) ; ?C?FPMUL?T
00000020 4800 LDR R1,=0x3F800000
00000022 F7FF BL ?C?FPADD?T ; T=0x0001 (1) ; ?C?FPADD?T
00000024 FFED BL ?C?FPADD?T ; T=0x0001 (2) ; ?C?FPADD?T
00000028 1C02 MOV R2,R0
0000002A 4800 LDR R0,=0x4C946B05
0000002C 1C19 MOV R1,R3 ; X
0000002E F7FF BL ?C?FPMUL?T ; T=0x0001 (1) ; ?C?FPMUL?T
00000030 FFE7 BL ?C?FPMUL?T ; T=0x0001 (2) ; ?C?FPMUL?T
00000034 4800 LDR R1,=0xBFC7340E
00000036 F7FF BL ?C?FPADD?T ; T=0x0001 (1) ; ?C?FPADD?T
00000038 FFE3 BL ?C?FPADD?T ; T=0x0001 (2) ; ?C?FPADD?T
0000003C 1C11 MOV R1,R2
0000003E F7FF BL ?C?FPDIV?T ; T=0x0001 (1) ; ?C?FPDIV?T
00000040 FFDF BL ?C?FPDIV?T ; T=0x0001 (2) ; ?C?FPDIV?T
00000044 1C02 MOV R2,R0 ; speed
00000046 ---- Variable 'speed' assigned to Register 'R2' ----
71: if (speed < 0.0) speed = 0.0;
00000046 2400 MOV R4,#0x0
00000048 1C10 MOV R0,R2 ; speed
0000004A 1C21 MOV R1,R4
0000004C F7FF BL ?C?FPCMP?T ; T=0x0001 (1) ; ?C?FPCMP?T
0000004E FFD8 BL ?C?FPCMP?T ; T=0x0001 (2) ; ?C?FPCMP?T
00000052 D2F8 BCS L_12 ; T=0x00000046
00000054 2200 MOV R2,#0x0
00000056 L_12:
72: if (filterred_data > 50000000) speed = 0.0;
00000056 4800 LDR R1,=0x2FAF080
00000058 428D CMP R5,R1 ; filterred_data
0000005A D9F8 BLS L_13 ; T=0x0000004E
0000005C 2200 MOV R2,#0x0
0000005E L_13:
73: return(speed);
0000005E 1C10 MOV R0,R2 ; speed
00000060 ; SCOPE-END
74: }
00000060 BC30 POP {R4-R5}
00000062 BC08 POP {R3}
00000064 4718 BX R3
00000066 ENDP ; 'wind_speed?T'
*** CODE SEGMENT '?PR?air_temp?T?sensor_routines':
76: float air_temp (unsigned char ad0) {
00000000 B500 PUSH {LR}
00000002 ---- Variable 'ad0' assigned to Register 'R0' ----
00000002 ; SCOPE-START
85: v0=((float)ad0/1023.0)*3.3; // convert to volts 3.3 reference
ARM COMPILER V2.00d, sensor_routines 23/10/05 18:16:19 PAGE 7
00000002 F7FF BL ?C?FCASTU?T ; T=0x0001 (1) ; ?C?FCASTU?T
00000004 FFFD BL ?C?FCASTU?T ; T=0x0001 (2) ; ?C?FCASTU?T
00000008 4800 LDR R1,=0x447FC000
0000000A F7FF BL ?C?FPDIV?T ; T=0x0001 (1) ; ?C?FPDIV?T
0000000C FFF9 BL ?C?FPDIV?T ; T=0x0001 (2) ; ?C?FPDIV?T
00000010 4800 LDR R1,=0x40533333
00000012 F7FF BL ?C?FPMUL?T ; T=0x0001 (1) ; ?C?FPMUL?T
00000014 FFF5 BL ?C?FPMUL?T ; T=0x0001 (2) ; ?C?FPMUL?T
00000018 ---- Variable 'v0' assigned to Register 'R0' ----
86: temp = (v0-1.375)/(0.0225);
00000018 4800 LDR R1,=0x3FB00000
0000001A F7FF BL ?C?FPSUB?T ; T=0x0001 (1) ; ?C?FPSUB?T
0000001C FFF1 BL ?C?FPSUB?T ; T=0x0001 (2) ; ?C?FPSUB?T
00000020 4800 LDR R1,=0x3CB851EC
00000022 F7FF BL ?C?FPDIV?T ; T=0x0001 (1) ; ?C?FPDIV?T
00000024 FFED BL ?C?FPDIV?T ; T=0x0001 (2) ; ?C?FPDIV?T
00000028 ---- Variable 'temp' assigned to Register 'R0' ----
87: return (temp);
00000028 ; SCOPE-END
88: }
00000028 BC08 POP {R3}
0000002A 4718 BX R3
0000002C ENDP ; 'air_temp?T'
*** CODE SEGMENT '?PR?air_temp_F?T?sensor_routines':
90: float air_temp_F (float air_c) {
00000000 B500 PUSH {LR}
00000002 1C01 MOV R1,R0 ; air_c
00000004 ---- Variable 'air_c' assigned to Register 'R1' ----
00000004 ; SCOPE-START
92: air_f = ((9.0/5.0)*air_c) +32.0;
00000004 4800 LDR R0,=0x3FE66666
00000006 F7FF BL ?C?FPMUL?T ; T=0x0001 (1) ; ?C?FPMUL?T
00000008 FFFB BL ?C?FPMUL?T ; T=0x0001 (2) ; ?C?FPMUL?T
0000000C 4800 LDR R1,=0x42000000
0000000E F7FF BL ?C?FPADD?T ; T=0x0001 (1) ; ?C?FPADD?T
00000010 FFF7 BL ?C?FPADD?T ; T=0x0001 (2) ; ?C?FPADD?T
00000014 ---- Variable 'air_f' assigned to Register 'R0' ----
93: return (air_f);
00000014 ; SCOPE-END
94: }
00000014 BC08 POP {R3}
00000016 4718 BX R3
00000018 ENDP ; 'air_temp_F?T'
Module Information Static
----------------------------------
code size = ------
data size = 7
const size = 56
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -