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 + -
显示快捷键?