📄 ds1802.lst
字号:
135 *** 输 出: NO !
136 *** 创 建 人:huangtiexiong 日期:2006-11-28
137 *** 修 改 人: 日期:2006-11-28
138 *** 函数说明:
139 /******************************************************************************/
140 static void OneWire_Idle(void)
141 {
142 1 DQ = 1;
143 1 NOP();
144 1 }
145 /*******************************************************************************
146 *** 函 数 名: extern void DS18B20_Init(void)
147 *** 功能描述: 器件DS18B20初始化;
148 *** 全局变量: NO !
149 *** 输 入: NO !
150 *** 输 出: NO !
151 *** 创 建 人:huangtiexiong 日期:2006-11-28
152 *** 修 改 人: 日期:2006-11-28
153 *** 函数说明:
154 /******************************************************************************/
155 extern void DS18B20_Init(void)
156 {
157 1 OneWire_Init();
158 1 }
159 /*******************************************************************************
160 *** 函 数 名: extern void DS18B20_RomCmd(unsigned char romCmd)
161 *** 功能描述: DS18B20Rom操作命令写;
162 *** 全局变量: NO !
163 *** 输 入: romCmd;
164 *** 输 出: NO !
165 *** 创 建 人:huangtiexiong 日期:2006-11-28
166 *** 修 改 人: 日期:2006-11-28
167 *** 函数说明: 0x33:Read Rom; 0x55:Match Rom; 0xcc:Skip rom; 0xf0: Search rom;
168 0xec:Alarm Search.
169 /******************************************************************************/
170 extern void DS18B20_RomCmd(unsigned char romCmd) //仅写了SkipRom例程;
171 {
172 1 switch(romCmd)
173 1 {
174 2 case 0xcc: //Skip Rom command;
175 2 OneWire_WriteByte(0xcc);
176 2 break;
177 2
178 2 default:
C51 COMPILER V8.02 DS1802 06/01/2008 12:34:31 PAGE 4
179 2 break;
180 2 }
181 1 }
182 /*******************************************************************************
183 *** 函 数 名: extern void DS18B20_MemCmd(unsigned char memCmd)
184 *** 功能描述: DS18B20Memory 操作命令;
185 *** 全局变量: NO !
186 *** 输 入: NO !
187 *** 输 出: NO !
188 *** 创 建 人:huangtiexiong 日期:2006-11-28
189 *** 修 改 人: 日期:2006-11-28
190 *** 函数说明: 仅写了ConvertT(0x44) 和0xBE命令;
191 0x44:Convert T; 0xbe:Read Scratch-pad;
192 /******************************************************************************/
193 extern void DS18B20_MemCmd(unsigned char memCmd)
194 {
195 1 switch(memCmd)
196 1 {
197 2 case 0x44: //Start to Convert temperature;
198 2 OneWire_WriteByte(0x44);
199 2 NOP();
200 2 DS18B20_Busy();
201 2 Delay_Xms(250); //延时750ms;
202 2 Delay_Xms(250);
203 2 Delay_Xms(250);
204 2 break;
205 2
206 2 case 0xbe: //Read scratchpad;
207 2 OneWire_WriteByte(0xbe);
208 2 break;
209 2
210 2 default:
211 2 break;
212 2 }
213 1 }
214 /*******************************************************************************
215 *** 函 数 名: extern void DS18B20_ReadDat(unsigned char len,unsigned char *buf)
216 *** 功能描述: 读取DS18B20内部的Scratchpad内容;
217 *** 全局变量: NO !
218 *** 输 入: len:将要读取的数据长度;
219 *** 输 出: buf:数据缓存;
220 *** 创 建 人:huangtiexiong 日期:2006-11-28
221 *** 修 改 人: 日期:2006-11-28
222 *** 函数说明:
223 /******************************************************************************/
224 extern void DS18B20_ReadDat(unsigned char len,unsigned char *buf)
225 {
226 1 unsigned char i;
227 1 for(i=0;i<len;i++)
228 1 {
229 2 buf[i] = OneWire_ReadByte();
230 2 }
231 1 OneWire_Rst();
232 1 OneWire_Idle();
233 1 }
234 /*******************************************************************************
235 *** 函 数 名: extern void DS18B20_Busy(void)
236 *** 功能描述: 内部模数转换中,忙
237 *** 全局变量: NO !
238 *** 输 入: NO !
239 *** 输 出: NO !
240 *** 创 建 人:huangtiexiong 日期:2006-11-28
C51 COMPILER V8.02 DS1802 06/01/2008 12:34:31 PAGE 5
241 *** 修 改 人: 日期:2006-11-28
242 *** 函数说明:
243 /******************************************************************************/
244 extern void DS18B20_Busy(void)
245 {
246 1 OneWire_Idle();
247 1 }
248 /***********读取温度函数***************************************************/
249 extern void read_onetemp(unsigned char *datTm)
250 {
251 1 DS18B20_Init();
252 1 DS18B20_RomCmd(0xcc); //Skip Rom command;
253 1 Delay_Xms(3);
254 1 DS18B20_MemCmd(0x44); //Convert T command;
255 1 Delay_Xms(5);
256 1
257 1 DS18B20_Init();
258 1 DS18B20_RomCmd(0xcc);
259 1 DS18B20_MemCmd(0xbe);
260 1 DS18B20_ReadDat(2,datTm);
261 1 }
262 /*********************************End Of File**********************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 309 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 12
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 + -