📄 smallfunction.lst
字号:
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 + -