📄 led.lst
字号:
582 case 2: cTemp=0x46; break; //
583 case 3: cTemp=0x54; break; //
584 case 4: cTemp=0x9C; break; //
585 case 5: cTemp=0x34; break; //
586 case 6: cTemp=0x24; break; //
587 case 7: cTemp=0x5D; break; //
588 case 8: cTemp=0x04; break; //
589 case 9: cTemp=0x14; break; //
590
591 default: break;
592 }
593 return(cTemp);
594 }
595
596 /***********************************************************************************
597 函数名:void display(void)
598 功能:显示函数
599 返回值:
600 ***********************************************************************************/
601 void display(void){
602 1 uchar i;
603 1
604 1 wordbuf[3] = vSecond%10;
605 1 wordbuf[2] = vSecond/10;
606 1 wordbuf[1] = vMinute%10;
607 1 wordbuf[0] = vMinute/10;
608 1
609 1 switch (digbit){
610 2 case 1: i=0;break;
611 2 case 2: i=1;break;
612 2 case 4: i=2;break;
613 2 case 8: i=3;break;
C51 COMPILER V7.10 LED 10/22/2007 09:39:59 PAGE 11
614 2 default: break;
615 2 }
616 1
617 1 // DIGPORT = 0; // 关闭显示
618 1 // WORDPORT = getcode(wordbuf[i]); // 送字型码
619 1 WORDPORT = Led_Data[wordbuf[i]]; // 送字型码
620 1 DIGPORT = ~ digbit; // 送字位码
621 1
622 1 if (digbit < 0x09){
623 2 digbit <<= 1;
624 2 }
625 1 else{
626 2 digbit = 0x01;
627 2 }
628 1 DogReset();
629 1 }
630
631 /***********************************************************************************
632 函数名:void Display(uchar cBit, uchar cNumber)
633 功能:显示子程序
634 返回值:
635 ***********************************************************************************/
636 /*
637 void Display(uchar cBit, uchar cNumber){
638 // uchar i;
639 uchar cTemp;
640
641 switch(cBit){
642 case 0:
643 cTemp=~0x08;
644 break;
645
646 case 1:
647 cTemp=~0x04;
648 break;
649
650 case 2:
651 cTemp=~0x02;
652 break;
653
654 case 3:
655 cTemp=~0x01;
656 break;
657 }
658 // for(i=0;i<4;i++){
659 P1&=cTemp;
660 P0=Led_Data[cNumber];
661 delay_ms(5);
662 // }
663 }
664
665 /**************************************************************************
666 * 函数原型: void IO_Init(void);
667 * 功 能: 对扩展IO口的状态进行初始化
668 **************************************************************************/
669 void IO_Init(void){
670 1 P0=0x00;
671 1 P1=0xFF;
672 1 P2=0xff;
673 1 P3=0x00;
674 1 }
675
C51 COMPILER V7.10 LED 10/22/2007 09:39:59 PAGE 12
676 /**************************************************************************
677 * 函数原型: void ChipInit(void);
678 * 功 能: 对CPU及外部的硬件资源进行初始化
679 **************************************************************************/
680 void ChipInit(void){
681 1
682 1 IE=0;
683 1
684 1 // 使用外部扩展RAM,允许ALE输出
685 1 #if STC89C58
686 1 // AUXR=0x02; // 使用外部扩展RAM,允许ALE输出
687 1 AUXR=0x00; //使用内部扩展RAM(===========开始为0x02,结果一直出错)
688 1 #elif W77E58
CKCON=0xc1; // CKCON.2-0 = 100, MOVX指令用6个机器周期;CKCON.2-0 = 001, MOVX指令用3个机器周期
#endif
691 1 // 定时器控制字初始化
692 1 TMOD=0x21; // 定时器1为方式2,定时器0为方式1
693 1 TCON=0x05; // 设置外部中断类型
694 1 T2CON=0x0d; // 选择定时器1为波特率发生器,T2为捕获工作方式
695 1 // ET2=1;
696 1 ET0=1; // 允许定时器0、定时器2中断
697 1
698 1
699 1 // 外部中断设置
700 1 EX0=0; // FFSK中断初始时关闭,有载波时再开启
701 1 EX1=0;
702 1 IT1=1; // 外部中断0、1均为下降沿触发
703 1 IT0=1;
704 1
705 1 // 启动定时器0
706 1 TH0=vT0HVal; // 启动定时器0
707 1 TL0=vT0LVal;
708 1 TR0=1;
709 1
710 1 // UART全双工串口的初始化
711 1 SCON = 0x50; // 串口模式1,8位UART,接收使能
712 1 /*
713 1 PCON|=0x80;
714 1
715 1 TH1 = 0xfa;//19200
716 1 TH1 = 0xfd;//38400
717 1 TH1 = 0xfe;//57600实际上11.0592M的晶振达不到
718 1 TH1 = 0xff;//115200实际上11.0592M的晶振达不到
719 1 */
720 1 // PCON|=0x80;
721 1 // TH1 = 0xfd; //SMOD=1,波特率为38400
722 1
723 1 TH1 = vBaudTime; // 波特率目前为9600Hz
724 1 PCON&=0x7f; // 串口通信速率倍数为1
725 1
726 1 // TR1=1; // 启动波特率发生器
727 1 // ES=1; // 允许串口中断
728 1
729 1 // 优先级设置
730 1 // PX0 = 1;
731 1 // PT2 = 1; // 解信令及接收FFSK为最高优先级,二者间不会引起冲突
732 1 IP=0x02; //PT2=1
733 1 IPH=0x02; //PT2H=1,PT0H=1
734 1 EA=1;
735 1 /*
736 1 TCON=0x50;
737 1 IE=0xb2;
C51 COMPILER V7.10 LED 10/22/2007 09:39:59 PAGE 13
738 1 */
739 1 // 系统看门狗设定
740 1 Dog_Init();
741 1
742 1 // 外部芯片初始化
743 1 IO_Init();
744 1
745 1 // FK_RxEnable(); // CMX469初始化为接收
746 1 delay_ms(10); // 延时是为了避免定时器0无法产生中断的问题
747 1
748 1 }
749
750 /***********************************************************************************
751 函数名:void initial(void)
752 功能:初始化
753 返回值:
754 ***********************************************************************************/
755 void SystemInitial(void){
756 1
757 1 b_Run=0;
758 1 digbit=0x01;
759 1 timeRead();
760 1 IO_Init();
761 1 ChipInit();
762 1 }
763
764 /***********************************************************************************
765 函数名:void main(void)
766 功能:主程序
767 返回值:
768 ***********************************************************************************/
769 void main(void){
770 1 SystemInitial();
771 1 while(1){
772 2 DogReset();
773 2 keyhandle();
774 2 vEEprom=eeprom_read(UseAddr);
775 2 /* if(vEEprom==0x01){
776 2 Display(0,1);
777 2 }
778 2 else if(vEEprom==0x02){
779 2 Display(0,2);
780 2 }
781 2 else{
782 2 Display(0,3);
783 2 }*/
784 2 // Display(1,vSecond/10);
785 2 }
786 1 }
787
788 /**************************************************************************
789 * 函数原型: void Trint0(void) interrupt 1 using 1;
790 * 功 能: 全局定时
791 **************************************************************************/
792 void Trint0(void) interrupt 1 using 1{
793 1 /*
794 1 // 2ms 定时设置
795 1 time0_tmp = 65536-time0*fosc/12;
796 1 TH0 = (time0_tmp/256);
797 1 TL0 = (time0_tmp%256);
798 1 */
799 1 TR0=0; // 时基500uS
C51 COMPILER V7.10 LED 10/22/2007 09:39:59 PAGE 14
800 1 TH0=vT0HVal;
801 1 TL0=vT0LVal;
802 1 TR0=1;
803 1 TF0=0;
804 1
805 1 if(!(--cT01ms)){
806 2 cT01ms=vT01MS;
807 2 display();
808 2 if(iDY_Timer!=0xffff){ // 定时器标准定时
809 3 if(iDY_Timer!=0x0000){
810 4 --iDY_Timer;
811 4 }
812 3 else{
813 4 iDY_Timer=0xffff;
814 4 }
815 3 }
816 2 if(!(--cT010ms)){
817 3 cT010ms=vT010MS;
818 3 if(cDY_LedFlash!=0xff){ // 灯闪烁控制启动
819 4 if(cDY_LedFlash!=0x00){
820 5 --cDY_LedFlash;
821 5 }
822 4 else{
823 5 cDY_LedFlash=vLedFlashTimeVal;
824 5 }
825 4 }
826 3 if(cDY_KeyKeep!=0xff){ // 键盘扫描延时
827 4 if(cDY_KeyKeep!=0x00){
828 5 --cDY_KeyKeep;
829 5 }
830 4 }
831 3
832 3 if(!(--cT01s)){
833 4 cT01s=vT01S;
834 4 LED=!LED;
835 4 RELAY=!RELAY;
836 4 time[0]=vSecond;
837 4 time[1]=vMinute;
838 4 time[2]=vHour;
839 4
840 4 timeSave();
841 4 // ArrayWrite(vSecondAddr, 3, time);
842 4
843 4 // if(b_Run){
844 4 if(++vSecond>59){
845 5 vSecond=0;
846 5 if(++vMinute>59){
847 6 vMinute=0;
848 6 if(++vHour>23){
849 7 vHour=0;
850 7 }
851 6 }
852 5 }
853 4 // }
854 4 }
855 3 }
856 2 }
857 1 }
858
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V7.10 LED 10/22/2007 09:39:59 PAGE 15
CODE SIZE = 718 ----
CONSTANT SIZE = 28 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 22 ----
IDATA SIZE = 4 ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -