📄 ds2438.lst
字号:
C51 COMPILER V7.08 DS2438 06/13/2007 16:48:13 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE DS2438
OBJECT MODULE PLACED IN ds2438.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ds2438.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<w78e58b.h>
2 #include <intrins.h>
3
4 sbit dq=P1^2;
5 sbit dq_find=P1^0;
6
7 void ds2438_write(unsigned char dst);
8 void ds2438_reset(void);
9 bit ds2438_wait(void);
10 /************* delay time ******************************/
11 void ds2438_delay(char t)
12 {
13 1 for(;t>0;t--)
14 1 {}
15 1 }
16
17 /************** wait *****************************/
18 bit ds2438_wait(void)
19 {
20 1 unsigned char i;
21 1 bit x;
22 1 x=0;
23 1 for(i=0;i<100;i++)
24 1 {
25 2 if(~dq)
26 2 {
27 3 if(dq)
28 3 {x=1;return x;}
29 3 } }
30 1 return x;
31 1
32 1 }
33
34 /************** reset ds2438 ************************/
35 void ds2438_reset(void) // reset ds2438
36 {
37 1 dq_find=0;
38 1 dq=0;
39 1 ds2438_delay(50);
40 1 dq=1;
41 1 dq_find=1;
42 1 }
43 /*************** wait responsion ***********************/
44
45 /*************** read a bit data ******************************/
46 bit ds2438_readbit(void)
47 {
48 1 bit x;
49 1 dq=0;
50 1 _nop_();
51 1 _nop_();
52 1 _nop_();
53 1 _nop_();
54 1 dq=1;
55 1 x=dq;
C51 COMPILER V7.08 DS2438 06/13/2007 16:48:13 PAGE 2
56 1 return(x);
57 1 }
58 /**************** read a byte data *****************************/
59 unsigned char ds2438_readbyte(void)
60 {
61 1 unsigned char i,dat,x;
62 1 dat=0x00;
63 1 for(i=0;i<8;i++)
64 1 {
65 2 x=ds2438_readbit();
66 2 dat=(x<<7)|(dat>>1);
67 2 }
68 1 return(dat);
69 1 }
70 /******************* write a byte data *******************************/
71 void ds2438_write(unsigned char dat)
72 {
73 1 unsigned char i,x;
74 1 for(i=0;i<8;i++)
75 1 {
76 2 x=dat&1;
77 2 dat>>=1;
78 2 if(x==1)
79 2 {
80 3 dq=0;
81 3 ds2438_delay(0);
82 3 _nop_();
83 3 _nop_();
84 3 _nop_();
85 3 _nop_();
86 3 _nop_();
87 3 _nop_();
88 3 dq=1;
89 3 }
90 2 else {
91 3 dq=0;
92 3 ds2438_delay(5);
93 3 dq=1;
94 3 }
95 2 }
96 1 }
97 /************ starting ds2438 ********************/
98 void ds2438_start(void)
99 { EA=0;
100 1 ds2438_reset();
101 1 ds2438_wait();
102 1 ds2438_write(0xcc);
103 1 ds2438_write(0x44);
104 1
105 1 ds2438_reset();
106 1 ds2438_wait();
107 1 ds2438_write(0xcc);
108 1 ds2438_write(0xb4);
109 1 ds2438_reset();
110 1 ds2438_wait();
111 1 ds2438_write(0xcc);
112 1 ds2438_write(0xb8);
113 1 ds2438_write(0x00);
114 1
115 1
116 1 EA=1;
117 1 }
C51 COMPILER V7.08 DS2438 06/13/2007 16:48:13 PAGE 3
118
119
120
121 /* bit ds2438_readbit_find(void)
122 {
123 bit x;
124 dq_find=0;
125 ds2438_delay(1);
126 dq_find=1;
127 x=dq_find;
128 return(x);
129 }
130
131 /**************** read a byte data *****************************
132 unsigned char ds2438_readbyte_find(void)
133 {
134 unsigned char i,dat,x;
135 dat=0x00;
136 for(i=0;i<8;i++)
137 {
138 x=ds2438_readbit_find();
139 ds2438_delay(1);
140 dat=(x<<7)|(dat>>1);
141 }
142 return(dat);
143 }
144
145
146 /************** wait *****************************
147 bit ds2438_wait_find(void)
148 {
149 unsigned char i;
150 bit x;
151 x=0;
152 for(i=0;i<100;i++)
153 {
154 if(~dq_find)
155 {
156 ds2438_delay(0);
157 if(dq_find)
158 {x=1;return x;}
159 } }
160 return x;
161
162
163 }
164
165 /******************* dq_find ***************************
166 void ds2438_write_find(unsigned char dat)
167 {
168 unsigned char i,x;
169 for(i=0;i<8;i++)
170 {
171 x=dat&1;
172 dat>>=1;
173 if(x==1)
174 {
175 dq_find=0;
176 ds2438_delay(0);
177 dq_find=1;
178 }
179 else {
C51 COMPILER V7.08 DS2438 06/13/2007 16:48:13 PAGE 4
180 dq_find=0;
181 ds2438_delay(5);
182 dq_find=1;
183 }
184 }
185 }
186 /*********** read number ********************************
187 void ds2438_number(unsigned char xxxxx[8])
188 {
189 unsigned char *p;
190 unsigned char i;
191
192 p=xxxxx;
193 EA=0;
194 ds2438_reset();
195 ds2438_wait_find();
196 ds2438_write_find(0x33);
197 for(i=0;i<8;i++)
198 {
199 *p=ds2438_readbyte_find();
200 p++;
201
202 }
203 EA=1;
204 } */
205
206
207 void ds2438_read_integrated_page(unsigned char x,unsigned char d[8],unsigned char dat[8])
208 {
209 1 unsigned char *p;
210 1 unsigned char i;
211 1
212 1 p=d;
213 1 EA=0;
214 1
215 1 ds2438_reset();
216 1 ds2438_wait();
217 1 ds2438_write(0x55);
218 1 for(i=0;i<8;i++)
219 1 {
220 2 ds2438_write(*p);
221 2 p++;
222 2
223 2 }
224 1 p=dat;
225 1 ds2438_write(0xbe);
226 1 ds2438_write(x);
227 1
228 1 for(i=0;i<8;i++)
229 1 {
230 2 *p=ds2438_readbyte();
231 2 p++;
232 2
233 2 }
234 1 EA=1;
235 1 }
236
237 /*void ds2438_write_integrated_page(unsigned char x,unsigned char d[8],unsigned char dat[8])
238 {
239 unsigned char *p;
240 unsigned char i;
241
C51 COMPILER V7.08 DS2438 06/13/2007 16:48:13 PAGE 5
242 p=d;
243 EA=0;
244 ds2438_reset();
245 ds2438_wait();
246 ds2438_write(0x55);
247 for(i=0;i<8;i++)
248 {
249 ds2438_write(*p);
250 p++;
251
252 }
253 p=dat;
254 ds2438_write(0x4e);
255 ds2438_write(x);
256
257 for(i=0;i<8;i++)
258 {
259 ds2438_write(*dat);
260 dat++;
261
262 }
263 ds2438_reset();
264 ds2438_wait();
265 ds2438_write(0xcc);
266 ds2438_write(0x48);
267 ds2438_write(x);
268
269 EA=1;
270 } */
271
272
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 275 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 8
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -