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

📄 dataprocess.lst

📁 aduc7026裸机程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 00000018           END_INIT
ARM COMPILER V2.42,  DataProcess                                                           17/01/09  22:24:15  PAGE 5   

 00000018          ratioint:
 00000018            DS          4
 0000001C          countadjust:
 0000001C           BEGIN_INIT
 0000001C  00000BB8  DD          0xBB8
 00000020           END_INIT
 00000020          utem:
 00000020            DS          4
 00000024          uco2tem:
 00000024            DS          4
 00000028          ureftem:
 00000028            DS          4
 0000002C          ratiointendh:
 0000002C           BEGIN_INIT
 0000002C  00        DB          0x0
 0000002D           END_INIT
 0000002D          ratiointendl:
 0000002D           BEGIN_INIT
 0000002D  00        DB          0x0
 0000002E           END_INIT
 0000002E          rr1:
 0000002E           BEGIN_INIT
 0000002E  00        DB          0x0
 0000002F           END_INIT
 0000002F          rr2:
 0000002F           BEGIN_INIT
 0000002F  00        DB          0x0
 00000030           END_INIT
 00000030          factor:
 00000030            DS          1
 00000031          a2:
 00000031            DS          1
 00000032          a1:
 00000032            DS          1
 00000033          flagadjust:
 00000033           BEGIN_INIT
 00000033  01        DB          0x1
 00000034           END_INIT
 00000034          text:
 00000034           BEGIN_INIT
 00000034  00        DB          0x0
 00000035           END_INIT
 00000035          ttflag:
 00000035            DS          1



*** CODE SEGMENT '?PR?DataProc?T?DataProcess':
   31: void DataProc()  //数据采集数据处理
 00000000  B5F0      PUSH        {R4-R7,LR}
 00000002  B089      SUB         R13,#0x24
   32: {    
 00000004            ; SCOPE-START
   33:     float baseline  = 950;      //基线值
 00000004  4800      LDR         R5,=0x446D8000
 00000006  ---- Variable 'baseline' assigned to Register 'R5' ----
   34:     float baseline2 = 0;            //基线参考值
 00000006  2700      MOV         R7,#0x0
 00000008  ---- Variable 'baseline2' assigned to Register 'R7' ----
   35:     float tempslop  = 0.5;         //co2浓度计算用的温度补偿系数(可改动系数*****************************)
 00000008  4800      LDR         R2,=0x3F000000
 0000000A  ---- Variable 'tempslop' assigned to Register 'R2' ----
   39:     int   count     = 1000;     //评价计算用的平均次数
 0000000A  48FA      LDR         R0,=0x3E8
 0000000C  9002      STR         R0,[R13,#0x8] ; count
   40:     int      lapcount  = 1;            //time int
 0000000E  2001      MOV         R0,#0x1
 00000010  9003      STR         R0,[R13,#0xC] ; lapcount
ARM COMPILER V2.42,  DataProcess                                                           17/01/09  22:24:15  PAGE 6   

   41:     int   rr        = 16;       ////呼吸率
 00000012  2010      MOV         R0,#0x10
 00000014  9004      STR         R0,[R13,#0x10] ; rr
   42:     int   basetemp  = 3100;      //预设基准温度
 00000016  4800      LDR         R0,=0xC1C
 00000018  9005      STR         R0,[R13,#0x14] ; basetemp
   45:     unsigned char   rrflag      = 0;            //呼吸率计算用的标志位
 0000001A  2100      MOV         R1,#0x0
 0000001C  A806      ADD         R0,R13,#0x18
 0000001E  7001      STRB        R1,[R0,#0x0] ; rrflag
   46:     unsigned char   rrflag2         = 0;
 00000020  A807      ADD         R0,R13,#0x1C
 00000022  7001      STRB        R1,[R0,#0x0] ; rrflag2
   47:     unsigned char   lapflag     = 0;              //出现呼吸间隔的标志位
 00000024  A808      ADD         R0,R13,#0x20
 00000026  7001      STRB        R1,[R0,#0x0] ; lapflag
   49:     unsigned char   flagtemp    = 1;
 00000028  2401      MOV         R4,#0x1
 0000002A  ---- Variable 'flagtemp' assigned to Register 'R4' ----
   51:     uco2=uco2*3/4+((float)uco2tem)/4;                         //对uco2,uref进行平均预处理
 0000002A  4800      LDR         R1,=0x40400000
 0000002C  9800      LDR         R0,[R13,#0x0] ; uco2
 0000002E  F7FF      BL          ?C?FPMUL?T  ; T=0x0001  (1) ; ?C?FPMUL?T
 00000030  FFE7      BL          ?C?FPMUL?T  ; T=0x0001  (2) ; ?C?FPMUL?T
 00000032  4800      LDR         R6,=0x40800000
 00000034  1C31      MOV         R1,R6
 00000036  F7FF      BL          ?C?FPDIV?T  ; T=0x0001  (1) ; ?C?FPDIV?T
 00000038  FFE3      BL          ?C?FPDIV?T  ; T=0x0001  (2) ; ?C?FPDIV?T
 0000003A  1C03      MOV         R3,R0
 0000003C  4800      LDR         R0,=uco2tem ; uco2tem
 0000003E  6800      LDR         R0,[R0,#0x0] ; uco2tem
 00000040  F7FF      BL          ?C?FCAST?T  ; T=0x0001  (1) ; ?C?FCAST?T
 00000042  FFDE      BL          ?C?FCAST?T  ; T=0x0001  (2) ; ?C?FCAST?T
 00000044  1C31      MOV         R1,R6
 00000046  F7FF      BL          ?C?FPDIV?T  ; T=0x0001  (1) ; ?C?FPDIV?T
 00000048  FFDB      BL          ?C?FPDIV?T  ; T=0x0001  (2) ; ?C?FPDIV?T
 0000004A  1C01      MOV         R1,R0
 0000004C  1C18      MOV         R0,R3
 0000004E  F7FF      BL          ?C?FPADD?T  ; T=0x0001  (1) ; ?C?FPADD?T
 00000050  FFD7      BL          ?C?FPADD?T  ; T=0x0001  (2) ; ?C?FPADD?T
 00000052  9000      STR         R0,[R13,#0x0] ; uco2
   52:     uref=uref*3/4+((float)ureftem)/4;   
 00000054  4800      LDR         R1,=0x40400000
 00000056  9801      LDR         R0,[R13,#0x4] ; uref
 00000058  F7FF      BL          ?C?FPMUL?T  ; T=0x0001  (1) ; ?C?FPMUL?T
 0000005A  FFD2      BL          ?C?FPMUL?T  ; T=0x0001  (2) ; ?C?FPMUL?T
 0000005C  4800      LDR         R1,=0x40800000
 0000005E  F7FF      BL          ?C?FPDIV?T  ; T=0x0001  (1) ; ?C?FPDIV?T
 00000060  FFCF      BL          ?C?FPDIV?T  ; T=0x0001  (2) ; ?C?FPDIV?T
 00000062  1C03      MOV         R3,R0
 00000064  4800      LDR         R0,=ureftem ; ureftem
 00000066  6800      LDR         R0,[R0,#0x0] ; ureftem
 00000068  F7FF      BL          ?C?FCAST?T  ; T=0x0001  (1) ; ?C?FCAST?T
 0000006A  FFCA      BL          ?C?FCAST?T  ; T=0x0001  (2) ; ?C?FCAST?T
 0000006C  4800      LDR         R1,=0x40800000
 0000006E  F7FF      BL          ?C?FPDIV?T  ; T=0x0001  (1) ; ?C?FPDIV?T
 00000070  FFC7      BL          ?C?FPDIV?T  ; T=0x0001  (2) ; ?C?FPDIV?T
 00000072  1C01      MOV         R1,R0
 00000074  1C18      MOV         R0,R3
 00000076  F7FF      BL          ?C?FPADD?T  ; T=0x0001  (1) ; ?C?FPADD?T
 00000078  FFC3      BL          ?C?FPADD?T  ; T=0x0001  (2) ; ?C?FPADD?T
 0000007A  9001      STR         R0,[R13,#0x4] ; uref
   53:     ratio=(uco2/uref)*1000-(utem*0.8-basetemp)*tempslop;      //CO2浓度的基本计算式     
 0000007C  4800      LDR         R0,=utem ; utem
 0000007E  6800      LDR         R0,[R0,#0x0] ; utem
 00000080  F7FF      BL          ?C?FCAST?T  ; T=0x0001  (1) ; ?C?FCAST?T
ARM COMPILER V2.42,  DataProcess                                                           17/01/09  22:24:15  PAGE 7   

 00000082  FFBE      BL          ?C?FCAST?T  ; T=0x0001  (2) ; ?C?FCAST?T
 00000084  4800      LDR         R1,=0x3F4CCCCD
 00000086  F7FF      BL          ?C?FPMUL?T  ; T=0x0001  (1) ; ?C?FPMUL?T
 00000088  FFBB      BL          ?C?FPMUL?T  ; T=0x0001  (2) ; ?C?FPMUL?T
 0000008A  1C03      MOV         R3,R0
 0000008C  9805      LDR         R0,[R13,#0x14] ; basetemp
 0000008E  F7FF      BL          ?C?FCAST?T  ; T=0x0001  (1) ; ?C?FCAST?T
 00000090  FFB7      BL          ?C?FCAST?T  ; T=0x0001  (2) ; ?C?FCAST?T
 00000092  1C01      MOV         R1,R0
 00000094  1C18      MOV         R0,R3
 00000096  F7FF      BL          ?C?FPSUB?T  ; T=0x0001  (1) ; ?C?FPSUB?T
 00000098  FFB3      BL          ?C?FPSUB?T  ; T=0x0001  (2) ; ?C?FPSUB?T
 0000009A  1C11      MOV         R1,R2 ; tempslop
 0000009C  F7FF      BL          ?C?FPMUL?T  ; T=0x0001  (1) ; ?C?FPMUL?T
 0000009E  FFB0      BL          ?C?FPMUL?T  ; T=0x0001  (2) ; ?C?FPMUL?T
 000000A0  1C02      MOV         R2,R0
 000000A2  9901      LDR         R1,[R13,#0x4] ; uref
 000000A4  9800      LDR         R0,[R13,#0x0] ; uco2
 000000A6  F7FF      BL          ?C?FPDIV?T  ; T=0x0001  (1) ; ?C?FPDIV?T
 000000A8  FFAB      BL          ?C?FPDIV?T  ; T=0x0001  (2) ; ?C?FPDIV?T
 000000AA  4800      LDR         R1,=0x447A0000
 000000AC  F7FF      BL          ?C?FPMUL?T  ; T=0x0001  (1) ; ?C?FPMUL?T
 000000AE  FFA8      BL          ?C?FPMUL?T  ; T=0x0001  (2) ; ?C?FPMUL?T
 000000B0  1C11      MOV         R1,R2
 000000B2  F7FF      BL          ?C?FPSUB?T  ; T=0x0001  (1) ; ?C?FPSUB?T
 000000B4  FFA5      BL          ?C?FPSUB?T  ; T=0x0001  (2) ; ?C?FPSUB?T
 000000B6  1C06      MOV         R6,R0 ; ratio
 000000B8  ---- Variable 'ratio' assigned to Register 'R6' ----
   56:     if(countadjust != 0){
 000000B8  4800      LDR         R0,=countadjust ; countadjust
 000000BA  6802      LDR         R2,[R0,#0x0] ; countadjust
 000000BC  2A00      CMP         R2,#0x0
 000000BE  D100      BEQ         $+4
 000000C0  E0BE      B           L_1  ; T=0x00000240
   57:         if(countadjust > 1000){
 000000C4  48FA      LDR         R0,=0x3E8
 000000C6  4282      CMP         R2,R0
 000000C8  D80A      BHI         L_3  ; T=0x000000E0
   60:             baseline2 = baseline2 + ratio/count;    //10秒进行平均处理,得到新基准baseline2 
 000000CA  9802      LDR         R0,[R13,#0x8] ; count
 000000CC  F7FF      BL          ?C?FCAST?T  ; T=0x0001  (1) ; ?C?FCAST?T
 000000CE  FF98      BL          ?C?FCAST?T  ; T=0x0001  (2) ; ?C?FCAST?T
 000000D0  1C01      MOV         R1,R0
 000000D2  1C30      MOV         R0,R6 ; ratio
 000000D4  F7FF      BL          ?C?FPDIV?T  ; T=0x0001  (1) ; ?C?FPDIV?T
 000000D6  FF94      BL          ?C?FPDIV?T  ; T=0x0001  (2) ; ?C?FPDIV?T
 000000D8  1C01      MOV         R1,R0
 000000DA  1C38      MOV         R0,R7 ; baseline2
 000000DC  F7FF      BL          ?C?FPADD?T  ; T=0x0001  (1) ; ?C?FPADD?T
 000000DE  FF90      BL          ?C?FPADD?T  ; T=0x0001  (2) ; ?C?FPADD?T
 000000E0  1C07      MOV         R7,R0 ; baseline2
   61:         }
 000000E2          L_3:
   62:         countadjust--;
 000000E2  4800      LDR         R0,=countadjust ; countadjust
 000000E4  1C11      MOV         R1,R2
 000000E6  3901      SUB         R1,#0x1
 000000E8  6001      STR         R1,[R0,#0x0] ; countadjust
   63:         if(countadjust==1001&&flagtemp==1){
 000000EA  4800      LDR         R0,=countadjust ; countadjust
 000000EC  6800      LDR         R0,[R0,#0x0] ; countadjust
 000000EE  4800      LDR         R1,=0x3E9
 000000F0  4288      CMP         R0,R1
 000000F2  D10C      BNE         L_4  ; T=0x0000010E
 000000F4  1C20      MOV         R0,R4 ; flagtemp
 000000F6  0600      LSL         R0,R0,#0x18 ; flagtemp
ARM COMPILER V2.42,  DataProcess                                                           17/01/09  22:24:15  PAGE 8   

 000000F8  0E00      LSR         R0,R0,#0x18
 000000FA  2801      CMP         R0,#0x1
 000000FC  D107      BNE         L_4  ; T=0x0000010E
   64:              utem=ADCChannel(3);              //在20秒末取温度值,作为basetemp
 000000FE  2003      MOV         R0,#0x3
 00000100  F7FF      BL          ADCChannel?T  ; T=0x0001  (1)
 00000102  FF7E      BL          ADCChannel?T  ; T=0x0001  (2)
 00000104  4800      LDR         R1,=utem ; utem
 00000106  6008      STR         R0,[R1,#0x0] ; utem
   65:              basetemp=utem;
 00000108  4800      LDR         R0,=utem ; utem
 0000010A  6800      LDR         R0,[R0,#0x0] ; utem
 0000010C  9005      STR         R0,[R13,#0x14] ; basetemp
   66:              flagtemp=0;
 0000010E  2400      MOV         R4,#0x0
   67:         }
 00000110          L_4:
   68:         if(flagadjust==0&&(abs(ratio-baseline)>55)){
 00000110  4800      LDR         R0,=flagadjust ; flagadjust
 00000112  7800      LDRB        R0,[R0,#0x0] ; flagadjust
 00000114  2800      CMP         R0,#0x0
 00000116  D114      BNE         L_5  ; T=0x00000142
 00000118  1C29      MOV         R1,R5 ; baseline
 0000011A  1C30      MOV         R0,R6 ; ratio
 0000011C  F7FF      BL          ?C?FPSUB?T  ; T=0x0001  (1) ; ?C?FPSUB?T
 0000011E  FF70      BL          ?C?FPSUB?T  ; T=0x0001  (2) ; ?C?FPSUB?T
 00000120  F7FF      BL          ?C?CASTF?T  ; T=0x0001  (1) ; ?C?CASTF?T
 00000122  FF6E      BL          ?C?CASTF?T  ; T=0x0001  (2) ; ?C?CASTF?T
 00000124  F7FF      BL          abs?T  ; T=0x0001  (1)
 00000126  FF6C      BL          abs?T  ; T=0x0001  (2)
 00000128  2837      CMP         R0,#0x37 ; abs?T
 0000012A  DD0A      BLE         L_5  ; T=0x00000142
   69:             rrflag=1;
 0000012C  2101      MOV         R1,#0x1
 0000012E  A806      ADD         R0,R13,#0x18
 00000130  7001      STRB        R1,[R0,#0x0] ; rrflag
   70:             lapflag=1;                                //
 00000132  A808      ADD         R0,R13,#0x20
 00000134  7001      STRB        R1,[R0,#0x0] ; lapflag

⌨️ 快捷键说明

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