📄 iic.lst
字号:
C51 COMPILER V7.07 IIC 09/21/2007 13:12:29 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE IIC
OBJECT MODULE PLACED IN IIC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE IIC.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <REG51.H>
2 #include <sys.h>
3 #include <intrins.h>
4
5 const unsigned char LedCode[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0xF7,0xFC,0xB9,0XDE,0xF9,
-0xF1};
6 const unsigned char Sel[]={0x80,0x81,0x82,0x83};
7
8 sbit scl = P1^5;
9 sbit sda = P1^6;
10 void delay ();
11
12 void sel_bit0(void)
13 {
14 1 P2 = 0x00;
15 1 P2 = 0x10;
16 1 P0 = 0x0f;
17 1 P2 = 0x00;
18 1 P0 = 0x00;
19 1 P2 = 0x80;
20 1 }
21
22 void sel_bit1(void)
23 {
24 1 P2 = 0x00;
25 1 P2 = 0x10;
26 1 P0 = 0x1f;
27 1 P2 = 0x00;
28 1 P0 = 0x00;
29 1 P2 = 0x80;
30 1 }
31
32 void sel_bit2(void)
33 {
34 1 P2 = 0x00;
35 1 P2 = 0x10;
36 1 P0 = 0x2f;
37 1 P2 = 0x00;
38 1 P0 = 0x00;
39 1 P2 = 0x80;
40 1 }
41
42 void sel_bit3(void)
43 {
44 1 P2 = 0x00;
45 1 P2 = 0x10;
46 1 P0 = 0x3f;
47 1 P2 = 0x00;
48 1 P0 = 0x00;
49 1 P2 = 0x80;
50 1 }
51
52
53 void star()
54 {
C51 COMPILER V7.07 IIC 09/21/2007 13:12:29 PAGE 2
55 1 scl=0;
56 1 sda=1;
57 1 scl=1;
58 1 _nop_();
59 1 _nop_();
60 1 _nop_();
61 1 _nop_();
62 1 _nop_();
63 1 _nop_();
64 1 _nop_();
65 1 _nop_();
66 1 sda=0;
67 1 _nop_();
68 1 _nop_();
69 1 _nop_();
70 1 _nop_();
71 1 scl=0;
72 1 _nop_();
73 1 _nop_();
74 1 _nop_();
75 1 _nop_();
76 1
77 1
78 1 }
79 void stop()
80 {
81 1 sda=0;
82 1 scl=0;
83 1 scl=1;
84 1
85 1 _nop_();
86 1 _nop_();
87 1 _nop_();
88 1 _nop_();
89 1 sda=1;
90 1 _nop_();
91 1 _nop_();
92 1 _nop_();
93 1 _nop_();
94 1
95 1
96 1 }
97
98 bit ack()
99 {
100 1 bit a_ack;
101 1 scl=0;
102 1 _nop_();
103 1 _nop_();
104 1 sda=1;
105 1 scl=1;
106 1
107 1 if(sda==0)
108 1 {
109 2 a_ack=0;
110 2 }
111 1 else
112 1 {
113 2 a_ack=1;
114 2 }
115 1 scl=0;
116 1
C51 COMPILER V7.07 IIC 09/21/2007 13:12:29 PAGE 3
117 1 return(a_ack);
118 1 }
119
120 void noack()
121 {
122 1 scl=0;
123 1 sda=1;
124 1 scl=1;
125 1 _nop_();
126 1 _nop_();
127 1 _nop_();
128 1 _nop_();
129 1 scl=0;
130 1 sda=0;
131 1 }
132
133 void senddata(uchar shu)
134 {
135 1 uchar i;
136 1 scl=0;
137 1
138 1 for(i=0;i<8;i++)
139 1 {
140 2 sda=(bit) (shu & 0x80);
141 2 scl=1;
142 2 _nop_();
143 2 _nop_();
144 2 _nop_();
145 2 _nop_();
146 2 scl=0;
147 2 shu=shu<<1;
148 2 }
149 1
150 1 }
151 uchar receive()
152 {
153 1
154 1 uchar j,nn;
155 1 scl=0;
156 1 for(j=0;j<8;j++)
157 1 {
158 2 scl=1;
159 2 nn=nn<<1;
160 2 nn=nn|((uchar)(sda));
161 2 _nop_();
162 2 _nop_();
163 2 _nop_();
164 2 _nop_();
165 2 scl=0;
166 2
167 2 }
168 1 return(nn);
169 1
170 1 }
171
172
173
174 void writebyte(uchar addr, uchar databyte)
175 {
176 1 uchar datareg,addrreg;
177 1 datareg=databyte;
178 1 addrreg=addr;
C51 COMPILER V7.07 IIC 09/21/2007 13:12:29 PAGE 4
179 1 star();
180 1 senddata(0xa0);
181 1 if (!ack())
182 1 {
183 2 P0=LedCode[0];
184 2 sel_bit0();
185 2 delay();
186 2 delay();
187 2 delay();
188 2 }
189 1 senddata(addrreg);
190 1 if (!ack())
191 1 {
192 2 P0=LedCode[1];
193 2 sel_bit0();
194 2 delay();
195 2 delay();
196 2 delay();
197 2 }
198 1 senddata(datareg);
199 1 if (!ack())
200 1 {
201 2 P0=LedCode[2];
202 2 sel_bit0();
203 2 delay();
204 2 delay();
205 2 delay();
206 2 }
207 1 stop();
208 1 delay();
209 1 }
210 uchar readbyte (uchar addr)
211 {
212 1 uchar databuf;
213 1 star();
214 1 senddata(0xa0);
215 1 if (!ack())
216 1 {
217 2 P0=LedCode[0];
218 2 sel_bit0();
219 2 delay();
220 2 delay();
221 2 delay();
222 2 }
223 1 senddata(addr);
224 1 if (!ack())
225 1 {
226 2 P0=LedCode[4];
227 2 sel_bit0();
228 2 delay();
229 2 delay();
230 2 delay();
231 2 }
232 1 star();
233 1 senddata(0xa1);
234 1 if (!ack())
235 1 {
236 2 P0=LedCode[5];
237 2 sel_bit0();
238 2 delay();
239 2 delay();
240 2 delay();
C51 COMPILER V7.07 IIC 09/21/2007 13:12:29 PAGE 5
241 2 }
242 1 databuf=receive();
243 1 noack();
244 1 stop();
245 1 return (databuf);
246 1 }
247
248
249
250 void ISRit0(void) interrupt 0 using 0
251 {
252 1 uchar i;
253 1 uchar databuf;
254 1 // IE0=0;
255 1 for(i=0; i<16; i++)
256 1
257 1 {
258 2 // P0=LedCode[i];
259 2 databuf=readbyte(i);
260 2 // delay();
261 2 // delay();
262 2 // delay();
263 2 delay();
264 2 P0=databuf;
265 2 sel_bit1();
266 2 // delay();
267 2 // delay();
268 2 delay();
269 2 }
270 1
271 1 // P2=0xFF;
272 1
273 1 }
274
275
276
277 void main()
278 {
279 1 uchar i;
280 1 EA = 1;
281 1 // IT0=1;
282 1 EX0 = 1;
283 1 for(i=0; i<16; i++)
284 1
285 1 {
286 2 writebyte(i,LedCode[i]);
287 2
288 2 // writebyte(0,0xFF);
289 2 // delay();
290 2 }
291 1
292 1
293 1
294 1 while(1)
295 1 {
296 2
297 2 P0=0xff;
298 2 sel_bit0();
299 2 P0=0xff;
300 2 sel_bit1();
301 2 P0=0xff;
302 2 sel_bit2();
C51 COMPILER V7.07 IIC 09/21/2007 13:12:29 PAGE 6
303 2 P0=0xff;
304 2 sel_bit3();
305 2
306 2 }
307 1 }
308
309 void delay()
310 {
311 1 uchar i = 0;
312 1 uchar j = 0;
313 1 for (j=0;j<255;j++)
314 1 {
315 2 for (i=0; i<250; i++)
316 2 ;
317 2 }
318 1 }
319
320
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 490 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 6
IDATA SIZE = ---- ----
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 + -