⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.lst

📁 本人写的STC单片机EEPROM功能程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -