📄 24c02.lst
字号:
C51 COMPILER V7.04 24C02 12/18/2005 18:05:21 PAGE 1
C51 COMPILER V7.04, COMPILATION OF MODULE 24C02
OBJECT MODULE PLACED IN 24C02.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24C02.C OPTIMIZE(2,SPEED) DEBUG OBJECTEXTEND
stmt level source
1
2 #include <reg51.h>
3
4 sbit DataClk = P1^0;
5 sbit DataBit = P1^1;
6
7 extern unsigned short AT24C02DelayTime;
8 unsigned short TempAT24C02DelayTime;
9
10 void RxWrite24C02StartBit()
11 {
12 1 DataClk = 0;
13 1 DataBit = 1;
14 1 TempAT24C02DelayTime=AT24C02DelayTime;
15 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
16 1
17 1 DataClk = 1;
18 1 TempAT24C02DelayTime=AT24C02DelayTime;
19 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
20 1
21 1 DataBit = 0;
22 1 TempAT24C02DelayTime=AT24C02DelayTime;
23 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
24 1
25 1 DataClk = 0;
26 1 TempAT24C02DelayTime=AT24C02DelayTime;
27 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
28 1 }
29
30 void RxWrite24C02StopBit()
31 {
32 1 DataClk = 0;
33 1 DataBit = 0;
34 1 TempAT24C02DelayTime=AT24C02DelayTime;
35 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
36 1
37 1 DataClk = 1;
38 1 TempAT24C02DelayTime=AT24C02DelayTime;
39 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
40 1
41 1 DataBit = 1;
42 1 TempAT24C02DelayTime=AT24C02DelayTime;
43 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
44 1
45 1 DataClk = 0;
46 1 TempAT24C02DelayTime=AT24C02DelayTime;
47 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
48 1
49 1 DataBit = 0;
50 1 TempAT24C02DelayTime=AT24C02DelayTime;
51 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
52 1 }
53
54 void RxWrite24C02BitOne()
55 {
C51 COMPILER V7.04 24C02 12/18/2005 18:05:21 PAGE 2
56 1 DataClk = 0;
57 1 DataBit = 1;
58 1 TempAT24C02DelayTime=AT24C02DelayTime;
59 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
60 1
61 1 DataClk = 1;
62 1 TempAT24C02DelayTime=AT24C02DelayTime;
63 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
64 1
65 1 DataClk = 0;
66 1 TempAT24C02DelayTime=AT24C02DelayTime;
67 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
68 1
69 1 DataBit = 0;
70 1 TempAT24C02DelayTime=AT24C02DelayTime;
71 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
72 1 }
73
74 void RxWrite24C02BitZero()
75 {
76 1 DataClk = 0;
77 1 DataBit = 0;
78 1 TempAT24C02DelayTime=AT24C02DelayTime;
79 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
80 1
81 1 DataClk = 1;
82 1 TempAT24C02DelayTime=AT24C02DelayTime;
83 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
84 1
85 1 DataClk = 0;
86 1 TempAT24C02DelayTime=AT24C02DelayTime;
87 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
88 1
89 1 DataBit = 0;
90 1 TempAT24C02DelayTime=AT24C02DelayTime;
91 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
92 1 }
93
94 unsigned char RxRead24C02OneBit()
95 {
96 1 DataClk = 0;
97 1 DataBit = 1;
98 1 TempAT24C02DelayTime=AT24C02DelayTime;
99 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
100 1
101 1 DataClk = 1;
102 1 TempAT24C02DelayTime=AT24C02DelayTime;
103 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
104 1
105 1 if (DataBit == 0){
106 2 DataClk = 0;
107 2 TempAT24C02DelayTime=AT24C02DelayTime;
108 2 while(TempAT24C02DelayTime==AT24C02DelayTime);
109 2
110 2 DataBit = 0;
111 2 TempAT24C02DelayTime=AT24C02DelayTime;
112 2 while(TempAT24C02DelayTime==AT24C02DelayTime);
113 2 return 0;
114 2 }
115 1 else{
116 2 DataClk = 0;
117 2 TempAT24C02DelayTime=AT24C02DelayTime;
C51 COMPILER V7.04 24C02 12/18/2005 18:05:21 PAGE 3
118 2 while(TempAT24C02DelayTime==AT24C02DelayTime);
119 2
120 2 DataBit = 0;
121 2 TempAT24C02DelayTime=AT24C02DelayTime;
122 2 while(TempAT24C02DelayTime==AT24C02DelayTime);
123 2 return 1;
124 2 }
125 1 }
126
127 void RxRead24C02Ack()
128 {
129 1 DataClk = 0;
130 1 DataBit = 0;
131 1 TempAT24C02DelayTime=AT24C02DelayTime;
132 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
133 1
134 1 DataClk = 1;
135 1 TempAT24C02DelayTime=AT24C02DelayTime;
136 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
137 1
138 1 DataClk = 0;
139 1 TempAT24C02DelayTime=AT24C02DelayTime;
140 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
141 1
142 1 DataBit = 0;
143 1 TempAT24C02DelayTime=AT24C02DelayTime;
144 1 while(TempAT24C02DelayTime==AT24C02DelayTime);
145 1 }
146
147 unsigned char RxRead24C02OneByte(unsigned char Address)
148 {
149 1 unsigned char usLoop, TempChar;
150 1
151 1 // Write Start 1010 000 0/Write
152 1 RxWrite24C02StartBit();
153 1 RxWrite24C02BitOne();
154 1 RxWrite24C02BitZero();
155 1 RxWrite24C02BitOne();
156 1 RxWrite24C02BitZero();
157 1 RxWrite24C02BitZero();
158 1 RxWrite24C02BitZero();
159 1 RxWrite24C02BitZero();
160 1 RxWrite24C02BitZero();
161 1 RxRead24C02Ack();
162 1
163 1 // Write Data Address
164 1 for (usLoop=0; usLoop<8; usLoop++){
165 2 if (((Address << usLoop) & (0x80)) == 0x00)
166 2 RxWrite24C02BitZero();
167 2 else
168 2 RxWrite24C02BitOne();
169 2 }
170 1 RxRead24C02Ack();
171 1
172 1 // Write Start 1010 000 1/Read
173 1 RxWrite24C02StartBit();
174 1 RxWrite24C02BitOne();
175 1 RxWrite24C02BitZero();
176 1 RxWrite24C02BitOne();
177 1 RxWrite24C02BitZero();
178 1 RxWrite24C02BitZero();
179 1 RxWrite24C02BitZero();
C51 COMPILER V7.04 24C02 12/18/2005 18:05:21 PAGE 4
180 1 RxWrite24C02BitZero();
181 1 RxWrite24C02BitOne();
182 1 RxRead24C02Ack();
183 1
184 1 TempChar = 0;
185 1 for (usLoop=0; usLoop<8; usLoop++){
186 2 TempChar = TempChar << 1;
187 2 if (RxRead24C02OneBit()!=0)
188 2 TempChar = TempChar | 1;
189 2 }
190 1 RxWrite24C02StopBit();
191 1 return TempChar;
192 1 }
193
194
195 void RxWrite24C02OneByte(unsigned char TempAddress, unsigned char TempData)
196 {
197 1 unsigned char usLoop;
198 1
199 1 // Write Start 1010 000 0/Write
200 1 RxWrite24C02StartBit();
201 1 RxWrite24C02BitOne();
202 1 RxWrite24C02BitZero();
203 1 RxWrite24C02BitOne();
204 1 RxWrite24C02BitZero();
205 1 RxWrite24C02BitZero();
206 1 RxWrite24C02BitZero();
207 1 RxWrite24C02BitZero();
208 1 RxWrite24C02BitZero();
209 1 RxRead24C02Ack();
210 1
211 1 // Write Data Address
212 1 for (usLoop=0; usLoop<8; usLoop++){
213 2 if (((TempAddress << usLoop) & (0x80)) == 0x00)
214 2 RxWrite24C02BitZero();
215 2 else
216 2 RxWrite24C02BitOne();
217 2 }
218 1 RxRead24C02Ack();
219 1
220 1 // Write Data
221 1 for (usLoop=0; usLoop<8; usLoop++){
222 2 if (((TempData << usLoop) & (0x80)) == 0x00)
223 2 RxWrite24C02BitZero();
224 2 else
225 2 RxWrite24C02BitOne();
226 2 }
227 1 RxRead24C02Ack();
228 1 RxWrite24C02StopBit();
229 1
230 1 //wait 12 ms
231 1 TempAT24C02DelayTime=AT24C02DelayTime;
232 1 TempAT24C02DelayTime=TempAT24C02DelayTime+12;
233 1 while(TempAT24C02DelayTime!=AT24C02DelayTime);
234 1 }
235
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 860 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
C51 COMPILER V7.04 24C02 12/18/2005 18:05:21 PAGE 5
PDATA SIZE = ---- ----
DATA SIZE = 2 6
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -