📄 miin.lst
字号:
257 4 case 7: write_1602com(yh+0x05);//nian
258 4 //write_1602com(0x0f);
259 4 break;
260 4 case 8:
261 4 write_1602com(0x0c);//设置光标不闪烁
262 4 TR0=1;//打开定时器
263 4 temp=(miao)/10*16+(miao)%10;
264 4 write_1302(0x8e,0x00);
265 4 write_1302(0x80,0x00|temp);//miao
266 4 write_1302(0x8e,0x80);
267 4 break;
268 4
269 4
270 4
271 4
272 4 }
273 3
274 3
275 3
276 3 }
277 2
278 2 }
279 1 if(key1n!=0)//当key1按下以下。再按以下键才有效
280 1 {
281 2
282 2 if(key2==0) //上调键
283 2 {
284 3 delay(5);
285 3 if(key2==0)
286 3 {
287 4 while(!key2);
288 4 switch(key1n)
289 4 {
290 5 case 1:miao++;
291 5 if(miao==60)
292 5 miao=0;
293 5 write_sfm(0x0a,miao);//写入新的秒数
294 5 temp=(miao)/10*16+(miao)%10;
295 5 write_1302(0x8e,0x00);
296 5 write_1302(0x80,0x80|temp);
297 5 write_1302(0x8e,0x80);
298 5 write_1602com(er+0x0b);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置
299 5 //write_1602com(0x0b);
300 5 break;
301 5 case 2:fen++;
302 5 if(fen==60)
303 5 fen=0;
C51 COMPILER V8.06 MIIN 11/20/2011 16:46:58 PAGE 6
304 5 write_sfm(0x07,fen);
305 5 temp=(fen)/10*16+(fen)%10;
306 5 write_1302(0x8e,0x00);
307 5 write_1302(0x82,temp);
308 5 write_1302(0x8e,0x80);
309 5 write_1602com(er+8);
310 5 break;
311 5 case 3:shi++;
312 5 if(shi==24)
313 5 shi=0;
314 5 write_sfm(4,shi);
315 5 temp=(shi)/10*16+(shi)%10;
316 5 write_1302(0x8e,0x00);
317 5 write_1302(0x84,temp);
318 5 write_1302(0x8e,0x80);
319 5 write_1602com(er+5);
320 5 break;
321 5 case 4:week++;
322 5 if(week==8)
323 5 week=0;
324 5 write_week(week);
325 5
326 5 write_1602com(yh+0x0f);
327 5 break;
328 5 case 5:ri++;
329 5 if(ri==31)
330 5 ri=0;
331 5 write_nyr(10,ri);
332 5 temp=(ri)/10*16+(ri)%10;
333 5 write_1302(0x8e,0x00);
334 5 write_1302(0x86,temp);
335 5 write_1302(0x8e,0x80);
336 5 write_1602com(yh+11);
337 5 break;
338 5 case 6:yue++;
339 5 if(yue==13)
340 5 yue=0;
341 5 write_nyr(7,yue);
342 5 temp=(yue)/10*16+(yue)%10;
343 5 write_1302(0x8e,0x00);
344 5 write_1302(0x88,temp);
345 5 write_1302(0x8e,0x80);
346 5 write_1602com(yh+8);
347 5 break;
348 5 case 7:nian++;
349 5 if(nian==100)
350 5 nian=0;
351 5 write_nyr(4,nian);
352 5 write_1602com(yh+5);
353 5 break;
354 5
355 5
356 5 }
357 4
358 4 }
359 3
360 3 }
361 2 if(key3==0)
362 2 {
363 3 delay(5);
364 3 if(key3==0)
365 3 {
C51 COMPILER V8.06 MIIN 11/20/2011 16:46:58 PAGE 7
366 4 while(!key3);
367 4 switch(key1n)
368 4 {
369 5 case 1:miao--;
370 5 if(miao==-1)
371 5 miao=59;
372 5 write_sfm(0x0a,miao);//写入新的秒数
373 5 write_1602com(er+0x0b);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置
374 5 //write_1602com(0x0b);
375 5 break;
376 5 case 2:fen--;
377 5 if(fen==-1)
378 5 fen=59;
379 5 write_sfm(7,fen);
380 5 temp=(fen)/10*16+(fen)%10;
381 5 write_1302(0x8e,0x00);
382 5 write_1302(0x82,temp);
383 5 write_1302(0x8e,0x80);
384 5 write_1602com(er+8);
385 5 break;
386 5
387 5 case 3:shi--;
388 5 if(shi==-1)
389 5 shi=23;
390 5 write_sfm(4,shi);
391 5 temp=(shi)/10*16+(shi)%10;
392 5 write_1302(0x8e,0x00);
393 5 write_1302(0x84,temp);
394 5 write_1302(0x8e,0x80);
395 5 write_1602com(er+5);
396 5 break;
397 5 case 4:week--;
398 5 if(week==-1)
399 5 week=7;
400 5 write_week(week);
401 5 write_1602com(yh+0x0f);
402 5 break;
403 5 case 5:ri--;
404 5 if(ri==-1)
405 5 ri=30;
406 5 write_nyr(10,ri);
407 5 temp=(ri)/10*16+(ri)%10;
408 5 write_1302(0x8e,0x00);
409 5 write_1302(0x86,temp);
410 5 write_1302(0x8e,0x80);
411 5 write_1602com(yh+11);
412 5 break;
413 5 case 6:yue--;
414 5 if(yue==-1)
415 5 yue=12;
416 5 write_nyr(7,yue);
417 5 temp=(yue)/10*16+(yue)%10;
418 5 write_1302(0x8e,0x00);
419 5 write_1302(0x88,temp);
420 5 write_1302(0x8e,0x80);
421 5 write_1602com(yh+8);
422 5 break;
423 5 case 7:nian--;
424 5 if(nian==-1)
425 5 nian=99;
426 5 write_nyr(4,nian);
427 5 write_1602com(yh+5);
C51 COMPILER V8.06 MIIN 11/20/2011 16:46:58 PAGE 8
428 5 break;
429 5
430 5
431 5 }
432 4
433 4 }
434 3
435 3 }
436 2
437 2 }
438 1
439 1
440 1
441 1 }
442 void init()
443 {
444 1 TMOD=0x11;
445 1 TH0=0;
446 1 TL0=0;
447 1 EA=1;
448 1 ET0=1;
449 1 TR0=1;
450 1
451 1
452 1
453 1 }
454
455 void cmg(void)//数码管锁存函数
456 {
457 1 dula=1;
458 1 P0=0x00;
459 1 dula=0;
460 1 wela=1;
461 1 P0=0x00;
462 1 wela=0;
463 1 }
464 void main()
465 {
466 1
467 1 cmg();//数码管锁存
468 1 lcd_init();
469 1 ds1302_init();
470 1 init();
471 1 while(1)
472 1 {
473 2 //TH0=(65536-60000)/256;
474 2 //TL0=(65536-60000)%256;
475 2
476 2
477 2
478 2 keyscan();
479 2
480 2
481 2 }
482 1 }
483 void timer0() interrupt 1
484 {
485 1 miao = BCD_Decimal(read_1302(0x81));
486 1 fen = BCD_Decimal(read_1302(0x83));
487 1 shi = BCD_Decimal(read_1302(0x85));
488 1 ri = BCD_Decimal(read_1302(0x87));
489 1 yue = BCD_Decimal(read_1302(0x89));
C51 COMPILER V8.06 MIIN 11/20/2011 16:46:58 PAGE 9
490 1 nian=BCD_Decimal(read_1302(0x8d));
491 1 week=BCD_Decimal(read_1302(0x8b));
492 1 //keyscan();
493 1 write_sfm(10,miao);
494 1 //write_1602com(er+0x0a);
495 1 //write_1602dat(':');
496 1 write_sfm(7,fen);
497 1 //write_1602com(er+0x07);
498 1 //write_1602dat(':');
499 1 write_sfm(4,shi);
500 1
501 1 //write_nyr(4,nian);
502 1 write_nyr(10,ri);
503 1 write_nyr(7,yue);
504 1 //write_week(week);
505 1 }
506
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1491 ----
CONSTANT SIZE = 24 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 ----
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 + -