📄 tempsend.lst
字号:
C51 COMPILER V7.20 TEMPSEND 08/15/2007 15:37:07 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE TEMPSEND
OBJECT MODULE PLACED IN tempsend.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE tempsend.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3 #define uint unsigned int
4 #define uchar unsigned char
5 #define send_bus P0 /**********************定义PT2262发射引脚P2口的低四位******/
6 sbit DQ=P2^0;
7
8 uchar temp,tem10sb,tem01sb,temxsb;
9 dlay(int a)
10 {
11 1 while(--a);
12 1
13 1
14 1 }
15
16
17
18 reset(void)
19 {
20 1 unsigned char x=0;
21 1 DQ = 1; //DQ复位
22 1 dlay(8); //稍做延时
23 1 DQ = 0; //单片机将DQ拉低
24 1 dlay(80); //精确延时 大于 480us
25 1 DQ = 1; //拉高总线
26 1 dlay(14);
27 1 x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
28 1 dlay(20);
29 1 }
30 //读一个字节
31 unsigned char read_byte(void)
32 {
33 1 unsigned char i=0;
34 1 unsigned char dat = 0;
35 1 for (i=8;i>0;i--)
36 1 {
37 2 DQ = 0; // 给脉冲信号
38 2 dat>>=1;
39 2 DQ = 1; // 给脉冲信号
40 2 if(DQ)
41 2 dat|=0x80; /*LSB to MSB*/
42 2 dlay(4);
43 2 }
44 1 return(dat);
45 1 }
46
47 //写一个字节
48 write_byte(unsigned char dat)
49 {
50 1 unsigned char i=0;
51 1 for (i=8; i>0; i--)
52 1 {
53 2 DQ = 0;
54 2 DQ = dat&0x01;
55 2 dlay(5);
C51 COMPILER V7.20 TEMPSEND 08/15/2007 15:37:07 PAGE 2
56 2 DQ = 1;
57 2 dat>>=1;
58 2 }
59 1 }
60
61 //读取温度
62 unsigned char read_temperature(void)
63 {
64 1 uchar tplsb,pp;
65 1 uchar tpmsb;
66 1 // uchar xstemp;小数
67 1
68 1 reset();
69 1 write_byte(0xCC); // 跳过读序号列号的操作
70 1 write_byte(0x44); // 启动温度转换
71 1 reset();
72 1 write_byte(0xCC); //跳过读序号列号的操作
73 1 write_byte(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
74 1 tplsb=read_byte();
75 1 tpmsb=read_byte();
76 1 // xstemp=tplsb&0x0f;小数
77 1 tpmsb=tpmsb<<4;
78 1 tplsb=tplsb>>4;
79 1 pp=tplsb|tpmsb;
80 1 return(pp);
81 1 }
82 void dellay()
83 {
84 1 int i;
85 1
86 1 for(i=0;i<25;i++)
87 1 dlay(105);
88 1
89 1
90 1 }
91
92 void send_temp(void)
93 {
94 1
95 1 temp=read_temperature();
96 1
97 1
98 1
99 1 temxsb= temp&0x03;
100 1 temxsb=temxsb|0x0c; //di两位
101 1
102 1
103 1 tem10sb=temp;
104 1 tem10sb=tem10sb&0x30;
105 1 tem10sb>>=4;
106 1 tem10sb=tem10sb|0x08;//次高位
107 1
108 1
109 1 tem01sb=temp;
110 1 tem01sb=tem01sb&0x0c;
111 1 tem01sb>>=2;
112 1 tem01sb=tem01sb|0x04; //00001100
113 1
114 1
115 1
116 1
117 1
C51 COMPILER V7.20 TEMPSEND 08/15/2007 15:37:07 PAGE 3
118 1
119 1
120 1
121 1
122 1 send_bus=tem10sb;
123 1 dellay();
124 1 dellay();
125 1
126 1
127 1
128 1 send_bus=tem01sb;
129 1 dellay();
130 1 dellay();
131 1
132 1
133 1 send_bus=temxsb;
134 1 dellay();
135 1 dellay();
136 1
137 1 send_bus=temxsb;
138 1 dellay();
139 1 dellay();
140 1
141 1
142 1 send_bus=tem01sb;
143 1 dellay();
144 1 dellay();
145 1
146 1
147 1 send_bus=tem10sb;
148 1 dellay();
149 1 dellay();
150 1
151 1
152 1
153 1
154 1
155 1
156 1
157 1
158 1
159 1 }
160
161 main()
162 {
163 1
164 1
165 1
166 1 while(1)
167 1 {
168 2
169 2 send_temp();
170 2
171 2
172 2 }
173 1
174 1 }
175
176
177
178
179
C51 COMPILER V7.20 TEMPSEND 08/15/2007 15:37:07 PAGE 4
180
181
182
183
184
185
186
187
188
189
190
191
192
193
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 264 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
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 + -