C51 COMPILER V9.60.7.0 ONEWIRE 03/10/2025 18:03:54 PAGE 1 C51 COMPILER V9.60.7.0, COMPILATION OF MODULE ONEWIRE OBJECT MODULE PLACED IN .\Objects\onewire.obj COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\driver\onewire.c OPTIMIZE(8,SPEED) BROWSE INCDIR(..\driver;..\user) D -EBUG OBJECTEXTEND PRINT(.\Listings\onewire.lst) TABS(2) OBJECT(.\Objects\onewire.obj) line level source 1 /* # 单总线代码片段说明 2 1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。 3 2. 4 参赛选手可以自行编写相关代码或以该代码为基础,根据所选单片机类型、运 -速度和试题 5 中对单片机时钟频率的要求,进行代码调试和修改。 6 */ 7 #include "onewire.h" 8 sbit DQ = P1 ^ 4; 9 // 10 void Delay_OneWire(unsigned int t) { 11 1 unsigned char i; 12 1 while (t--) { 13 2 for (i = 0; i < 12; i++); 14 2 } 15 1 } 16 17 // 18 void Write_DS18B20(unsigned char dat) { 19 1 unsigned char i; 20 1 for (i = 0; i < 8; i++) { 21 2 DQ = 0; 22 2 DQ = dat & 0x01; 23 2 Delay_OneWire(5); 24 2 DQ = 1; 25 2 dat >>= 1; 26 2 } 27 1 Delay_OneWire(5); 28 1 } 29 30 // 31 unsigned char Read_DS18B20(void) { 32 1 unsigned char i; 33 1 unsigned char dat; 34 1 35 1 for (i = 0; i < 8; i++) { 36 2 DQ = 0; 37 2 dat >>= 1; 38 2 DQ = 1; 39 2 if (DQ) { 40 3 dat |= 0x80; 41 3 } 42 2 Delay_OneWire(5); 43 2 } 44 1 return dat; 45 1 } 46 47 // 48 bit init_ds18b20(void) { 49 1 bit initflag = 0; 50 1 51 1 DQ = 1; 52 1 Delay_OneWire(12); 53 1 DQ = 0; C51 COMPILER V9.60.7.0 ONEWIRE 03/10/2025 18:03:54 PAGE 2 54 1 Delay_OneWire(80); 55 1 DQ = 1; 56 1 Delay_OneWire(10); 57 1 initflag = DQ; 58 1 Delay_OneWire(5); 59 1 60 1 return initflag; 61 1 } 62 63 float rd_temperature() { 64 1 unsigned char low, high; 65 1 init_ds18b20(); 66 1 Write_DS18B20(0xcc); 67 1 Write_DS18B20(0x44); 68 1 69 1 Delay_OneWire(200); 70 1 71 1 init_ds18b20(); 72 1 Write_DS18B20(0xcc); 73 1 Write_DS18B20(0xbe); 74 1 low = Read_DS18B20(); 75 1 high = Read_DS18B20(); 76 1 return (float)(high << 8 | low) * 0.0625; 77 1 } MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 180 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = ---- ---- IDATA SIZE = ---- ---- BIT SIZE = ---- 1 END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)