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

📄 mainproc.lst

📁 Keil C51完整的128X64LCD显示的电子打铃仪代码,内含DS1302X5045等操作代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 202   1              {
 203   2                      LightOnOff      =       TRUE;
 204   2                      Light_DT        =       (uint16)((Light_DelayTime*100));
 205   2              Light_DT        =       Light_DT/TIME_VMS;
 206   2              }
 207   1              
 208   1              //读取按键音开或关值
 209   1              //BeepOnOff=TRUE 开,FALSE--关
 210   1              if(RD_ByteFromDS1302_RAM(Beep_RAMAddr|0x01)==0x00)
 211   1                      BeepOnOff=FALSE;
 212   1              else
 213   1                      BeepOnOff=TRUE;
 214   1      
 215   1              //闹铃初始化
 216   1              tempvar=EepromRead(TimerFlag);
 217   1              tempvar1=EepromRead(TimerFlag+1);
 218   1              if(tempvar!=0x55 || tempvar1!=0xAA)
 219   1              {
 220   2                      
 221   2                      EepromWrite(TimerFlag,0x55);
 222   2                      Delay(1);
 223   2                      EepromWrite(TimerFlag+1,0xAA);
 224   2                      Delay(1);
 225   2                      //清X5045
 226   2                      for(tempvar1=0x12;tempvar1<160;tempvar1++)
 227   2                      {
 228   3                              EepromWrite(tempvar1,0x00);
 229   3                              Delay(1);
 230   3                      }
 231   2              }
 232   1              else
 233   1              {//读已设置的铃点数值
 234   2                      tempvar=EepromRead(Timers);
 235   2                      for(tempvar1=0;tempvar1<tempvar;tempvar1++)
 236   2                      {
 237   3                              TimerArray[tempvar1].BitEnable=EepromRead(TimerValue+tempvar1*3);
 238   3                              TimerArray[tempvar1].Hour=EepromRead(TimerValue+tempvar1*3+1);
 239   3                              TimerArray[tempvar1].Minute=EepromRead(TimerValue+tempvar1*3+2);
 240   3                      }
 241   2              }
