📄 meansure.lst
字号:
C51 COMPILER V7.06 MEANSURE 11/19/2007 13:45:29 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MEANSURE
OBJECT MODULE PLACED IN Meansure.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Meansure.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <Meansure.h>
2 sbit P00=P0^0;
3 sbit P01=P0^1;
4 //启动传输
5 void s_transstart()
6 {
7 1 unsigned char i=9;
8 1 while(i--<0)
9 1 {
10 2 P01=1;
11 2 P01=0;
12 2 }
13 1 P01=1;P00=0;
14 1 P01=0;P00=1;
15 1 P01=1;P00=0;
16 1 }
17
18 //写字节数据
19 char s_write_byte(unsigned char value)
20 {
21 1 unsigned char i,error=0;
22 1 for (i=0x80;i>0;i/=2)
23 1 {
24 2 if (i & value) DATA=1;
25 2 else
26 2 DATA=0;
27 2 SCK=1;
28 2 ; ; ;
29 2 SCK=0;
30 2 }
31 1 DATA=1;
32 1 SCK=1;
33 1 error=DATA;
34 1 SCK=0;
35 1 return error;
36 1 }
37 //读字节数据
38 char s_read_byte (unsigned char ack)
39 {
40 1 unsigned char i,val=0;
41 1 DATA=1;
42 1 for (i=0x80;i>0;i/=2)
43 1 {
44 2 SCK=1;
45 2 if(DATA) val=(val | i);
46 2 SCK=0;
47 2 }
48 1 DATA=!ack;
49 1 SCK=1;
50 1 ; ; ;
51 1 SCK=0;
52 1 DATA=1;
53 1 return val;
54 1 }
55 //读状态寄存器
C51 COMPILER V7.06 MEANSURE 11/19/2007 13:45:29 PAGE 2
56 char s_read_statusreg(unsigned char *p_value,unsigned char *p_checksum)
57 {
58 1 unsigned char error=0;
59 1 s_transstart();
60 1 error=s_write_byte(ACK);
61 1 *p_value=s_read_byte(ACK);
62 1 *p_checksum=s_read_byte(noACK);
63 1 return error;
64 1 }
65 //写状态寄存器
66 char s_write_statusreg(unsigned char *p_value)
67 {
68 1 unsigned char error=0;
69 1 s_transstart();
70 1 error+=s_write_byte(STATUS_REG_R);
71 1 error+=s_write_byte(*p_value);
72 1 return error;
73 1 }
74 //读温湿度数据
75 char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode)
76 {
77 1 unsigned char error=0;
78 1 unsigned int i;
79 1 s_transstart();
80 1 switch(mode)
81 1 {
82 2 case TEMP:error+=s_write_byte(MEASURE_TEMP);break;
83 2 case HUMI:error+=s_write_byte(MEASURE_HUMI);break;
84 2 default:break;
85 2 }
86 1 for (i=0;i<65535;i++) if(DATA==0) break;
87 1 if (DATA) error+=1;
88 1 *(p_value)=s_read_byte(SCK);
89 1 *(p_value+1)=s_read_byte(SCK);
90 1 *p_checksum=s_read_byte(SCK);
91 1 return error;
92 1 }
93
94 //温湿度值标度变换及温度补偿
95 void calc_sth15(float *p_humidity,float *p_temperature)
96 {
97 1 const float c1=-4.0;
98 1 const float c2=0.0405;
99 1 const float c3=-0.0000028;
100 1 const float t1=-0.01;
101 1 const float t2=0.00008;
102 1 float rh=*p_humidity;
103 1 float t=*p_temperature;
104 1 float rh_lin;
105 1 float th_ture;
106 1 float t_c;
107 1 t_c=t*0.01-40;
108 1 rh_lin=c3*rh*rh+c2*rh+c1;
109 1 th_ture=(t_c-25)*(t1+t2*rh)+rh_lin;
110 1 *p_temperature=t_c;
111 1 *p_humidity=th_ture;
112 1 }
113
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 632 ----
C51 COMPILER V7.06 MEANSURE 11/19/2007 13:45:29 PAGE 3
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 60
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -