📄 93c46.lst
字号:
416 9 ewen();
417 9 flash_number_bit=0x08;
418 9 }
419 8 else if((key_s&0x04)==0x00)
420 8 {
421 9 if(++eeprom_data[6]==0x10)
422 9 eeprom_data[6]=0x00;
423 9 while(k2==0)
424 9 {
425 10 delay_1ms(200);
426 10 if(k2==0)
427 10 {
C51 COMPILER V7.07 93C46 05/15/2008 11:31:32 PAGE 8
428 11 delay_1ms(100);
429 11 if(++eeprom_data[6]==0x10)
430 11 eeprom_data[6]=0x00;
431 11 }
432 10 }
433 9 }
434 8 else if((key_s&0x02)==0x00)
435 8 {
436 9 erase();
437 9 for(i=0;i<10;i++)
438 9 eeprom_data[i]=0x0f;
439 9 }
440 8 else if((key_s&0x01)==0x00)
441 8 {
442 9 for(i=0;i<8;i++)
443 9 write(i, eeprom_data[i]);
444 9 ewds();
445 9 flash_bit=1;
446 9 key_number=0x00;
447 9 }
448 8 }
449 7 }
450 6 }while(key_number==0x07);
451 5 //
452 5 do
453 5 {
454 6 key_s=key_scan();
455 6 if(key_s^key_v)
456 6 {
457 7 delay_1ms(10);
458 7 key_s=key_scan();
459 7 if(key_s^key_v)
460 7 {
461 8 key_v=key_s;
462 8 if((key_s&0x08)==0x00)
463 8 {
464 9 key_number=0x00;
465 9 ewen();
466 9 flash_number_bit=0x00;
467 9 }
468 8 else if((key_s&0x04)==0x00)
469 8 {
470 9 if(++eeprom_data[7]==0x10)
471 9 eeprom_data[7]=0x00;
472 9 while(k2==0)
473 9 {
474 10 delay_1ms(200);
475 10 if(k2==0)
476 10 {
477 11 delay_1ms(100);
478 11 if(++eeprom_data[7]==0x10)
479 11 eeprom_data[7]=0x00;
480 11 }
481 10 }
482 9 }
483 8 else if((key_s&0x02)==0x00)
484 8 {
485 9 erase();
486 9 for(i=0;i<10;i++)
487 9 eeprom_data[i]=0x0f;
488 9 }
489 8 else if((key_s&0x01)==0x00)
C51 COMPILER V7.07 93C46 05/15/2008 11:31:32 PAGE 9
490 8 {
491 9 for(i=0;i<8;i++)
492 9 write(i, eeprom_data[i]);
493 9 ewds();
494 9 flash_bit=1;
495 9 key_number=0x00;
496 9 }
497 8 }
498 7 }
499 6 }while(key_number==0x08);
500 5 flash_bit=1;
501 5 }
502 4 }
503 3 }
504 2 }
505 1 }
506
507
508 void write(unsigned char addr, unsigned char indata)
509 // 写入数据indata到addr
510 {
511 1 inop(OP_WRITE_H, addr); // 写入指令和地址
512 1 shin(indata);
513 1 CS = 0;
514 1 delay_1ms(10); // Twp
515 1 }
516
517 unsigned char read(unsigned char addr)
518 // 读取addr处的数据
519 {
520 1 unsigned char out_data;
521 1 inop(OP_READ_H, addr); // 写入指令和地址
522 1 out_data = shout();
523 1 CS = 0;
524 1 return out_data;
525 1 }
526
527 void ewen()
528 //允许写
529 {
530 1 inop(OP_EWEN_H, OP_EWEN_L);
531 1 CS= 0;
532 1 }
533
534 void ewds()
535 //禁止写
536 {
537 1 inop(OP_EWDS_H, OP_EWDS_L);
538 1 CS= 0;
539 1 }
540
541 void erase()
542 //擦除
543 {
544 1 inop(OP_ERAL_H, OP_ERAL_L);
545 1 delay_1ms(30);
546 1 CS = 0;
547 1 }
548
549
550 void inop(unsigned char op_h, unsigned char op_l)
551 //写入指令和地址
C51 COMPILER V7.07 93C46 05/15/2008 11:31:32 PAGE 10
552 {unsigned char i;
553 1 SK=0;
554 1 DI=1;
555 1 CS=1;
556 1 SK=1;
557 1 _nop_();
558 1 SK=0;
559 1 DI=(bit)(op_h&0x80);
560 1 SK=1;
561 1 op_h<<=1;
562 1 SK=0;
563 1 DI=(bit)(op_h&0x80);
564 1 SK=1;
565 1 _nop_();
566 1 SK=0;
567 1 op_l<<=1;
568 1 for(i=0;i<7;i++)
569 1 {
570 2 DI=(bit)(op_l&0x80);
571 2 SK=1;
572 2 op_l<<=1;
573 2 SK=0;
574 2 }
575 1 DI=1;
576 1 }
577
578 void shin(unsigned char indata)
579 //移入数据
580 {
581 1 unsigned char i;
582 1 for(i = 0; i < 8; i++)
583 1 {
584 2 DI = (bit)(indata & 0x80); // 先移入高位
585 2 SK = 1;
586 2 indata <<= 1;
587 2 SK = 0;
588 2 }
589 1 DI = 1;
590 1 }
591
592 unsigned char shout(void)
593 // 移出数据
594 {
595 1 unsigned char i, out_data;
596 1 for(i = 0; i < 8; i++)
597 1 {
598 2 SK = 0;
599 2 out_data <<= 1;
600 2 SK = 1;
601 2 out_data |= (unsigned char)DO;
602 2 }
603 1 return(out_data);
604 1 }
605
606 void delay_1ms(unsigned char ms)
607 // 延时子程序
608 {
609 1 unsigned char i;
610 1 while(ms--)
611 1 {
612 2 for(i = 0; i < 120; i++);
613 2 }
C51 COMPILER V7.07 93C46 05/15/2008 11:31:32 PAGE 11
614 1 }
615 unsigned char key_scan()
616 //按键扫描
617 {
618 1 unsigned char key_number;
619 1 key_number=0x00;
620 1 key_number|=k1;
621 1 key_number<<=1;
622 1 key_number|=k2;
623 1 key_number<<=1;
624 1 key_number|=k3;
625 1 key_number<<=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -