keyproc.lst
来自「philip RTC 芯片的驱动程序 8563」· LST 代码 · 共 806 行 · 第 1/4 页
LST
806 行
579 1 BYTE Command_length;
580 1 BYTE i;
581 1
582 1 SBUF = 0xFF;
583 1 while(TI == 0);
584 1 TI = 0;
585 1 DelayX1ms(20);
586 1
587 1 SBUF = 0xFF;
588 1 while(TI == 0);
589 1 TI = 0;
590 1 SBUF = 0x55;
591 1 while(TI == 0);
592 1 TI = 0;
593 1
594 1 Command_length = Keypointer[0] + 2;
595 1 for(i = 0; i< Command_length; i++)
596 1 {
597 2
598 2 SBUF = *(Keypointer + i );
599 2 while(TI == 0);
600 2 TI = 0;
601 2 DelayX1ms(3);
602 2 }
603 1 }
604
605 void Power_Proc()
606 {
607 1 if(POWER_Status == on)//开机状态
608 1 {
609 2 AV_MUTE = 1; //静音防止开机噪音
610 2 DelayX1ms(255);
611 2 Power_Pin = 1;
612 2 DelayX1ms(20);
C51 COMPILER V7.50 KEYPROC 10/18/2005 14:13:29 PAGE 11
613 2 Volume_Tune(0);
614 2 DelayX1ms(255);
615 2 AV_MUTE = 0;
616 2 // Current_Volume = I2C_GetByte(A24C02_WRITE,0);//读出上次音量值
617 2 Current_Volume = byte_read(0x2000);
618 2
619 2 if(Current_Volume > 50)//防止第一次开机显示音量错乱
620 2 Current_Volume = 30;
621 2 Volume_Tune(Current_Volume);
622 2 LED_G = 0;
623 2 lcd_light = 0;
624 2
625 2 //开机显示通道
626 2 if (Channel_Select == 0)
627 2 {
628 3 Volume_Tune(0);
629 3 DelayX1ms(255);
630 3 C4052_A = 1;
631 3 C4052_B = 0;
632 3
633 3 display_aux2(); //显示
634 3 P1_6 = 0;
635 3 P3_3 = 1;
636 3 P1_7 = 1;
637 3 }
638 2 else if (Channel_Select == 1)
639 2 {
640 3 Volume_Tune(0);
641 3 DelayX1ms(255);
642 3
643 3 C4052_A = 0;
644 3 C4052_B = 1;
645 3
646 3 display_main();//显示
647 3 P3_3 = 0;
648 3 P1_6 = 1;
649 3 P1_7 = 1;
650 3 }
651 2 else if (Channel_Select == 2)
652 2 {
653 3 Volume_Tune(0);
654 3 DelayX1ms(255);
655 3
656 3 C4052_A = 1;
657 3 C4052_B = 1;
658 3 display_aux1();//显示
659 3 P1_7 = 0;
660 3 P1_6 = 1;
661 3 P3_3 = 1;
662 3 }
663 2 Volume_Tune(Current_Volume);
664 2
665 2 //开机显示音量进度条
666 2 switch(Current_Volume / 5)
667 2 {
668 3 case 0:
669 3 display_0bar();
670 3 break;
671 3 case 1:
672 3 display_1bar();
673 3 break;
674 3 case 2:
C51 COMPILER V7.50 KEYPROC 10/18/2005 14:13:29 PAGE 12
675 3 display_2bar();
676 3 break;
677 3 case 3:
678 3 display_3bar();
679 3 break;
680 3 case 4:
681 3 display_4bar();
682 3 break;
683 3 case 5:
684 3 display_5bar();
685 3 break;
686 3 case 6:
687 3 display_6bar();
688 3 break;
689 3 case 7:
690 3 display_7bar();
691 3 break;
692 3 case 8:
693 3 display_8bar();
694 3 break;
695 3 case 9:
696 3 display_9bar();
697 3 break;
698 3 case 10:
699 3 display_10bar();
700 3 break;
701 3
702 3 default:
703 3 break;
704 3 }
705 2 //显示音量数码值
706 2
707 2 display_68(Current_Volume % 10 );
708 2 display_58(Current_Volume / 10);
709 2 POWER_Status = off;
710 2 }
711 1
712 1 else if(POWER_Status == off)//关机状态
713 1 {
714 2 AV_MUTE = 1; //关机静音
715 2 DelayX1ms(255);
716 2 mute_flag = 0;//如果静音则关机解除静音,为开机不静音准备
717 2 P3_3 = 1;
718 2 P1_6 = 1;
719 2 P1_7 = 1;
720 2 // I2C_PutByte(A24C02_WRITE, 0,Current_Volume);
721 2 /* 扇区擦除 */
722 2 sector_erase(0x2000);
723 2 /* 字节编程 */
724 2 byte_program(0x2000, Current_Volume);
725 2
726 2 Power_Pin = 0;
727 2 LED_G = off;
728 2 lcd_light = off;
729 2
730 2 display_0bar(); //关机不显示bar
731 2 display_offchanel();//关机不显示任何通道
732 2 display_mute(lcd_unmute);//关机不显示MUTE
733 2
734 2 lcd_wr_addr(0x03);
735 2 lcd_wr_data(0x0);//关机不显示第一个小8数码管
736 2 lcd_wr_addr(0x02);
C51 COMPILER V7.50 KEYPROC 10/18/2005 14:13:29 PAGE 13
737 2 lcd_wr_data(0x0);
738 2
739 2 lcd_wr_addr(0x01);
740 2 lcd_wr_data(0x0);
741 2 lcd_wr_addr(0x00);//关机不显示第二个小8数码管
742 2 lcd_wr_data(0x0);
743 2
744 2 C4052_A = 0;
745 2 C4052_B = 0;//power off switch to void chanel.
746 2 //关机时关闭IPOD
747 2 {
748 3 Keypointer = POWER_OFF_TBL;
749 3 SendKeyToiPod();
750 3 }
751 2
752 2 POWER_Status = on;
753 2
754 2 }
755 1 }
756
757
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2007 ----
CONSTANT SIZE = 141 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 3
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?