?? dht11.lst
字號:
C51 COMPILER V8.08 DHT11 11/01/2012 15:20:15 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 11/01/2012 15:20:15 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 11/01/2012 15:20:15 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 + -