📄 one-wire.lst
字号:
148 1 DQ = 1; //准备读;
149 1 _nop_();;
150 1 for(i=0;i<8;i++)
151 1 {
152 2 tmp >>= 1; //低位先发;
153 2 DQ = 0; //Read init;
154 2 _nop_(); //2ms;
155 2 DQ = 1; //必须写1,否则读出来的将是不预期的数据;
156 2 Delay_Xus(2); //延时9us;
157 2 _nop_();
158 2 if(DQ) //在12us处读取数据;
159 2 tmp |= 0x80;
160 2 Delay_Xus(30); //延时55us;
161 2 DQ = 1; //恢复One Wire Bus;
162 2 _nop_();;
163 2 }
164 1 return tmp;
165 1 }
166 /*******************************************************************************
167 *** 函 数 名: void OneWire_Idle(void)
168 *** 功能描述: 总线空闲模式;
169 *** 全局变量: NO !
170 *** 输 入: NO !
171 *** 输 出: NO !
172 *** 创 建 人:huangtiexiong 日期:2006-11-28
173 *** 修 改 人: 日期:2006-11-28
174 *** 函数说明:
175 /******************************************************************************/
176 void OneWire_Idle(void)
177 {
178 1 DQ = 1;
179 1 _nop_();;
C51 COMPILER V8.08 ONE_WIRE 07/29/2008 20:05:46 PAGE 4
180 1 }
181 /*******************************************************************************
182 *** 函 数 名: void DS18B20_Init(void)
183 *** 功能描述: 器件DS18B20初始化;
184 *** 全局变量: NO !
185 *** 输 入: NO !
186 *** 输 出: NO !
187 *** 创 建 人:huangtiexiong 日期:2006-11-28
188 *** 修 改 人: 日期:2006-11-28
189 *** 函数说明:
190 /******************************************************************************/
191 void DS18B20_Init(void)
192 {
193 1 OneWire_Init();
194 1 }
195 /*******************************************************************************
196 *** 函 数 名: void DS18B20_RomCmd(int8u romCmd)
197 *** 功能描述: DS18B20Rom操作命令写;
198 *** 全局变量: NO !
199 *** 输 入: romCmd;
200 *** 输 出: NO !
201 *** 创 建 人:huangtiexiong 日期:2006-11-28
202 *** 修 改 人: 日期:2006-11-28
203 *** 函数说明: 0x33:Read Rom; 0x55:Match Rom; 0xcc:Skip rom; 0xf0: Search rom;
204 0xec:Alarm Search.
205 /******************************************************************************/
206 void DS18B20_RomCmd(int8u romCmd) //仅写了SkipRom例程;
207 {
208 1 switch(romCmd)
209 1 {
210 2 case 0xcc: //Skip Rom command;
211 2 OneWire_WriteByte(0xcc);
212 2 break;
213 2
214 2 default:
215 2 break;
216 2 }
217 1 }
218 /*******************************************************************************
219 *** 函 数 名: void DS18B20_MemCmd(int8u memCmd)
220 *** 功能描述: DS18B20Memory 操作命令;
221 *** 全局变量: NO !
222 *** 输 入: NO !
223 *** 输 出: NO !
224 *** 创 建 人:huangtiexiong 日期:2006-11-28
225 *** 修 改 人: 日期:2006-11-28
226 *** 函数说明: 仅写了ConvertT(0x44) 和0xBE命令;
227 0x44:Convert T; 0xbe:Read Scratch-pad;
228 /******************************************************************************/
229 void DS18B20_MemCmd(int8u memCmd)
230 {
231 1 switch(memCmd)
232 1 {
233 2 case 0x44: //Start to Convert temperature;
234 2 OneWire_WriteByte(0x44);
235 2 _nop_();;
236 2 DS18B20_Busy();
237 2 Delay_Xms(250); //延时750ms;
238 2 Delay_Xms(250);
239 2 Delay_Xms(250);
240 2 break;
241 2
C51 COMPILER V8.08 ONE_WIRE 07/29/2008 20:05:46 PAGE 5
242 2 case 0xbe: //Read scratchpad;
243 2 OneWire_WriteByte(0xbe);
244 2 break;
245 2
246 2 default:
247 2 break;
248 2 }
249 1 }
250 /*******************************************************************************
251 *** 函 数 名: void DS18B20_ReadDat(int8u len,int8u *buf)
252 *** 功能描述: 读取DS18B20内部的Scratchpad内容;
253 *** 全局变量: NO !
254 *** 输 入: len:将要读取的数据长度;
255 *** 输 出: buf:数据缓存;
256 *** 创 建 人:huangtiexiong 日期:2006-11-28
257 *** 修 改 人: 日期:2006-11-28
258 *** 函数说明:
259 /******************************************************************************/
260 void DS18B20_ReadDat(int8u len,int8u *buf)
261 {
262 1 int8u i;
263 1 for(i=0;i<len;i++)
264 1 {
265 2 buf[i] = OneWire_ReadByte();
266 2 }
267 1 OneWire_Rst();
268 1 OneWire_Idle();
269 1 }
270 /*******************************************************************************
271 *** 函 数 名: void DS18B20_Busy(void)
272 *** 功能描述: 内部模数转换中,忙
273 *** 全局变量: NO !
274 *** 输 入: NO !
275 *** 输 出: NO !
276 *** 创 建 人:huangtiexiong 日期:2006-11-28
277 *** 修 改 人: 日期:2006-11-28
278 *** 函数说明:
279 /******************************************************************************/
280 void DS18B20_Busy(void)
281 {
282 1 OneWire_Idle();
283 1 }
284
285
286 /*******************************************************************************
287 **** End Of File
288 *******************************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 252 ----
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 + -