📄 18b20.lst
字号:
246 1 if(Type==SensorA)
247 1 {
248 2 DQ1=1;
249 2 DQ1=0;
250 2 _nop_();
251 2 _nop_();
252 2 _nop_();
253 2 _nop_();
254 2 _nop_();
255 2 _nop_();
256 2 _nop_();
257 2 _nop_();
258 2 _nop_();
259 2 _nop_();
260 2 _nop_();
261 2 _nop_();
262 2 DQ1=1;
263 2 Delay(T80us);
264 2 }
265 1 else
266 1 {
267 2 DQ2=1;
268 2 DQ2=0;
269 2 _nop_(); //0.5us
270 2 _nop_();
271 2 _nop_();
272 2 _nop_();
273 2 _nop_();
274 2 _nop_();
275 2 _nop_();
276 2 _nop_();
277 2 _nop_();
278 2 _nop_();
279 2 _nop_();
280 2 _nop_();
281 2 DQ2=1;
282 2 Delay(T80us);
283 2 }
284 1 }
285 //--------------------------------------------------------------------------------------------------------
-----
286 bit ReadTS(U8 Type) //READ 1 BIT FROM 18B20
287 {
288 1 bit b;
289 1
C51 COMPILER V7.01 18B20 03/02/2007 19:03:03 PAGE 6
290 1 if(Type==SensorA)
291 1 {
292 2 DQ1=1;
293 2 DQ1=0;
294 2 _nop_();
295 2 _nop_();
296 2 _nop_();
297 2 _nop_();
298 2 _nop_();
299 2 DQ1=1;
300 2 _nop_();
301 2 _nop_();
302 2 _nop_();
303 2 _nop_();
304 2 _nop_();
305 2 b=DQ1;
306 2 Delay(T40us);
307 2 }
308 1 else
309 1 {
310 2 DQ2=1;
311 2 DQ2=0;
312 2 _nop_();
313 2 _nop_();
314 2 _nop_();
315 2 _nop_();
316 2 _nop_();
317 2 DQ2=1;
318 2 _nop_();
319 2 _nop_();
320 2 _nop_();
321 2 _nop_();
322 2 _nop_();
323 2 b=DQ2;
324 2 Delay(T40us);
325 2 }
326 1 return b;
327 1 }
328 //--------------------------------------------------------------------------------------------------------
-----
329 void WriteByteTS(U8 byte,U8 Type) //Write one byte to 18B20
330 {
331 1 U8 i;
332 1 for(i=0;i<8;i++)
333 1 {
334 2 if(byte&0x01)
335 2 Write1TS(Type);
336 2 else
337 2 Write0TS(Type);
338 2 byte=byte>>1;
339 2 }
340 1 }
341 //--------------------------------------------------------------------------------------------------------
----
342 U8 ReadByteTS(U8 Type) //Read one byte from 18B20
343 {
344 1 U8 i,j;
345 1 bit b;
346 1 j=0;
347 1 for(i=0;i<8;i++)
348 1 {
349 2 b=ReadTS(Type);
C51 COMPILER V7.01 18B20 03/02/2007 19:03:03 PAGE 7
350 2 if(b)
351 2 j+=1;
352 2 j=_cror_(j,1);
353 2 }
354 1 return j;
355 1 }
356 //--------------------------------------------------------------------------------------------------------
----
357 U16 GetTempTS(U8 Type) //READ 2 BYTES T
358 {
359 1 float Temperature;
360 1 U8 TempL,TempH;
361 1 U16 Temp;
362 1
363 1 ResetTS(Type);
364 1 WriteByteTS(0xCC,Type);
365 1 WriteByteTS(0x44,Type);
366 1 Delay100ms();
367 1 ResetTS(Type);
368 1 WriteByteTS(0xCC,Type);
369 1 WriteByteTS(0xBE,Type);
370 1 TempL=ReadByteTS(Type); //LOW byte
371 1 TempH=ReadByteTS(Type); //HIG BYTE
372 1 Temp=((TempH & 0x0f)<<4)|((TempL & 0xf0)>>4);
373 1 Temperature=Temp+(TempL & 0x0f)*0.0625;
374 1 Temp=Temperature;
375 1 Temp=Temperature*1000;
376 1 return(Temp);
377 1 }
378 //=======================LCD SUBPROGRAM START=============================================================
-====
379 //write data
380 void WriteDataLCM(U8 WDLCM)
381 {
382 1 ReadStatusLCM();
383 1 LCM_Data = WDLCM;
384 1 LCM_RS = 1;
385 1 LCM_RW = 0;
386 1 Delay(T60us);
387 1 LCM_E = 1;
388 1 Delay(T480us);
389 1 LCM_E = 0;
390 1 }
391 //---------------------------------------------------------------------------------------
392 //write command
393 void WriteCommandLCM(U8 WCLCM,BuysC)
394 {
395 1 if (BuysC)
396 1 ReadStatusLCM();
397 1 LCM_Data = WCLCM;
398 1 LCM_RS = 0;
399 1 LCM_RW = 0;
400 1 Delay(T60us);
401 1 LCM_E = 1;
402 1 Delay(T480us);
403 1 LCM_E = 0;
404 1 }
405 //-----------------------------------------------------------------------------------------
406 //read status
407 U8 ReadStatusLCM(void)
408 {
409 1 LCM_Data = 0xFF;
C51 COMPILER V7.01 18B20 03/02/2007 19:03:03 PAGE 8
410 1 LCM_RS = 0;
411 1 LCM_RW = 1;
412 1 Delay(T60us);
413 1 LCM_E = 1;
414 1 while (LCM_Data & Busy);
415 1 LCM_E = 0;
416 1 return(LCM_Data);
417 1 }
418 //------------------------------------------------------------------------------------------
419 //lcd initial
420 void LCMInit(void)
421 {
422 1 LCM_Data =0x00;
423 1 LCM_RS = 0;
424 1 LCM_RW = 0;
425 1 LCM_E = 0;
426 1 WriteCommandLCM(0x38,1);
427 1 WriteCommandLCM(0x38,1);
428 1 WriteCommandLCM(0x38,1);
429 1
430 1 WriteCommandLCM(0x38,1);
431 1 WriteCommandLCM(0x08,1);
432 1 WriteCommandLCM(0x01,1);
433 1 WriteCommandLCM(0x06,1);
434 1 WriteCommandLCM(0x0c,1);
435 1 }
436 //----------------------------------------------------------------------------------------
437 void DisplayOneChar(U8 X, U8 Y, U8 DData)
438 {
439 1 Y &= 0x1;
440 1 X &= 0xF;
441 1 if (Y)
442 1 X |= 0x40;
443 1 X |= 0x80;
444 1 WriteCommandLCM(X, 0);
445 1 WriteDataLCM(DData);
446 1 }
447 //-----------------------------------------------------------------------------------------
448 void DisplayListChar(U8 X, U8 Y, U8 *DData)
449 {
450 1 U8 ListLength;
451 1
452 1 ListLength = 0;
453 1 Y &= 0x1;
454 1 X &= 0xF;
455 1 while (ListLength<16)
456 1 {
457 2 if (X <= 0xF)
458 2 {
459 3 DisplayOneChar(X, Y, DData[ListLength]);
460 3 ListLength++;
461 3 X++;
462 3 }
463 2 }
464 1 }
465 //-------------------------------------------------------------------------------------------
466 void DisplayTemperature(U16 TempA,U16 TempB)
467 {
468 1 U16 cData;
469 1
470 1 cData=TempA/1000;
471 1 TempBuffer[0]=(cData/100)+0x30;
C51 COMPILER V7.01 18B20 03/02/2007 19:03:03 PAGE 9
472 1 TempBuffer[1]=(cData-(TempBuffer[0]-0x30)*100)/10+0x30;
473 1 TempBuffer[2]=(cData-(TempBuffer[0]-0x30)*100-(TempBuffer[1]-0x30)*10)+0x30;
474 1 //0.xxxx
475 1 TempA=TempA-cData*1000;
476 1 TempBuffer[4]=(TempA/100)+0x30;
477 1 TempBuffer[5]=(TempA-(TempBuffer[4]-0x30)*100)/10+0x30;
478 1 TempBuffer[6]=TempA-(TempBuffer[4]-0x30)*100-(TempBuffer[5]-0x30)*10+0x30;
479 1
480 1 cData=TempB/1000;
481 1 TempBuffer[9]=(cData/100)+0x30;
482 1 TempBuffer[10]=(cData-(TempBuffer[9]-0x30)*100)/10+0x30;
483 1 TempBuffer[11]=(cData-(TempBuffer[9]-0x30)*100-(TempBuffer[10]-0x30)*10)+0x30;
484 1 //0.xxx
485 1 TempB=TempB-cData*1000;
486 1 TempBuffer[13]=(TempB/100)+0x30;
487 1 TempBuffer[14]=(TempB-(TempBuffer[13]-0x30)*100)/10+0x30;
488 1 TempBuffer[15]=TempB-(TempBuffer[13]-0x30)*100-(TempBuffer[14]-0x30)*10+0x30;;
489 1
490 1 DisplayListChar(0, 1,TempBuffer);
491 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1425 ----
CONSTANT SIZE = 119 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 28
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -