?? 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 + -