51_LanQiaoBei/模板/蓝桥杯全模块测试例程/DS18B20温度模块/User/Listings/onewire.lst
2025-04-13 01:02:19 +08:00

126 lines
4.0 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

C51 COMPILER V9.59.0.0 ONEWIRE 05/02/2024 15:57:34 PAGE 1
C51 COMPILER V9.59.0.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) DEBUG OBJ
-ECTEXTEND PRINT(.\Listings\onewire.lst) TABS(2) OBJECT(.\Objects\onewire.obj)
line level source
1 /* # 蜊墓€サ郤ソ莉」遐∫援谿オ隸エ譏<EFBDB4>
2 1. 譛ャ譁<EFBDAC>サカ螟ケ荳ュ謠蝉セ帷噪鬩ア蜉ィ莉」遐∽セ帛盾襍幃€画焔螳梧<E89EB3>遞句コ剰ョセ隶。蜿り€<E3828A>€<EFBFBD>
3 2. 蜿りオ幃€画焔蜿ッ莉・閾ェ陦檎シ門<EFBDBC>逶ク蜈ウ莉」遐∵<E98190>莉・隸・莉」遐∽クコ蝓コ遑€<E98191><EFBFBD>ケ謐ョ謇€騾牙黒迚<E9BB92>惻邀サ蝙九€∬ソ
-占。碁€溷コヲ蜥瑚ッ暮「<E69AAE>
4 荳ュ蟇ケ蜊慕援譛コ譌カ髓滄「醍紫逧<E7B4AB>ヲ∵アゑシ瑚ソ幄。御サ」遐∬ー<E288AC>ッ募柱菫ョ謾ケ縲<EFBDB9>
5 */
6 #include "onewire.h"
7 #include "REG52.H"
8 #include "intrins.h"
9 sbit DQ = P1 ^ 4; // 蜊墓€サ郤ソ謨ー謐ョ蜿」
10 void Delay4us(void) //@12.000MHz
11 {
12 1 unsigned char data i;
13 1
14 1 _nop_();
15 1 _nop_();
16 1 i = 9;
17 1 while (--i)
18 1 ;
19 1 }
20
21 //
22 void Delay_OneWire(unsigned int t)
23 {
24 1 unsigned char i;
25 1 while (t--)
26 1 {
27 2 for (i = 0; i < 12; i++)
28 2 ;
29 2 }
30 1 }
31
32 //
33 void Write_DS18B20(unsigned char dat)
34 {
35 1 unsigned char i;
36 1 for (i = 0; i < 8; i++)
37 1 {
38 2 DQ = 0;
39 2 DQ = dat & 0x01;
40 2 Delay_OneWire(5);
41 2 DQ = 1;
42 2 dat >>= 1;
43 2 }
44 1 Delay_OneWire(5);
45 1 }
46
47 //
48 unsigned char Read_DS18B20(void)
49 {
50 1 unsigned char i;
51 1 unsigned char dat;
52 1
53 1 for (i = 0; i < 8; i++)
C51 COMPILER V9.59.0.0 ONEWIRE 05/02/2024 15:57:34 PAGE 2
54 1 {
55 2 DQ = 0;
56 2 dat >>= 1;
57 2 DQ = 1;
58 2 Delay4us();
59 2 if (DQ)
60 2 {
61 3 dat |= 0x80;
62 3 }
63 2 Delay_OneWire(5);
64 2 }
65 1 return dat;
66 1 }
67
68 //
69 bit init_ds18b20(void)
70 {
71 1 bit initflag = 0;
72 1
73 1 DQ = 1;
74 1 Delay_OneWire(12);
75 1 DQ = 0;
76 1 Delay_OneWire(80);
77 1 DQ = 1;
78 1 Delay_OneWire(10);
79 1 initflag = DQ;
80 1 Delay_OneWire(5);
81 1
82 1 return initflag;
83 1 }
84
85 float rd_temperature()
86 {
87 1 unsigned char low, high;
88 1 init_ds18b20();
89 1 Write_DS18B20(0xcc); // 霍ウ霑⑲OM
90 1 Write_DS18B20(0x44); // 蜷ッ蜉ィ貂ゥ蠎ヲ霓ャ謐「
91 1 Delay_OneWire(200); // 遲牙セ<E78999>クゥ蠎ヲ霓ャ謐「
92 1 init_ds18b20();
93 1 Write_DS18B20(0xcc); // 霍ウ霑⑲OM
94 1 Write_DS18B20(0xbe); // 隸サ蜿匁クゥ蠎ヲ蛟シ
95 1 low = Read_DS18B20();
96 1 high = Read_DS18B20();
97 1 return (float)(high << 8 | low) * 0.0625;
98 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 212 ----
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)