📄 urm37_wr.lst
字号:
233 1 else
234 1 return ERROR;
235 1 }
236 /********************************************************************
237 * 名称: Write_EEPROM
238 * 说明:
239 * 功能: 写模块内部的EEPROM
240 * 调用: IIC_START,SendByte,Send_BIT9RW,IIC_ACK
241 * 输入: uchar Addr,uchar Data
C51 COMPILER V7.06 URM37_WR 10/07/2005 20:45:27 PAGE 5
242 * 返回值: 操作标志
243 ***********************************************************************/
244 uchar Write_EEPROM(uchar Addr,uchar Data)
245 {
246 1 uchar Temp;
247 1 IIC_START(); //启动信号
248 1 SendByte(Addr);
249 1 Send_BIT9RW(W); //写
250 1 SendByte(Data);
251 1 Temp = IIC_ACK();
252 1 if(Temp == OK)
253 1 return OK;
254 1 else
255 1 return ERROR;
256 1
257 1 }
258 /********************************************************************
259 * 名称: Read_Ultra
260 * 说明:
261 * 功能: 读超声波测量到的距离数据
262 * 调用: IIC_START,SendByte,Send_BIT9RW,IIC_ACK,ReceiveTowByte
263 * 输入: uuint *p
264 * 返回值: 操作标志
265 ***********************************************************************/
266 uchar Read_Ultra(uint *p)//读超声波测量到的距离数据
267 {
268 1 uchar Temp;
269 1
270 1 IIC_START(); //启动信号
271 1 SendByte(150);
272 1 Send_BIT9RW(R); //读
273 1 Temp = IIC_ACK();
274 1 if(Temp == OK)
275 1 {
276 2 ReceiveTowByte(p);
277 2 return OK;
278 2 }
279 1 else
280 1 return ERROR;
281 1 }
282
283 /********************************************************************
284 * 名称: Read_AD
285 * 说明:
286 * 功能: 读AD转换数据
287 * 调用: IIC_START,SendByte,Send_BIT9RW,IIC_ACK,ReceiveTowByte
288 * 输入: uchar Channel(通道选择1 - 4) ,uint *p
289 * 返回值: 操作标志
290 ***********************************************************************/
291 uchar Read_AD(uchar Channel ,uint *p)
292 {
293 1 uchar Temp;
294 1
295 1 IIC_START(); //启动信号
296 1 SendByte(130+(Channel&0x07));
297 1 Send_BIT9RW(R); //读
298 1 Temp = IIC_ACK();
299 1 if(Temp == OK)
300 1 {
301 2 ReceiveTowByte(p);
302 2 return OK;
303 2 }
C51 COMPILER V7.06 URM37_WR 10/07/2005 20:45:27 PAGE 6
304 1 else
305 1 return ERROR;
306 1 }
307
308 /********************************************************************
309 * 名称: DisplayTemper
310 * 说明:
311 * 功能: 显示温度
312 * 调用: Read_Temper,WR_DATA10
313 * 输入: 无
314 * 返回值: 无
315 ***********************************************************************/
316 void DisplayTemper(void)//显示温度
317 {
318 1 uchar i;
319 1 uchar Temp;
320 1 uchar TemperData;
321 1 uint DataInt;
322 1 uchar array[]="Temperature: ";
323 1
324 1 Temp = Read_Temper(&DataInt);
325 1 if(Temp == OK)
326 1 {
327 2 i = 0;
328 2 //LCD_ClearLin2();
329 2 LCD_WRITE_COMM(0xc0); //
330 2 while(array[i]!='\0')
331 2 {
332 3 LCD_WRITE_DATA(array[i]);
333 3 i++;
334 3 }
335 2
336 2 TemperData = (uchar)(DataInt>>4)&0x00ff;
337 2 Temp = TemperData/10;
338 2 LCD_WRITE_DATA(0x30+Temp);
339 2 Temp= TemperData%10;
340 2 LCD_WRITE_DATA(0x30+Temp);
341 2 LCD_WRITE_DATA('C');
342 2 }
343 1 }
344
345 /********************************************************************
346 * 名称: DisplayUltra
347 * 说明:
348 * 功能: 显示超声波测量距离
349 * 调用: Read_Ultra,HEX_TO_DEC,WR_DATA10
350 * 输入: 无
351 * 返回值: 无
352 ***********************************************************************/
353 void DisplayUltra(void)//显示超声波测量距离
354 {
355 1 uchar i;
356 1 uchar Temp;
357 1 uint DataInt;
358 1 uchar Data[5];
359 1 uchar array[]="Distance: ";
360 1 Temp = Read_Ultra(&DataInt);
361 1 if(Temp == OK)
362 1 {
363 2 i = 0;
364 2 //LCD_ClearLin2();
365 2 LCD_WRITE_COMM(0xc0); //
C51 COMPILER V7.06 URM37_WR 10/07/2005 20:45:27 PAGE 7
366 2 while(array[i]!='\0')
367 2 {
368 3 LCD_WRITE_DATA(array[i]);
369 3 i++;
370 3 }
371 2 HEX_TO_DEC(DataInt,Data);
372 2 //LCD_WRITE_DATA(0x30+Data[2]);
373 2 LCD_WRITE_DATA(0x30+Data[3]);//米
374 2 LCD_WRITE_DATA('.');
375 2 LCD_WRITE_DATA(0x30+Data[2]);//分米
376 2 LCD_WRITE_DATA(0x30+Data[1]);//厘米
377 2 LCD_WRITE_DATA(0x30+Data[0]);//毫米
378 2 LCD_WRITE_DATA('m');
379 2
380 2 }
381 1 }
382 /********************************************************************
383 * 名称: EEPROM_Test
384 * 说明:
385 * 功能: 写EEPROM测试
386 * 调用: Write_EEPROM,Read_EEPROM,WR_DATA10
387 * 输入: 无
388 * 返回值: 无
389 ***********************************************************************/
390 void EEPROM_Test(void) //写EEPROM测试
391 {
392 1 uchar Temp;
393 1 uchar Temp2;
394 1 uchar i;
395 1 uchar array[]="EEPROM Test: ";
396 1 Write_EEPROM(0,0x51);
397 1 Temp = Read_EEPROM(0,&Temp2);
398 1 if(Temp == OK)
399 1 {
400 2 i = 0;
401 2 //LCD_ClearLin2();
402 2 LCD_WRITE_COMM(0xc0); //
403 2 while(array[i]!='\0')
404 2 {
405 3 LCD_WRITE_DATA(array[i]);
406 3 i++;
407 3 }
408 2 Temp = (Temp2>>4)&0x0f;
409 2 LCD_WRITE_DATA(0x30+Temp);
410 2 Temp = Temp2&0x0f;
411 2 LCD_WRITE_DATA(0x30+Temp);
412 2 }
413 1 }
414 /********************************************************************
415 * 名称: AD_Test
416 * 说明:
417 * 功能: 读内部AD测试
418 * 调用: Read_AD,HEX_TO_DEC,WR_DATA10
419 * 输入: uchar Channel:通道选择(1 - 4)
420 * 返回值: 无
421 ***********************************************************************/
422 void AD_Test(uchar Channel)//读内部AD测试
423 {
424 1 uchar Temp;
425 1 uchar i;
426 1 uint DataInt;
427 1 uchar Data[5];
C51 COMPILER V7.06 URM37_WR 10/07/2005 20:45:27 PAGE 8
428 1 uchar array[]="AD CH";
429 1 Temp = Read_AD(Channel,&DataInt);//读AD输入
430 1 if(Temp == OK)
431 1 {
432 2 i = 0;
433 2 //LCD_ClearLin2();
434 2 LCD_WRITE_COMM(0xc0); //
435 2 while(array[i]!='\0')
436 2 {
437 3 LCD_WRITE_DATA(array[i]);
438 3 i++;
439 3 }
440 2 LCD_WRITE_DATA(0x30+Channel);
441 2 LCD_WRITE_DATA(':');
442 2 LCD_WRITE_DATA(' ');
443 2 LCD_WRITE_DATA(' ');
444 2 LCD_WRITE_DATA(' ');
445 2 LCD_WRITE_DATA(' ');
446 2 LCD_WRITE_DATA(' ');
447 2 HEX_TO_DEC(DataInt,Data);
448 2 LCD_WRITE_DATA(0x30+Data[3]);
449 2 LCD_WRITE_DATA(0x30+Data[2]);
450 2 LCD_WRITE_DATA(0x30+Data[1]);
451 2 LCD_WRITE_DATA(0x30+Data[0]);
452 2
453 2 }
454 1
455 1 }
456
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 908 ----
CONSTANT SIZE = 46 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 82
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 + -