📄 ds18b20.lst
字号:
C51 COMPILER V7.20 DS18B20 07/26/2006 17:37:29 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN DS18B20.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil V7.20\C51\BIN\C51.EXE DS18B20.C BROWSE DEBUG OBJECTEXTEND
line level source
1 //*************************************************************************************************
2 // Module Name : DS18B20.C
3 // CreateDate : 2006-07-13
4 // ModifData : 2006-07-13
5 // Description : For STC MCU
6 // Author : Explorer01
7 // Version : V1.0
8 //*************************************************************************************************
9 //
10 //-------------------------------------------------------------------------------------------------
11 // Includes
12 //-------------------------------------------------------------------------------------------------
13
14 #include <STC51.H>
15 #include "DS18B20.H"
16
17 //-------------------------------------------------------------------------------------------------
18 // Global CONSTANTS
19 //-------------------------------------------------------------------------------------------------
20 //
21 unsigned int TEMPER;
22
23 //=================================================================================================
24 // Functions
25 //=================================================================================================
26 //-------------------------------------------------------------------------------------------------
27 // Delay, Fosc = 11.0592MHz
28 void mDelay( unsigned int msecond )
29 {
30 1 while( msecond-- );
31 1 }
32
33 //-------------------------------------------------------------------------------------------------
34 //-------------------------------------------------------------------------------------------------
35 // Send a byte to DS18B20
36 void DS18B20Write( unsigned char datum )
37 {
38 1 unsigned char i;
39 1
40 1 for( i=0; i<8; i++ )
41 1 {
42 2 // 60us -- 120us
43 2 DS18B20_DQ = 0;
44 2 mDelay( 5 ); // 1us -- 15us
45 2 DS18B20_DQ = datum & 0x01;
46 2 mDelay( 80 ); // Delay : Master write '0'/'1' slot : 60us -- 120us
47 2 DS18B20_DQ = 1;
48 2 datum >>= 1;
49 2 }
50 1 }
51
52 //-------------------------------------------------------------------------------------------------
53 // Read a byte from DS18B20
54 unsigned char DS18B20Read( void )
55 {
C51 COMPILER V7.20 DS18B20 07/26/2006 17:37:29 PAGE 2
56 1 unsigned char i, datum=0;
57 1
58 1 for( i=0; i<8; i++ )
59 1 {
60 2 // 60us -- 120us
61 2 DS18B20_DQ = 0;
62 2 datum >>= 1;
63 2 mDelay( 5 ); // 1us -- 15us
64 2 DS18B20_DQ = 1;
65 2 mDelay( 5 ); // <= 15us
66 2 if( DS18B20_DQ ) datum |= 0x80;
67 2 mDelay( 60 ); // Delay : Master read '0'/'1' slot : 60us -- 120us
68 2 DS18B20_DQ = 1;
69 2 }
70 1
71 1 return( datum );
72 1 }
73
74 //=================================================================================================
75 //=================================================================================================
76 //
77 //-------------------------------------------------------------------------------------------------
78 // DS18B20 Initialization Procedure
79 void DS18B20RST( void )
80 {
81 1 DS18B20_DQ = 0;
82 1 mDelay( 960 ); // Master Tx "reset puls" : (480us -- 960us)
83 1 DS18B20_DQ = 1;
84 1 // Master Rx : >= 480us
85 1 mDelay( 100 ); // DS18B20 wait : 15us -- 60us
86 1 if( DS18B20_DQ ) mDelay( 150 );
87 1 mDelay( 500 );
88 1 }
89
90 //-------------------------------------------------------------------------------------------------
91 // Get the temperature
92 void DS18B20Temperature( void )
93 {
94 1 unsigned char TEMPER_L,TEMPER_H;
95 1 unsigned int temp;
96 1
97 1 DS18B20RST( );
98 1 DS18B20Write( 0xCC ); // Skip ROM
99 1 DS18B20Write( 0xBE ); // Read Scratchpad
100 1
101 1 TEMPER_L = DS18B20Read( ); // LSB
102 1 TEMPER_H = DS18B20Read( ); // MSB
103 1
104 1 temp = TEMPER_H;
105 1 temp <<= 8;
106 1 temp |= TEMPER_L;
107 1
108 1 TEMPER = temp;
109 1
110 1 // TEMPER = temp/2*125; // Temperatre regulate
111 1 // TEMPER += temp%2*62;
112 1
113 1 DS18B20RST( );
114 1 DS18B20Write( 0xCC ); // Skip ROM
115 1 DS18B20Write( 0x44 ); // Start next temperature convertion
116 1 }
117
C51 COMPILER V7.20 DS18B20 07/26/2006 17:37:29 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 162 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
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 + -