caculate.lst

来自「一个温度采集系统的单片机程序与WINDOWS 串口通信程序」· LST 代码 · 共 86 行

LST
86
字号
C51 COMPILER V7.00  CACULATE                                                               03/16/2005 19:43:46 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE CACULATE
OBJECT MODULE PLACED IN caculate.OBJ
COMPILER INVOKED BY: C:\PROGRA~1\Keil\C51\BIN\c51.exe caculate.c DB OE SMALL ROM(LARGE)

stmt level    source

   1          void do_one_tmp(us_rom,us_rom_bcd)        //将读取的温度数据转换成十进制数 
   2          unsigned char data  *us_rom;
   3          unsigned char data  *us_rom_bcd;
   4          {
   5   1      unsigned char i =0;
   6   1      unsigned char temp,shift,mode;
   7   1      unsigned char us_rom_var[2];
   8   1      unsigned char us_bcd_var;
   9   1      float us_tmp_bcd,mode_f;
  10   1      unsigned char flag;
  11   1      
  12   1      us_rom_var[0]   =*us_rom;
  13   1      us_rom_var[1]   =*(us_rom+1);
  14   1      flag    =(us_rom_var[1]>>3)&0x01;
  15   1      us_rom_var[1]   =((us_rom_var[1]&0x03)<<4)|((us_rom_var[0]&0xf0)>>4);
  16   1      us_rom_var[0]   =us_rom_var[0]&0x0f;
  17   1      
  18   1         while(1)                                 //计算整数值,结果存tmp_rom_bcd[1]
  19   1         {
  20   2              shift   =0x01;    
  21   2              mode    =1;     
  22   2              while(i<6)             
  23   2              {
  24   3                      temp=us_rom_var[1]&shift;
  25   3                      if(temp)                                //此位为1,加上权值
  26   3                      us_bcd_var+=mode;
  27   3      
  28   3                      mode=mode*2;
  29   3                      shift=shift<<1;
  30   3                      i++;
  31   3              }
  32   2              if(flag)                          //判断是否为负数?yes,整数最高位置1  
  33   2              us_bcd_var|=0x80;
  34   2              break;
  35   2         }
  36   1         *(us_rom_bcd+1)      =us_bcd_var;
  37   1         
  38   1         i            =0;
  39   1         shift        =0x01;                           //计算小数值,结果存tmp_rom_bcd[0]  
  40   1         mode_f       =6.25;  
  41   1         while(i<4)
  42   1         {
  43   2          temp=us_rom_var[0]&shift;
  44   2          if(temp)
  45   2          us_tmp_bcd+=mode_f;
  46   2          
  47   2          mode_f=mode_f*2;
  48   2          shift=shift<<1;
  49   2          i++;
  50   2         }
  51   1         *us_rom_bcd=us_tmp_bcd;
  52   1      }
  53          
  54          main()
  55          {
C51 COMPILER V7.00  CACULATE                                                               03/16/2005 19:43:46 PAGE 2   

  56   1      unsigned char array[2]  ={0x1f,0x01};
  57   1      unsigned char output[2];
  58   1      do_one_tmp(array,output);
  59   1      while(1);
  60   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    227    ----
   CONSTANT SIZE    =      2    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      19
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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