📄 24c02a.lst
字号:
204 2 SCL=1;
205 2 delay();
206 2 SCL=0;
207 2 delay();
208 2 }
209 1 SDO=1;
210 1 SCL=1;
211 1 delay();
212 1 AF=SDI;
213 1 SCL=0;
214 1 delay();
215 1 return(AF);
216 1 }
217
218 uchar LoadByte()
219 {
220 1 uchar Cnt,Dat=0;
221 1
222 1 SDO=1;
223 1 for(Cnt=0;Cnt<8;Cnt++)
224 1 {
225 2 SCL=1;
226 2 delay();
227 2 Dat=(Dat<<1)| SDI;
228 2 SCL=0;
229 2 delay();
230 2 }
231 1 return(Dat);
232 1 }
233
234 void Ack_I2c()
235 {
236 1 SDO=0;
237 1 SCL=1;
238 1 delay();
239 1 SCL=0;
240 1 delay();
241 1 }
C51 COMPILER V7.20 24C02A 02/25/2006 16:39:28 PAGE 5
242
243 void ShowPicture(uchar byPicID)
244 {
245 1 uchar col,pg;
246 1 uchar code *pC;
247 1 pC = pic + (byPicID&0x03)*128*8;
248 1 for(pg = 0; pg < 8; pg++)
249 1 {
250 2 LCDCMR = SET_PAGE | pg;
251 2 LCDCMR = SET_COL | 0;
252 2 for(col = 0; col < 128; col++)
253 2 LCDDR = *pC++;
254 2 }
255 1 }
256
257 void ShowHint(uchar aNo)
258 {
259 1 uchar col,pg;
260 1 uchar code *pC;
261 1 pC = Hint + (aNo&0x03)*32*8;
262 1 for(pg = 6; pg < 8; pg++)
263 1 {
264 2 LCDCMR = SET_PAGE | pg;
265 2 LCDCMR = SET_COL | 0;
266 2 for(col = 0; col < 128; col++)
267 2 LCDDR = *pC++;
268 2 }
269 1 }
270
271 void Beep()
272 {
273 1 uchar n;
274 1 TGCON=0x88;
275 1 for (n=0;n<20;n++)
276 1 {
277 2 while (~To_5ms) {}
278 2 To_5ms=0;
279 2 }
280 1 TGCON=0x80;
281 1 for (n=0;n<20;n++)
282 1 {
283 2 while (~To_5ms) {}
284 2 To_5ms=0;
285 2 }
286 1 TGCON=0x88;
287 1 for (n=0;n<20;n++)
288 1 {
289 2 while (~To_5ms) {}
290 2 To_5ms=0;
291 2 }
292 1 TGCON=0x80;
293 1 }
294
295 void main()
296 {
297 1 uint i;
298 1 uchar n;
299 1 TMOD=0x01;
300 1 LCDCMR=Cls;
301 1 LCDCMR=LCD_on;
302 1 LCDCMR=INC_enb;
303 1 EA=1;ET0=1;TR0=1;
C51 COMPILER V7.20 24C02A 02/25/2006 16:39:28 PAGE 6
304 1 LPTCTR=0x00;
305 1 LPTDTR=0xff;
306 1 ShowPicture(0);
307 1 while(1)
308 1 {
309 2 while (KEYPAD==0) {};
310 2 switch(KEYPAD)
311 2 {
312 3 case 0x70://Read
313 3 LPTCTR=0x04; //打开电源
314 3 ShowHint(2);
315 3 for(i=0;i<256;i++)
316 3 {
317 4 if ((i&7)==0)
318 4 {
319 5 Start_I2c();
320 5 if (SendByte(0xA0)) break;
321 5 if (SendByte(i)) break;
322 5 Stop_I2c();
323 5 Start_I2c();
324 5 if (SendByte(0xA1)) break;
325 5 }
326 4 Buf[i]=LoadByte();
327 4 if ((i&7)==7) Stop_I2c();
328 4 else Ack_I2c();
329 4 n=i;
330 4 }
331 3 Beep();
332 3 LPTCTR=0x00; //关闭电源
333 3 if (n!=0xff) ShowHint(1);
334 3 else ShowHint(0);
335 3 break;
336 3
337 3 case 0x71://Write
338 3 LPTCTR=0x04; //打开电源
339 3 ShowHint(3);
340 3 for(i=0;i<256;i++)
341 3 {
342 4 if ((i&7)==0)
343 4 {
344 5 Start_I2c();
345 5 if (SendByte(0xA0)) break;
346 5 if (SendByte(i)) break;
347 5 }
348 4 if (SendByte(Buf[i])) break;
349 4 if ((i&7)==7)
350 4 {
351 5 Stop_I2c();
352 5 for(n=0;n<4;n++) //Wait 15-20ms
353 5 {
354 6 while(~To_5ms){}
355 6 To_5ms=0;
356 6 }
357 5 }
358 4 n=i;
359 4 }
360 3 Beep();
361 3 LPTCTR=0x00; //关闭电源
362 3 if (n!=0xff) ShowHint(1);
363 3 else ShowHint(0);
364 3 break;
365 3 case 0x72://Clear Buffer
C51 COMPILER V7.20 24C02A 02/25/2006 16:39:28 PAGE 7
366 3 for(i=0;i<256;i++) Buf[i]=0;
367 3 break;
368 3 default:;
369 3 }
370 2 while (KEYPAD) {};
371 2 }
372 1 }
373
374 void timer0() interrupt 1
375 {
376 1 TL0=0x7B; //5ms Interval,XTAL=12Mhz
377 1 TH0=0xEC;
378 1 To_5ms=1;
379 1 if (++Count>49)
380 1 {
381 2 RTCON=Msec_BCD;
382 2 Msec=RTCON;
383 2 RTCON=Sec_BCD;
384 2 Sec=RTCON;
385 2 RTCON=Min_BCD;
386 2 Min=RTCON;
387 2 RTCON=Hou_BCD;
388 2 Hour=RTCON;
389 2 RTCON=Day_BCD;
390 2 Day=RTCON;
391 2 RTCON=Week_BCD;
392 2 Week=RTCON;
393 2 RTCON=Mon_BCD;
394 2 Month=RTCON;
395 2 RTCON=Year_BCD;
396 2 Year=RTCON;
397 2 Count=0;
398 2 }
399 1 }
400
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 726 ----
CONSTANT SIZE = 2048 ----
XDATA SIZE = 16384 ----
PDATA SIZE = ---- ----
DATA SIZE = 10 3
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 + -