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

📄 sensor_routines.lst

📁 lpc2138读写SD卡的fat文件系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -