105 lines
3.4 KiB
Plaintext
105 lines
3.4 KiB
Plaintext
|
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 参赛选手可以自行编写相关代码或以该代码为基础,根据所选单片机类型、运<E38081>
|
|||
|
-<2D><>速度和试题
|
|||
|
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)
|