📄 ds2401.lst
字号:
C51 COMPILER V7.50 DS2401 06/11/2008 15:16:27 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE DS2401
OBJECT MODULE PLACED IN DS2401.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE DS2401.C BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include "sys.h"
3 //******************************DS2401初始化*************************
4
5 unsigned char DS2401Init(void)
6 {
7 1 unsigned char result;
8 1 DelayNus(G);
9 1 DS2401IO = 0; // Drives DQ low
10 1 DelayNus(H);
11 1 DS2401IO = 1; // Releases the bus
12 1 DelayNus(I);
13 1 if(DS2401IO==0)
14 1 result = 1;
15 1 else
16 1 result = 0;
17 1 DelayNus(J); // Complete the reset sequence recovery
18 1 return result; // Return sample presence pulse result
19 1 //1代表初始化成功,0代表失败
20 1 }
21
22 //******************************发送读写命令*************************
23 void SendOrderToDS2401(unsigned char order)
24 {
25 1 unsigned char Temp = 8;
26 1 while(Temp)
27 1 {
28 2 if(order&0x80)
29 2 {
30 3 DS2401IO = 0;
31 3 DelayNus(40);//拉低10us
32 3 DS2401IO = 1;//拉高
33 3 DelayNus(200);
34 3 }
35 2 else
36 2 {
37 3 DS2401IO = 0;
38 3 DelayNus(100);//拉低100us
39 3 DS2401IO = 1;//拉高
40 3 DelayNus(200);
41 3 }
42 2 Temp--;
43 2 order<<=1;
44 2 }
45 1
46 1 }
47
48 //*****************************对2401写一位数据**********************
49 void DS2401WriteBit(bit b)
50 {
51 1 if (b)
52 1 {
53 2 // Write '1' bit
54 2 DS2401IO = 0; // Drives DQ low
55 2 DelayNus(A);
C51 COMPILER V7.50 DS2401 06/11/2008 15:16:27 PAGE 2
56 2 DS2401IO = 1; // Releases the bus
57 2 DelayNus(B); // Complete the time slot and 10us recovery
58 2 }
59 1 else
60 1 {
61 2 // Write '0' bit
62 2 DS2401IO = 0; // Drives DQ low
63 2 DelayNus(C);
64 2 DS2401IO = 1; // Releases the bus
65 2 DelayNus(D);
66 2 }
67 1 }
68
69 //*****************************对2401读一位数据**********************
70
71 unsigned char DS2401ReadBit(void)
72 {
73 1 unsigned char result;
74 1 DS2401IO = 0; // Drives DQ low
75 1 DelayNus(A);
76 1 DS2401IO = 1; // Releases the bus
77 1 DelayNus(E);
78 1 result = DS2401IO ;; // Sample the bit value from the slave
79 1 DelayNus(F); // Complete the time slot and 10us recovery
80 1 return result;
81 1 }
82 //*****************************对2401写一个字节数据**********************
83
84 void OWWriteByte(int value)
85 {
86 1 unsigned char loop;
87 1 for (loop = 0; loop < 8; loop++)
88 1 {
89 2 DS2401WriteBit(value & 0x01);
90 2 value >>= 1;
91 2 }
92 1 }
93 //*****************************对2401读一个字节数据**********************
94
95 unsigned char OWReadByte(void)
96 {
97 1 unsigned char loop, result=0;
98 1 for (loop = 0; loop < 8; loop++)
99 1 {
100 2 result >>= 1;
101 2 if (DS2401ReadBit())
102 2 result |= 0x80;
103 2 }
104 1 return result;
105 1 }
106
107 //******************************读DS2401 ID 号*************************
108 void ReadDS2401ID(void)
109 {
110 1
111 1 unsigned char Temp=0;
112 1 while(1)
113 1 {
114 2 if(DS2401Init())
115 2 {
116 3 DS2401WorkOK = 1;//表示DS2401初始化成功
117 3 break;
C51 COMPILER V7.50 DS2401 06/11/2008 15:16:27 PAGE 3
118 3 }
119 2 else Temp++;
120 2 if(Temp>=10)
121 2 {
122 3 DS2401WorkOK=0;//初始化10次失败的化,表示DS2401工作不正常
123 3 break;
124 3 }
125 2 }
126 1 if(DS2401WorkOK)
127 1 {
128 2 OWWriteByte(0x33);//发送读命令码
129 2 for (Temp=0;Temp<8;Temp++)
130 2 {
131 3 IDCode[Temp] = OWReadByte();//读一个字节,总共8个
132 3 }
133 2 }
134 1
135 1 }
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 294 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 10
IDATA SIZE = ---- ----
C51 COMPILER V7.50 DS2401 06/11/2008 15:16:27 PAGE 4
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -