📄 time.lst
字号:
284 2 display2();
285 2
286 2
287 2
288 2
289 2
290 2
291 2
292 2
293 2
294 2 }
295 1
296 1
297 1
298 1
299 1 }
C51 COMPILER V8.02 TIME 08/22/2007 19:41:21 PAGE 6
300
301
302
303
304
305
306 void keyboard(void) interrupt 2 using 0 //键盘中断子程序
307 {
308 1 unsigned char i,j,w;
309 1 EX1=0; //键盘中断关
310 1 key=0;
311 1 delay(200); //延时去处抖动
312 1 XBYTE[0x0010]; //?????????%¥¥#¥¥
313 1 if(~XBYTE[0xf800]&0x0f) //是否有键按下
314 1 {
315 2 w=XBYTE[0xf8f0]&0x0f; //键植查询,key高4位为列信息,左列对应其中的低位,
316 2 if(~w&0x0f) //key低4位对应行信息 ,即i值,键盘最上行为5,
317 2 {
318 3 i=4;
319 3 j=w;
320 3 w=0xff;
321 3 }
322 2 w=XBYTE[0xf8e8]&0x0f;
323 2 if(~w&0x0f)
324 2 {
325 3 i=3;
326 3 j=w;
327 3 w=0xff;
328 3 }
329 2 w=XBYTE[0xf8d8]&0x0f;
330 2 if(~w&0x0f)
331 2 {
332 3 i=2;
333 3 j=w;
334 3 w=0xff;
335 3 }
336 2 w=XBYTE[0xf8b8]&0x0f;
337 2 if(~w&0x0f)
338 2 {
339 3 i=1;
340 3 j=w;
341 3 w=0xff;
342 3 }
343 2 w=XBYTE[0xf878]&0x0f;
344 2 if(~w&0x0f)
345 2 {
346 3 i=0;
347 3 j=w;
348 3 w=0xff;
349 3 }
350 2 w=~j;
351 2 key=(w<<4)|i;
352 2 }
353 1 //-----编码键值左上起1--20---------键值编码,返回1到20的16进制数,
354 1 switch (key)
355 1 {
356 2 case 0x14 :key=0x01;break; //00010100
357 2 case 0x24 :key=0x02;break; //00100100
358 2 case 0x44 :key=0x03;break; //01000100
359 2 case 0x84 :key=0x04;break; //10000100
360 2 case 0x13 :key=0x05;break; //00010011
361 2 case 0x23 :key=0x06;break; //00100011
C51 COMPILER V8.02 TIME 08/22/2007 19:41:21 PAGE 7
362 2 case 0x43 :key=0x07;break; //01000011
363 2 case 0x83 :key=0x08;break; //10000011
364 2 case 0x12 :key=0x09;break; //00010010
365 2 case 0x22 :key=0x0a;break; //00100010
366 2 case 0x42 :key=0x0b;break; //01000010
367 2 case 0x82 :key=0x0c;break; //10000010
368 2 case 0x11 :key=0x0d;break; //00010001
369 2 case 0x21 :key=0x0e;break; //00100001
370 2 case 0x41 :key=0x0f;break; //01000001
371 2 case 0x81 :key=0x10;break; //10000001
372 2 case 0x10 :key=0x11;break; //00010000
373 2 case 0x20 :key=0x12;break; //00100000
374 2 case 0x40 :key=0x13;break; //01000000
375 2 case 0x80 :key=0x14;break; //10000000
376 2 default: key=0;
377 2
378 2 }
379 1
380 1 while(~XBYTE[0xf800]&0x0f)
381 1 k=1;
382 1 EX1=1;
383 1
384 1
385 1 }
386
387
388
389
390 void main(void)
391 {
392 1 int a;
393 1
394 1
395 1
396 1 //XBYTE[0xf801];
397 1
398 1 inttilcs();
399 1 time.year=0;
400 1 time.month=1;
401 1 time.day=1;
402 1 time.hour=0;
403 1 time.minute=0;
404 1 time.second=0;
405 1 time.second20=0;
406 1 time.week=6;
407 1 //clockon=0;
408 1 //clock.hour=0;
409 1 //clock.minute=0;
410 1
411 1 lc_write(0x0c);
412 1
413 1 EA=1;
414 1
415 1 EX1=1;
416 1
417 1 k=0;
418 1
419 1 a=0;
420 1 while (1)
421 1
422 1 {
423 2 if(k)
C51 COMPILER V8.02 TIME 08/22/2007 19:41:21 PAGE 8
424 2 { if(key==0x01) //键盘1更改年+
425 3 {lc_write(0x01);
426 4
427 4 lc_write(0x0f);
428 4 time.year++;
429 4 if (time.year>99 )
430 4 time.year=0;
431 4
432 4
433 4 k=0;a=1;
434 4 delay(500);
435 4 time_to_display_data_buff();
436 4
437 4 display2();
438 4
439 4 }
440 3
441 3
442 3 else if(key==0x0d) //键盘1更改年-
443 3 {lc_write(0x01);
444 4
445 4 lc_write(0x0f);
446 4
447 4
448 4
449 4 time.year--;
450 4
451 4 if(time.year<=0)
452 4 time.year=0;
453 4
454 4
455 4
456 4
457 4 k=0;a=1;
458 4 delay(500);
459 4 time_to_display_data_buff();
460 4
461 4 display2();
462 4
463 4 }
464 3 else if(key==0x02) //键盘2更改月+
465 3 {lc_write(0x01);
466 4 lc_write(0x0f);
467 4 time.month++;
468 4
469 4 if (time.day>=jinwei())
*** WARNING C209 IN LINE 469 OF TIME.C: '_jinwei': too few actual parameters
470 4
471 4 time.day=1;
472 4
473 4 if(time.month==13)
474 4 time.month=1;
475 4
476 4
477 4
478 4 k=0;a=1;
479 4 delay(500);
480 4 time_to_display_data_buff();
481 4
482 4 display2();
483 4
484 4
C51 COMPILER V8.02 TIME 08/22/2007 19:41:21 PAGE 9
485 4
486 4
487 4 }
488 3
489 3 else if(key==0x0e) //键盘2更改月-
490 3 {lc_write(0x01);
491 4 lc_write(0x0f);
492 4 time.month--;
493 4
494 4 if (time.day>=jinwei())
*** WARNING C209 IN LINE 494 OF TIME.C: '_jinwei': too few actual parameters
495 4
496 4 time.day=1;
497 4
498 4 if(time.month==0)
499 4 time.month=12;
500 4
501 4
502 4
503 4 k=0;a=1;
504 4 delay(500);
505 4 time_to_display_data_buff();
506 4
507 4 display2();
508 4
509 4
510 4
511 4
512 4 }
513 3 else if(key==0x03) //键盘3更改天+
514 3 {lc_write(0x01);
515 4 lc_write(0x0f);
516 4 time.day++;
517 4
518 4 if (time.day==jinwei()) time.day=1;
*** WARNING C209 IN LINE 518 OF TIME.C: '_jinwei': too few actual parameters
519 4
520 4
521 4
522 4 //jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
523 4
524 4
525 4
526 4 k=0;a=1;
527 4 delay(500);
528 4 time_to_display_data_buff();
529 4
530 4 display2();
531 4
532 4
533 4 }
534 3
535 3 else if(key==0x0f) //键盘3更改天-
536 3 {lc_write(0x01);
537 4 lc_write(0x0f);
538 4 time.day--;
539 4
540 4
541 4 if (time.day<=0) time.day=jinwei()-1;
*** WARNING C209 IN LINE 541 OF TIME.C: '_jinwei': too few actual parameters
542 4
543 4
C51 COMPILER V8.02 TIME 08/22/2007 19:41:21 PAGE 10
544 4 k=0;a=1;
545 4 delay(500);
546 4 time_to_display_data_buff();
547 4
548 4 display2();
549 4
550 4
551 4 }
552 3 else if(key==0x05) //键盘5更改小时+
553 3 {lc_write(0x01);
554 4 lc_write(0x0f);
555 4 time.hour++;
556 4 if(time.hour==24)
557 4 time.hour=0;
558 4
559 4 k=0;a=1;
560 4 delay(500);
561 4 time_to_display_data_buff();
562 4
563 4 display2();
564 4
565 4
566 4
567 4
568 4 }
569 3
570 3 else if(key==0x11) //键盘5更改小时-
571 3 {lc_write(0x01);
572 4 lc_write(0x0f);
573 4 time.hour--;
574 4 if(time.hour==-1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -