📄 dht11.lst.svn-base
字号:
C51 COMPILER V8.08 DHT11 01/12/2012 22:02:49 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE DHT11
OBJECT MODULE PLACED IN DHT11.OBJ
COMPILER INVOKED BY: D:\Program Files\keil_51\C51\BIN\C51.EXE DHT11.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "NEW_8051.H"
2 #include"task.h"
3 #include <intrins.h>
4 #include"sbit.h"
5 uchar ucTemp;
6
7 //----------------------------------------------//
8 //----------------定义区--------------------//
9 //----------------------------------------------//
10 U8 U8FLAG;
11 U8 U8count,U8temp;
12 U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
13 U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
14 U8 ucComdata;
15 //uchar data temp_data[2] = {0x00,0x00};
16 /***************************************************************/
17 void Delay_10us(void)
18 {
19 1 unsigned char a,b;
20 1 for(b=1;b>0;b--)
21 1 for(a=89;a>0;a--);
22 1
23 1 }
24 /***********************************/
25 void COM(void)
26 {
27 1 uchar i;
28 1 for(i=0;i<8;i++)
29 1 {
30 2 FLAG=2;
31 2 while((!DQ)&&FLAG++);
32 2 Delay_10us();
33 2 Delay_10us();
34 2 Delay_10us();
35 2 ucTemp=0;
36 2 if(DQ)
37 2 ucTemp=1;
38 2 FLAG=2;
39 2 while((DQ)&&FLAG++);
40 2 //超时则跳出for循环
41 2 if(FLAG==1)
42 2 break;
43 2 //判断数据位是0还是1
44 2 // 如果高电平高过预定0高电平值则数据位为 1
45 2 ucComdata<<=1;
46 2 ucComdata|=ucTemp;
47 2 }
48 1
49 1 }
50
51 //--------------------------------
52 //-----湿度读取子程序 ------------
53 //--------------------------------
54 //----以下变量均为全局变量--------
55 //----温度高8位== T_data_H------
C51 COMPILER V8.08 DHT11 01/12/2012 22:02:49 PAGE 2
56 //----温度低8位== T_data_L------
57 //----湿度高8位== RH_data_H-----
58 //----湿度低8位== RH_data_L-----
59 //----校验 8位 == checkdata-----
60 //----调用相关子程序如下----------
61 //---- Delay();, Delay_10us();,COM();
62 //--------------------------------
63 /*******************************************/
64 void RH(void)
65 {
66 1 if(rr==1)
67 1 {
68 2 rr=0;
69 2 //主机拉低18ms
70 2 DQ=0;
71 2 TR0=1;
72 2 }
73 1 // Delay2(180);
74 1 else if(zz==1)
75 1 {
76 2
77 2 rr=1;
78 2 //zz=0;
79 2 DQ=1;
80 2 //总线由上拉电阻拉高 主机延时20us
81 2 Delay_10us();
82 2 Delay_10us();
83 2 Delay_10us();
84 2 //主机设为输入 判断从机响应信号
85 2 DQ=1;
86 2 //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行
87 2 if(!DQ) //T !
88 2 {
89 3 U8FLAG=2;
90 3 //判断从机是否发出 80us 的低电平响应信号是否结束
91 3 while((!DQ)&&U8FLAG++);
92 3 U8FLAG=2;
93 3 //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
94 3 while((DQ)&&U8FLAG++);
95 3 //数据接收状态
96 3 COM();
97 3 U8RH_data_H_temp=ucComdata;
98 3 COM();
99 3 U8RH_data_L_temp=ucComdata;
100 3 COM();
101 3 U8T_data_H_temp=ucComdata;
102 3 COM();
103 3 U8T_data_L_temp=ucComdata;
104 3 COM();
105 3 U8checkdata_temp=ucComdata;
106 3 DQ=1;
107 3 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
108 3 if(U8temp==U8checkdata_temp)
109 3 {
110 4 U8RH_data_H=U8RH_data_H_temp;
111 4 U8RH_data_L=U8RH_data_L_temp;
112 4 U8T_data_H=U8T_data_H_temp;
113 4 U8T_data_L=U8T_data_L_temp;
114 4 U8checkdata=U8checkdata_temp;
115 4 nn=0;
116 4 mm=0;
117 4 }
C51 COMPILER V8.08 DHT11 01/12/2012 22:02:49 PAGE 3
118 3 }
119 2
120 2 }
121 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 193 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 ----
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 + -