📄 tem_rh.lst
字号:
C51 COMPILER V7.06 TEM_RH 07/22/2005 14:37:49 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TEM_RH
OBJECT MODULE PLACED IN .\tem_rh.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\stc直放站\tem_rh.c OMF2 BROWSE DEBUG PRINT(.\tem_rh.lst) OBJECT(.\tem_rh
-.obj)
stmt level source
1 #include <reg52.h>
2 //#include "param.h"
3 typedef unsigned char INT8U; /* 8 bit 无符号整型 */
4 typedef unsigned int INT16U; /* 16 bit 无符号整型 */
5
6 sbit sck=P1^0;
7 sbit sda=P1^1;
8 #define sht11_tep_test 0x03 //温度测量命令
9 #define sht11_rh_test 0x05 //湿度测量命令
10
11 //延时函数
12 void sht11_delay(unsigned int i)
13 {
14 1 while(--i);
15 1 }
16
17 //SHT11传输初始化
18 void sht11_Init()
19 { sda=1; //SDA高
20 1 sht11_delay(5);
21 1 sck=1; //SCL高
22 1 sht11_delay(5);
23 1 sda=0; //SDA低
24 1 sht11_delay(5);
25 1 sck=0; //SCL低
26 1 sht11_delay(5);
27 1 sck=1; //SCL高
28 1 sht11_delay(5);
29 1 sda=1; //SDA高
30 1 sht11_delay(5);
31 1 sck=0; //SCL低
32 1 sht11_delay(5);
33 1 }
34 //SHT11写测量命令字
35 void sht11_wr_comd(INT8U comd_byte)
36 { INT8U i=0;
37 1 while(i<8)
38 1 { if((comd_byte&(0x80>>i)))
39 2 { sda=1;
40 3 sht11_delay(5);
41 3 sck=1;
42 3 sht11_delay(5);
43 3 }
44 2 else
45 2 { sda=0;
46 3 sht11_delay(5);
47 3 sck=1;
48 3 sht11_delay(5);
49 3 }
50 2 i++;
51 2 }
52 1 sck=0;
53 1 sht11_delay(5);
54 1 }
C51 COMPILER V7.06 TEM_RH 07/22/2005 14:37:49 PAGE 2
55
56 //读SHT11应答信号
57 bit sht11_ack()
58 { sck=1;
59 1 sht11_delay(5);
60 1 if(sda)
61 1 return(0);
62 1 else
63 1 return(1);
64 1 }
65
66 //SHT11读两字节温湿度值
67 INT16U sht11_rd_tr()
68 { INT16U dat=0;
69 1 INT8U i,j=2;
70 1 while(sda); //等待转换完毕
71 1 while(j-->0)
72 1 { for (i=8;i>0;i--)
73 2 {
74 3 sck=1;
75 3 sht11_delay(5);
76 3 dat<<=1;
77 3 if(sda)
78 3 dat|=0x01;
79 3 sck=0;
80 3 sht11_delay(5);
81 3 }
82 2 sda=0;
83 2 sht11_delay(5);
84 2 sck=1;
85 2 sht11_delay(5);
86 2 sda=1;
87 2 }
88 1 return(dat);
89 1 }
90 //SHT11复位时序
91 void sht11_reset()
92 { INT8U i=10;
93 1 sck=1;
94 1 sht11_delay(5);
95 1 sda=1;
96 1 while(i-->0)
97 1 { sck=0;
98 2 sht11_delay(5);
99 2 sck=1;
100 2 sht11_delay(5);
101 2 }
102 1 sck=0;
103 1 }
104 //得到温湿度值
105
106 INT16U sht11_tem_rh(INT8U comd)
107 { INT16U dat;
108 1 STAR:
109 1 sht11_Init();
110 1 sht11_wr_comd(comd);
111 1 if(sht11_ack()!=0)
112 1 {
113 2 sht11_reset();
114 2 goto STAR;
115 2 }
116 1 sht11_delay(4500);
C51 COMPILER V7.06 TEM_RH 07/22/2005 14:37:49 PAGE 3
117 1 dat=sht11_rd_tr();
118 1 return(dat);
119 1 }
120
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 222 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -