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

📄 smallfunction.lst

📁 一个以前开发的实际应用的交通灯控制器程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 259   4                              }
 260   3                      }
 261   2                      AutoLockCnt=SYS_LCD_OFF_TIME;
 262   2                              
 263   2                      switch(kv) 
 264   2                      {
 265   3                              case KEY_NUM0:
 266   3                                      k=0;
 267   3                                      break;
 268   3                              case KEY_NUM1:
 269   3                                      k=1;
 270   3                                      break;
 271   3                              case KEY_NUM2:
 272   3                                      k=2;
 273   3                                      break;
 274   3                              case KEY_NUM3:
 275   3                                      k=3;
 276   3                                      break;
 277   3                              case KEY_NUM4:
 278   3                                      k=4;
 279   3                                      break;
 280   3                              case KEY_NUM5:
 281   3                                      k=5;
 282   3                                      break;
 283   3                              case KEY_NUM6:
 284   3                                      k=6;
 285   3                                      break;
 286   3                              case KEY_NUM7:
 287   3                                      k=7;
 288   3                                      break;
 289   3                              case KEY_NUM8:
 290   3                                      k=8;
 291   3                                      break;
 292   3                              case KEY_NUM9:
 293   3                                      k=9;
C51 COMPILER V7.50   SMALLFUNCTION                                                         04/03/2007 10:38:52 PAGE 6   

 294   3                                      break;
 295   3                              case KEY_CANCEL:
 296   3                              case KEY_MENU://相当于取消
 297   3                                      LcdCurOff();
 298   3                                      AppBuf[0]=0xff;
*** ERROR C202 IN LINE 298 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'AppBuf': undefined identifier
 299   3                                      AppBuf[1]=0xff;
*** ERROR C202 IN LINE 299 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'AppBuf': undefined identifier
 300   3                                      return;
 301   3                              case KEY_ENTER:
 302   3                                      AppBuf[0]=kt;
*** ERROR C202 IN LINE 302 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'AppBuf': undefined identifier
 303   3                                      AppBuf[1]=kt1;
*** ERROR C202 IN LINE 303 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'AppBuf': undefined identifier
 304   3                                      LcdCurOff();
 305   3                                      return;
 306   3                              default:
 307   3                                      k=10;
 308   3                      }
 309   2                      if(k==10)
 310   2                              continue;//无效继续循环
 311   2                      if(i<2)//前两位
 312   2                      {
 313   3                              kt=kt*10;
 314   3                              kt+=k;
 315   3                      }
 316   2                      else
 317   2                      {
 318   3                              kt1=kt1*10;
 319   3                              kt1+=k;
 320   3                      }
 321   2                      for(k=0;k<=i;k++)
 322   2                      {
 323   3                              LcdChar(x,y+k,0xA1);
 324   3                              LcdAddChar(0xEF);//★
 325   3                      }
 326   2                      i++;
 327   2                      if(i>=4)//
 328   2                      {
 329   3                              AppBuf[0]=kt;
*** ERROR C202 IN LINE 329 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'AppBuf': undefined identifier
 330   3                              AppBuf[1]=kt1;
*** ERROR C202 IN LINE 330 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'AppBuf': undefined identifier
 331   3                              LcdCurOff();
 332   3                              return;
 333   3                      }
 334   2                      LcdCur(x,y+i);//光标
 335   2                      k=10;
 336   2              }
 337   1      }
 338          ///////////////////////////////////////////////
 339          void HourUpdate()
 340          {
 341   1      //
 342   1              unsigned char xdata i,j,k;
 343   1              unsigned char xdata yy,mm,dd;
 344   1              k=EPR_Read(ADDR_HOLIDAY_PERMIT);
 345   1              if(!k)//不允许节日
 346   1                      pSchBaseAddr=ADDR_GENARAL;
 347   1              else
 348   1              {//是否节日
 349   2                      yy=XBYTE[RTC_BASE+RegYear];
C51 COMPILER V7.50   SMALLFUNCTION                                                         04/03/2007 10:38:52 PAGE 7   

 350   2                      mm=XBYTE[RTC_BASE+RegMonth];
 351   2                      dd=XBYTE[RTC_BASE+RegDate];
 352   2                      for(i=0;i<20;i++)
 353   2                      {//检查是否假日
 354   3                              j=EPR_Read(ADDR_HOLIDAY_HEAD+1);//mm
 355   3                              k=EPR_Read(ADDR_HOLIDAY_HEAD+2);//dd
 356   3                              if((mm==j)&&(dd==k))
 357   3                              {
 358   4                                      k=100;//不可能的天数,标记是节日
 359   4                                      break;
 360   4                              }
 361   3                      }
 362   2                      if(k==100)
 363   2                              pSchBaseAddr=ADDR_HOLIDAY;
 364   2                      else
 365   2                              pSchBaseAddr=ADDR_GENARAL;
 366   2              }
 367   1      //      printf("Sch:%d\n",pSchBaseAddr);
 368   1      
 369   1              k=XBYTE[RTC_BASE+RegHours];//小时
 370   1      //      printf("Hour:%d\n",k);
 371   1              k>>=1;//换到时段去
 372   1              
 373   1              pPhaseGroupAddr=pSchBaseAddr+k*PHASE_GROUP_LEN;//可有12个相位组
 374   1      
 375   1              PhaseCnt=0;
 376   1              SecondCnt=0;
 377   1              //PhaseSwitch();
 378   1      }
 379          
 380          void PhaseSwitch()
 381          {
 382   1              unsigned char xdata k;
 383   1      
 384   1              GsFlag=1;
 385   1              while(PhaseCnt<8)//在8个相位中寻找下一个相位
 386   1              {
 387   2                      PhaseCnt++;
 388   2                      k=EPR_Read(pPhaseGroupAddr+PhaseCnt*PHASE_LEN+CHEDAO_ADJ+2);
*** ERROR C202 IN LINE 388 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'CHEDAO_ADJ': undefined identifier
 389   2                      if((k & 0xf0)==0x00)//车道2在高4位为0则该相位有效
 390   2                              break;
 391   2              }
 392   1              if(PhaseCnt>=8)
 393   1              {
 394   2                      HourUpdate();
 395   2                      PhaseCnt=0;     
 396   2              }
 397   1      
 398   1              CheDaoBuf[2]=EPR_Read(pPhaseGroupAddr+PhaseCnt*PHASE_LEN+CHEDAO_ADJ+0);
*** ERROR C202 IN LINE 398 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'CHEDAO_ADJ': undefined identifier
 399   1              CheDaoBuf[1]=EPR_Read(pPhaseGroupAddr+PhaseCnt*PHASE_LEN+CHEDAO_ADJ+1);
*** ERROR C202 IN LINE 399 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'CHEDAO_ADJ': undefined identifier
 400   1              CheDaoBuf[0]=EPR_Read(pPhaseGroupAddr+PhaseCnt*PHASE_LEN+CHEDAO_ADJ+2);
*** ERROR C202 IN LINE 400 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'CHEDAO_ADJ': undefined identifier
 401   1              GreenTime=(unsigned int)EPR_Read(pPhaseGroupAddr+PhaseCnt*PHASE_LEN+GT_ADJ);
 402   1              GsTime=(unsigned int)EPR_Read(pPhaseGroupAddr+PhaseCnt*PHASE_LEN+GST_ADJ);
 403   1              if(GsTime>=GreenTime)
 404   1                      GsTime=GreenTime>>=1;
 405   1              YellowTime=(unsigned int)EPR_Read(pPhaseGroupAddr+PhaseCnt*PHASE_LEN+YT_ADJ);
 406   1              RedTime=(unsigned int)EPR_Read(pPhaseGroupAddr+PhaseCnt*PHASE_LEN+RT_ADJ);
 407   1      }
C51 COMPILER V7.50   SMALLFUNCTION                                                         04/03/2007 10:38:52 PAGE 8   

 408          
 409          void SecondCheck()
 410          {//每秒钟更新输出
 411   1      //2007-3-27 10:44 每秒钟调用此函数确保正常输出
 412   1              SecondCnt+=1;
 413   1              if(MeterSta==MSTA_AUTO)//GreenWayFlag)
*** ERROR C202 IN LINE 413 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'MeterSta': undefined identifier
 414   1              {//绿色通道特殊处理
 415   2                      ManChanelSta=STA_GREEN;
 416   2                      CarChanelSta=STA_GREEN;
 417   2                      GsFlag=1;
 418   2                      SecondCnt-=1;//保持计数不变,防止溢出
 419   2              }//绿色通道开启后不必理会其它
 420   1              else if(SecondCnt<=GreenTime-GsTime)
 421   1              {
 422   2                      ManChanelSta=STA_GREEN;
 423   2                      CarChanelSta=STA_GREEN;
 424   2                      //if(ManuelFlag)
 425   2                      if(MeterSta==MSTA_MANUAL)
*** ERROR C202 IN LINE 425 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'MeterSta': undefined identifier
 426   2                              SecondCnt-=1;//保持计数不变                                     
 427   2              }
 428   1              else if(SecondCnt<=GreenTime)
 429   1              {
 430   2                      ManChanelSta=STA_GS;
 431   2                      CarChanelSta=STA_GREEN;
 432   2                      GsFlag=!GsFlag;
 433   2                      //if(ManuelFlag)
 434   2                      if(MeterSta==MSTA_MANUAL)
*** ERROR C202 IN LINE 434 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'MeterSta': undefined identifier
 435   2                              SecondCnt-=1;//保持计数不变     
 436   2              }
 437   1              else if(SecondCnt<=GreenTime+GsTime)
 438   1              {
 439   2                      ManChanelSta=STA_RED;
 440   2                      CarChanelSta=STA_GS;
 441   2                      GsFlag=!GsFlag;
 442   2                      //if(ManuelFlag)
 443   2                      if(MeterSta==MSTA_MANUAL)
*** ERROR C202 IN LINE 443 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'MeterSta': undefined identifier
 444   2                              SecondCnt-=1;//保持计数不变     
 445   2              }
 446   1              else if(SecondCnt<=GreenTime+GsTime+YellowTime)
 447   1              {
 448   2                      ManChanelSta=STA_RED;
 449   2                      CarChanelSta=STA_YELLOW;
 450   2                      //if(ManuelFlag)
 451   2                      if(MeterSta==MSTA_MANUAL)
*** ERROR C202 IN LINE 451 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'MeterSta': undefined identifier
 452   2                              SecondCnt-=1;//保持计数不变
 453   2              }
 454   1              else if(SecondCnt<=GreenTime+GsTime+YellowTime+RedTime)
 455   1              {
 456   2                      ManChanelSta=STA_RED;
 457   2                      CarChanelSta=STA_RED;
 458   2                      //if(ManuelFlag)
 459   2                      if(MeterSta==MSTA_MANUAL)
*** ERROR C202 IN LINE 459 OF IIC[ULTRAL]\SMALLFUNCTION.C: 'MeterSta': undefined identifier
 460   2                              SecondCnt-=1;//保持计数不变     
 461   2              }
 462   1              else
 463   1              {//
C51 COMPILER V7.50   SMALLFUNCTION                                                         04/03/2007 10:38:52 PAGE 9   

 464   2                      SecondCnt=0;
 465   2                      SwitchFlag=1;
 466   2                      //don't Copy Page0 to Page1
 467   2                      PhaseSwitch();
 468   2              }
 469   1              //集中输出
 470   1              IO_Output();    
 471   1      }
 472          
 473          void IO_Output()
 474          {
 475   1              unsigned char xdata i,j,k,t,t1,t2;
 476   1      
 477   1              for(i=0;i<7;i++)
 478   1                      OutputBuf[i]=0x00;
 479   1      //0
 480   1              k=0x01;
 481   1              for(i=0;i<8;i++)
 482   1              {
 483   2                      if(k & 0x31)//人行
 484   2                      {
 485   3                      if((k & CheDaoBuf[1])!=0)//选中的人行道
 486   3                      {
 487   4                              if((ManChanelSta==STA_GREEN)||(ManChanelSta==STA_GS))
 488   4                              {
 489   5                                      if(GsFlag)//i亮绿灯
 490   5                                              j=0;
 491   5                                      else 
 492   5                                              j=3;//不亮
 493   5                              }
 494   4                              else
 495   4                              {//i亮红灯
 496   5                                      j=2;
 497   5                              }
 498   4                      }
 499   3                      else
 500   3                      {
 501   4                              j=2;//亮红灯
 502   4                      }       
 503   3                      }
 504   2                      else//车道      
 505   2                      {
 506   3                      if((k & CheDaoBuf[0])!=0)//选中的车道
 507   3                      {
 508   4                              if((CarChanelSta==STA_GREEN)||(CarChanelSta==STA_GS))
 509   4                              {
 510   5                                      if(GsFlag)//i亮绿灯
 511   5                                              j=0;
 512   5                                      else 
 513   5                                              j=3;//不亮
 514   5                              }
 515   4                              else if((CarChanelSta==STA_YELLOW))
 516   4                              {//i亮黄灯
 517   5                                      j=1;
 518   5                              }
 519   4                              else

⌨️ 快捷键说明

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