📄 ds1302.lst
字号:
261 3 if(keynum==2)
262 3 {
263 4 ucCurtime[1]++;
264 4 if(ucCurtime[1]>59)
265 4 ucCurtime[1]=0;
266 4 write_com(0xc9);
267 4 write_dat(tab[ucCurtime[1]%10]);
268 4 write_com(0xc8);
269 4 write_dat(tab[ucCurtime[1]/10]);
270 4 write_com(0xc8);
271 4 }
272 3 if(keynum==3)
273 3 {
274 4 ucCurtime[2]++;
275 4 if(ucCurtime[2]>23)
276 4 ucCurtime[2]=0;
277 4 write_com(0xc6);
278 4 write_dat(tab[ucCurtime[2]%10]);
279 4 write_com(0xc5);
280 4 write_dat(tab[ucCurtime[2]/10]);
281 4 write_com(0xc5);
282 4 }
283 3 if(keynum==4)
284 3 {
285 4 ucCurtime[3]++;
286 4 if(ucCurtime[4]==1||ucCurtime[4]==3||ucCurtime[4]==5||ucCurtime[4]==7||ucCurtime[4]==8||ucCurtime[4]==
-10||ucCurtime[4]==12)
287 4 {
288 5 if(ucCurtime[3]>31)
289 5 ucCurtime[3]=01;
290 5 }
291 4 if(ucCurtime[4]==4||ucCurtime[4]==6||ucCurtime[4]==9||ucCurtime[4]==11)
292 4 {
293 5 if(ucCurtime[3]>30)
294 5 ucCurtime[3]=01;
295 5 }
296 4 if(ucCurtime[4]==2)
297 4 {
298 5 if(((ucCurtime[6]+2000)%4==0&&(ucCurtime[6]+2000)%100!=0)||((ucCurtime[6]+2000)%400==0))
299 5 {
300 6 if(ucCurtime[3]>29)
301 6 ucCurtime[3]=01;
302 6 }
C51 COMPILER V7.06 DS1302 12/20/2008 10:29:42 PAGE 6
303 5 else
304 5 {
305 6 if(ucCurtime[3]>28)
306 6 ucCurtime[3]=01;
307 6 }
308 5 }
309 4 write_com(0x8c);
310 4 write_dat(tab[ucCurtime[3]%10]);
311 4 write_com(0x8b);
312 4 write_dat(tab[ucCurtime[3]/10]);
313 4 write_com(0x8b);
314 4 }
315 3 if(keynum==5)
316 3 {
317 4 ucCurtime[4]++;
318 4 if(ucCurtime[4]>12)
319 4 ucCurtime[4]=01;
320 4 write_com(0x89);
321 4 write_dat(tab[ucCurtime[4]%10]);
322 4 write_com(0x88);
323 4 write_dat(tab[ucCurtime[4]/10]);
324 4 write_com(0x88);
325 4 }
326 3 if(keynum==6)
327 3 {
328 4 ucCurtime[6]++;
329 4 if(ucCurtime[6]==100)
330 4 ucCurtime[6]=0;
331 4 write_com(0x86);
332 4 write_dat(tab[ucCurtime[6]%10]);
333 4 write_com(0x85);
334 4 write_dat(tab[ucCurtime[6]/10]);
335 4 write_com(0x85);
336 4 }
337 3 }
338 2 if(dec==0)
339 2 {
340 3 while(!dec);
341 3 delay();
342 3 while(!dec);
343 3 if(keynum==1)
344 3 {
345 4 if(ucCurtime[5]==1)
346 4 ucCurtime[5]=0x08;
347 4 ucCurtime[5]--;
348 4 write_com(0xce);
349 4 write_dat(tab[ucCurtime[5]%10]);
350 4 write_com(0xce);
351 4 }
352 3 if(keynum==2)
353 3 {
354 4 if(ucCurtime[1]==0)
355 4 ucCurtime[1]=60;
356 4 ucCurtime[1]--;
357 4 write_com(0xc9);
358 4 write_dat(tab[ucCurtime[1]%10]);
359 4 write_com(0xc8);
360 4 write_dat(tab[ucCurtime[1]/10]);
361 4 write_com(0xc8);
362 4 }
363 3 if(keynum==3)
364 3 {
C51 COMPILER V7.06 DS1302 12/20/2008 10:29:42 PAGE 7
365 4 if(ucCurtime[2]==0)
366 4 ucCurtime[2]=24;
367 4 ucCurtime[2]--;
368 4 write_com(0xc6);
369 4 write_dat(tab[ucCurtime[2]%10]);
370 4 write_com(0xc5);
371 4 write_dat(tab[ucCurtime[2]/10]);
372 4 write_com(0xc5);
373 4 }
374 3 if(keynum==4)
375 3 {
376 4 if(ucCurtime[4]==1||ucCurtime[4]==3||ucCurtime[4]==5||ucCurtime[4]==7||ucCurtime[4]==8||ucCurtime[4]==
-10||ucCurtime[4]==12)
377 4 {
378 5 if(ucCurtime[3]==01)
379 5 ucCurtime[3]=32;
380 5 }
381 4 if(ucCurtime[4]==4||ucCurtime[4]==6||ucCurtime[4]==9||ucCurtime[4]==11)
382 4 {
383 5 if(ucCurtime[3]==01)
384 5 ucCurtime[3]=31;
385 5 }
386 4 if(ucCurtime[4]==2)
387 4 {
388 5 if(((ucCurtime[6]+2000)%4==0&&(ucCurtime[6]+2000)%100!=0)||((ucCurtime[6]+2000)%400==0))
389 5 {
390 6 if(ucCurtime[3]==01)
391 6 ucCurtime[3]=30;
392 6 }
393 5 else
394 5 {
395 6 if(ucCurtime[3]==01)
396 6 ucCurtime[3]=29;
397 6 }
398 5 }
399 4 ucCurtime[3]--;
400 4 write_com(0x8c);
401 4 write_dat(tab[ucCurtime[3]%10]);
402 4 write_com(0x8b);
403 4 write_dat(tab[ucCurtime[3]/10]);
404 4 write_com(0x8b);
405 4 }
406 3 if(keynum==5)
407 3 {
408 4 if(ucCurtime[4]==1)
409 4 ucCurtime[4]=13;
410 4 ucCurtime[4]--;
411 4 write_com(0x89);
412 4 write_dat(tab[ucCurtime[4]%10]);
413 4 write_com(0x88);
414 4 write_dat(tab[ucCurtime[4]/10]);
415 4 write_com(0x88);
416 4 }
417 3 if(keynum==6)
418 3 {
419 4 if(ucCurtime[6]==0)
420 4 ucCurtime[6]=100;
421 4 ucCurtime[6]--;
422 4 write_com(0x86);
423 4 write_dat(tab[ucCurtime[6]%10]);
424 4 write_com(0x85);
425 4 write_dat(tab[ucCurtime[6]/10]);
C51 COMPILER V7.06 DS1302 12/20/2008 10:29:42 PAGE 8
426 4 write_com(0x85);
427 4 }
428 3 }
429 2 }
430 1 }
431
432 void show()
433 {
434 1 Addr = 0x81;
435 1 for (a=0;a<7;a++)
436 1 {
437 2 ucCurtime[a]=R1302(Addr);//格式为: 秒 分 时 日 月 星期 年
438 2 Addr += 2;
439 2 }
440 1 yearh=ucCurtime[6]/10;
441 1 yearl=ucCurtime[6]%10;
442 1 monh=ucCurtime[4]/10;
443 1 monl=ucCurtime[4]%10;
444 1 dah=ucCurtime[3]/10;
445 1 dal=ucCurtime[3]%10;
446 1 hoh=ucCurtime[2]/10;
447 1 hol=ucCurtime[2]%10;
448 1 mih=ucCurtime[1]/10;
449 1 mil=ucCurtime[1]%10;
450 1 seh=ucCurtime[0]/10;
451 1 sel=ucCurtime[0]%10;
452 1 wekl=ucCurtime[5]%10;
453 1 write1602(0x85,tab[yearh]);
454 1 write1602(0x86,tab[yearl]);
455 1 write1602(0x88,tab[monh]);
456 1 write1602(0x89,tab[monl]);
457 1 write1602(0x8b,tab[dah]);
458 1 write1602(0x8c,tab[dal]);
459 1 write1602(0xc5,tab[hoh]);
460 1 write1602(0xc6,tab[hol]);
461 1 write1602(0xc8,tab[mih]);
462 1 write1602(0xc9,tab[mil]);
463 1 write1602(0xcb,tab[seh]);
464 1 write1602(0xcc,tab[sel]);
465 1 write1602(0x8d,0x57);
466 1 write1602(0x8e,0x65);
467 1 write1602(0xce,tab[wekl]);
468 1 }
469 void inishow()
470 {
471 1 write1602(0x80,0x44);
472 1 write1602(0x81,0x61);
473 1 write1602(0x82,0x74);
474 1 write1602(0x83,0x65);
475 1 write1602(0x84,0x3a);//显示date:
476 1 write1602(0x87,0x2d);//显示年
477 1 write1602(0x8a,0x2d);//显示月
478 1 write1602(0xc0,0x54);
479 1 write1602(0xc1,0x69);
480 1 write1602(0xc2,0x6d);
481 1 write1602(0xc3,0x65);
482 1 write1602(0xc4,0x3a);//显示time:
483 1 write1602(0xc7,0x3a);//显示小时
484 1 write1602(0xca,0x3a);//显示小时
485 1 write1602(0x8f,0x6b);//显示wek:
486 1 }
487 /********************************************************************
C51 COMPILER V7.06 DS1302 12/20/2008 10:29:42 PAGE 9
488 * 名称: main
489 * 功能: 主程序
490 * 返回值: 无
491 ***********************************************************************/
492 void main()
493 {
494 1 init();//LCD初始化
495 1 inishow();
496 1 set1302(buf);
497 1 TMOD=0X01;
498 1 TH0=0XDC;
499 1 TL0=0X00;
500 1 EA=1;
501 1 ET0=1;
502 1 TR0=1;
503 1 while(1)
504 1 {
505 2 keyscan();
506 2 }
507 1 }
508 void timer0() interrupt 1
509 {
510 1 TH0=0XDC;
511 1 show();
512 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1694 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 22 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 + -