131 lines
4.2 KiB
Plaintext
131 lines
4.2 KiB
Plaintext
|
C51 COMPILER V9.60.7.0 ONEWIRE 04/15/2025 20:33:28 PAGE 1
|
|||
|
|
|||
|
|
|||
|
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE ONEWIRE
|
|||
|
OBJECT MODULE PLACED IN .\Objects\onewire.obj
|
|||
|
COMPILER INVOKED BY: C:\Users\ZBright\AppData\Local\Keil_v5\C51\BIN\C51.EXE ..\Driver\onewire.c OPTIMIZE(8,SPEED) BROWSE
|
|||
|
- INCDIR(..\Driver) DEBUG OBJECTEXTEND PRINT(.\Listings\onewire.lst) OBJECT(.\Objects\onewire.obj)
|
|||
|
|
|||
|
line level source
|
|||
|
|
|||
|
1 /* # 单总线代码片段说明
|
|||
|
2 1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。
|
|||
|
3 2. 参赛选手可以自行编写相关代码或以该代码为基础,根据所选单片机类型、<E59E8B><E38081>
|
|||
|
-<2D>行速度和试题
|
|||
|
4 中对单片机时钟频率的要求,进行代码调试和修改。
|
|||
|
5 */
|
|||
|
6
|
|||
|
7 #include <onewire.h>
|
|||
|
8
|
|||
|
9 sbit DQ = P1^4;
|
|||
|
10
|
|||
|
11 //
|
|||
|
12 void Delay_OneWire(unsigned int t)
|
|||
|
13 {
|
|||
|
14 1 unsigned char i;
|
|||
|
15 1 while(t--){
|
|||
|
16 2 for(i=0;i<12;i++);
|
|||
|
17 2 }
|
|||
|
18 1 }
|
|||
|
19
|
|||
|
20 //
|
|||
|
21 void Write_DS18B20(unsigned char dat)
|
|||
|
22 {
|
|||
|
23 1 unsigned char i;
|
|||
|
24 1 for(i=0;i<8;i++)
|
|||
|
25 1 {
|
|||
|
26 2 DQ = 0;
|
|||
|
27 2 DQ = dat&0x01;
|
|||
|
28 2 Delay_OneWire(5);
|
|||
|
29 2 DQ = 1;
|
|||
|
30 2 dat >>= 1;
|
|||
|
31 2 }
|
|||
|
32 1 Delay_OneWire(5);
|
|||
|
33 1 }
|
|||
|
34
|
|||
|
35 //
|
|||
|
36 unsigned char Read_DS18B20(void)
|
|||
|
37 {
|
|||
|
38 1 unsigned char i;
|
|||
|
39 1 unsigned char dat;
|
|||
|
40 1
|
|||
|
41 1 for(i=0;i<8;i++)
|
|||
|
42 1 {
|
|||
|
43 2 DQ = 0;
|
|||
|
44 2 dat >>= 1;
|
|||
|
45 2 DQ = 1;
|
|||
|
46 2 if(DQ)
|
|||
|
47 2 {
|
|||
|
48 3 dat |= 0x80;
|
|||
|
49 3 }
|
|||
|
50 2 Delay_OneWire(5);
|
|||
|
51 2 }
|
|||
|
52 1 return dat;
|
|||
|
53 1 }
|
|||
|
C51 COMPILER V9.60.7.0 ONEWIRE 04/15/2025 20:33:28 PAGE 2
|
|||
|
|
|||
|
54
|
|||
|
55 //
|
|||
|
56 bit init_ds18b20(void)
|
|||
|
57 {
|
|||
|
58 1 bit initflag = 0;
|
|||
|
59 1
|
|||
|
60 1 DQ = 1;
|
|||
|
61 1 Delay_OneWire(12);
|
|||
|
62 1 DQ = 0;
|
|||
|
63 1 Delay_OneWire(80);
|
|||
|
64 1 DQ = 1;
|
|||
|
65 1 Delay_OneWire(10);
|
|||
|
66 1 initflag = DQ;
|
|||
|
67 1 Delay_OneWire(5);
|
|||
|
68 1
|
|||
|
69 1 return initflag;
|
|||
|
70 1 }
|
|||
|
71
|
|||
|
72 float Tempr_Read()
|
|||
|
73 {
|
|||
|
74 1 unsigned char low;
|
|||
|
75 1 unsigned char high;
|
|||
|
76 1
|
|||
|
77 1 init_ds18b20();
|
|||
|
78 1 Write_DS18B20(0xcc);
|
|||
|
79 1 Write_DS18B20(0x44);
|
|||
|
80 1 Delay_OneWire(200);
|
|||
|
81 1
|
|||
|
82 1 init_ds18b20();
|
|||
|
83 1 Write_DS18B20(0xcc);
|
|||
|
84 1 Write_DS18B20(0xbe);
|
|||
|
85 1
|
|||
|
86 1 low = Read_DS18B20();
|
|||
|
87 1 high = Read_DS18B20();
|
|||
|
88 1
|
|||
|
89 1 return ((high << 8) | low) /16.0;
|
|||
|
90 1
|
|||
|
91 1 }
|
|||
|
92
|
|||
|
93
|
|||
|
94
|
|||
|
95
|
|||
|
96
|
|||
|
97
|
|||
|
98
|
|||
|
99
|
|||
|
100
|
|||
|
101
|
|||
|
102
|
|||
|
103
|
|||
|
|
|||
|
|
|||
|
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)
|