C51 COMPILER V7.50   MAINPROC                                                              12/10/2008 15:08:38 PAGE 5   

 242   1      
 243   1              Initial_DS1302();
 244   1              InitLcd();      
 245   1      
 246   1              Set_Timer0_60ms();      
 247   1      }
 248          
 249          
 250          //==========================================
 251          //定时器0中断
 252          #pragma disable
 253          void Timer0ISR(void) interrupt 1 
 254          {
 255   1              Set_Timer0_60ms();
 256   1      
 257   1              if(LightOnOff==TRUE)
 258   1              {
 259   2                      Count_BG++;
 260   2                      if (Count_BG>=Light_DT)
 261   2                      {
 262   3                              Light_Off();
 263   3                      }
 264   2              }
 265   1              
 266   1              if (HaveKey_Flag)
 267   1              {
 268   2                      Light_Destory++;
 269   2                      if (Light_Destory>=RetDelay)
 270   2                      {
 271   3                              Light_Destory=0;
 272   3                              ret_Flag=TRUE;
 273   3                      }
 274   2              }
 275   1      
 276   1              KeyCount++;
 277   1              if(KeyCount>25)
 278   1              {
 279   2                      KeyCount=0;
 280   2                      KeyBool=TRUE;
 281   2              }
 282   1              Cursor_Count++;
 283   1                  
 284   1      }
 285          
 286          
 287          void main()
 288          {
 289   1              idata uint8 Sys_D_T0[7];
 290   1              idata uint8 KeyValue,MainMenuIndex=0;
 291   1              bit SucFlag=0;
 292   1              PowerOnInitial();
 293   1              VariableInitial();
 294   1              SystemInitial();
 295   1              ClearRAM(0,7);
 296   1              LOGO();
 297   1              Beep(2);
 298   1              ClearRAM(0,8);
 299   1      
 300   1      #ifdef MYDEBUG
                      KeyValue=0x77;
                      Msingle_font_pattern (English_Offset[(KeyValue>>4)&0x0F],2,64,0);
                      Msingle_font_pattern (English_Offset[(KeyValue&0x0F)],2,72,0);
C51 COMPILER V7.50   MAINPROC                                                              12/10/2008 15:08:38 PAGE 6   

                      KeyValue=0x00;
                      EepromWrite(0x20,0x55);
                      Beep(1);
                      KeyValue=EepromRead(0x20);
                      Msingle_font_pattern (English_Offset[(KeyValue>>4)&0x0F],2,8,0);
                      Msingle_font_pattern (English_Offset[(KeyValue&0x0F)],2,16,0);
                      EepromWrite(0x21,0x66);
                      Beep(1);
                      KeyValue=EepromRead(0x21);
                      Msingle_font_pattern (English_Offset[(KeyValue>>4)&0x0F],2,32,0);
                      Msingle_font_pattern (English_Offset[(KeyValue&0x0F)],2,40,0);
                      
                      KeyValue=KeyScan();
                      while(KeyValue==NOKEY_PRESS);
              #endif
 319   1      
 320   1              while(1)
 321   1              {
 322   2                      Get_TimeFromDS1302(Sys_D_T0);
 323   2      
 324   2              
 325   2      
 326   2                      if(SucFlag==0)
 327   2                      {                       
 328   3                              DispRTC(0,Sys_D_T0);//显示时钟日历      
 329   3                              Display_Line(5,32,5,0,ShowTip[0]);      
 330   3                              Delay_Ret(T0_60S);
 331   3                      }
 332   2                      else
 333   2                      {
 334   3                              MainMenuShow(MainMenuIndex);
 335   3                              if(ret_Flag)
 336   3                              {
 337   4                                      ClearRAM(0,8);
 338   4                                      SucFlag=0;                      
 339   4                              }       
 340   3                      }
 341   2      
 342   2                      OpenSystem(Sys_D_T0[2],Sys_D_T0[1]);
 343   2              
 344   2                      KeyValue=KeyScan();
 345   2      
 346   2                      if(KeyValue==NOKEY_PRESS)continue;
 347   2      
 348   2                      Light_On();
 349   2                      NoDelay_Ret();  
 350   2                                                      
 351   2                      switch(KeyValue)
 352   2                      {
 353   3                              case ENTER:
 354   3                                      if(SucFlag==0)//未校验口令则校验权限口令
 355   3                                      {
 356   4                                              if(PwdCheck())//校验口令,正确后显示主菜单
 357   4                                              {
 358   5                                                      ClearRAM(0,8);
 359   5                                                      MainMenuShow(0);
 360   5                                                      SucFlag=1;      
 361   5                                               }
 362   4                                               else
 363   4                                               {              
 364   5                                                      SucFlag=0;
 365   5                                               }
C51 COMPILER V7.50   MAINPROC                                                              12/10/2008 15:08:38 PAGE 7   

 366   4                                      }
 367   3                                      else//已校验口令则进入保存相应菜单处理事件
 368   3                                      {
 369   4                                              switch(MainMenuIndex)//菜单命令处理
 370   4                                              {
 371   5                                                      case 0://时钟设置
 372   5                                                              SystemSet();
 373   5                                                              break;
 374   5                                                      case 1://闹钟设置
 375   5                                                              TimerSetProc();
 376   5                                                              break;
 377   5                                                      case 2://背光设置--常开\常关或延时关
 378   5                                                              WakeSetProc();
 379   5                                                              break;
 380   5                                                      case 3://本机蜂鸣声开还关设置
 381   5                                                              DispInfo();
 382   5                                                              break;
 383   5                                              }
 384   4                                      }
 385   3                                      break;
 386   3                               case MOVE://菜单移动键
 387   3                                      MainMenuIndex++;
 388   3                                      if(MainMenuIndex>=MAINMENUITEMNUM)MainMenuIndex=0;
 389   3                                      break; 
 390   3                               case ESC:
 391   3                                      ClearRAM(0,8);
 392   3                                      SucFlag=0;
 393   3                                      break;   
 394   3                      }
 395   2              }
 396   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    934    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    108    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =     11       9
   BIT SIZE         =      5       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -