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

📄 second.lst

📁 最先进的信号机程序,经过很多重要场合测试通过
💻 LST
📖 第 1 页 / 共 5 页
字号:
 612   3                                         trans_volum();         //周期更迭时传送流量信息
 613   3                                         tran_psh();            //周期更迭时传送方案信息
 614   3                                         EA=1;
 615   3                                         }
 616   2          }
 617   1      
 618   1      
 619   1      
 620   1      }
 621          /*****************************************************************************************************/
 622          //  灯输出函数
 623          /*****************************************************************************************************/
 624          void lamp_out() using 1
 625          {
 626   1          uchar xdata i;
 627   1          uchar xdata left;
 628   1      
 629   1          greenl=0;
 630   1          greenh=0;
 631   1          yell=0;
 632   1          yelh=0;
 633   1          redl=0;
 634   1          redh=0;
 635   1      
 636   1          for(i=0;i<8;i++)
 637   1          {
 638   2              left=0x01;
 639   2              left=left<<i;
 640   2              switch(lamp_state[i])
 641   2              {
 642   3                 case  0x01:                      //绿灯
 643   3                            greenl=(greenl|left);
 644   3                            break;
 645   3                 case  0x02:                      //绿闪
 646   3                            if(ssecond)  greenl=(greenl|left);
 647   3                            else         greenl=(greenl&(~left));
 648   3                            break;
 649   3                 case  0x03:                      //黄灯
 650   3                            yell=(yell|left);
 651   3                            break;
 652   3                 case  0x04:                      //红灯
 653   3                            redl=(redl|left);
 654   3                            break;
 655   3                 case  0x05:                      //黄闪
 656   3                            if(ssecond)  yell=(yell|left);
 657   3                            else         yell=(yell&(~left));
 658   3                            break;
 659   3                 default:break;
 660   3              }
 661   2              switch(lamp_state[i+8])
 662   2              {
 663   3                 case  0x01:
 664   3                            greenh=(greenh|left);
C51 COMPILER V6.02  SECOND                                                                 08/02/2006 15:11:10 PAGE 12  

 665   3                            break;
 666   3                 case  0x02:
 667   3                            if(ssecond)  greenh=(greenh|left);
 668   3                            else         greenh=(greenh&(~left));
 669   3                            break;
 670   3                 case  0x03:
 671   3                            yelh=(yelh|left);
 672   3                            break;
 673   3                 case  0x04:
 674   3                            redh=(redh|left);
 675   3                            break;
 676   3                 case  0x05:
 677   3                            if(ssecond)  yelh=(yelh|left);
 678   3                            else         yelh=(yelh&(~left));
 679   3                            break;
 680   3                 default:break;
 681   3              }
 682   2      
 683   2          }
 684   1      
 685   1        //     XBYTE[0Xc103]=0x80;
 686   1        //     XBYTE[0Xc183]=0x80;
 687   1             XBYTE[0Xc100]=greenl;
 688   1             XBYTE[0Xc101]=yell;
 689   1             XBYTE[0Xc102]=redl;
 690   1             XBYTE[0Xc180]=greenh;
 691   1             XBYTE[0Xc181]=yelh;
 692   1             XBYTE[0Xc182]=redh;
 693   1      }
 694          /*****************************************************************************************************/
 695          //  装载状态函数
 696          /*****************************************************************************************************/
 697          void  make0x83()
 698          {
 699   1      
 700   1          led82[0] = now_day_planid;     //当前计划
 701   1          led82[1] = timeid;             //时段
 702   1          led82[2] = now_schemeid;       //当前方案
 703   1      
 704   1          led83[0] = now_step_schid/*+1*/;          //当前的阶段表号
 705   1          led83[1] = step_counter+1;                //当前阶段
 706   1      
 707   1          led83[4] = now_phase_status/256;
 708   1          led83[5] = now_phase_status%256;      //当前的相位状态
 709   1      
 710   1      
 711   1          led83[9] = inuse_phasen[step_counter]/256;
 712   1          led83[10] = inuse_phasen[step_counter]%256;    //下一阶段的放行相位
 713   1      
 714   1      
 715   1          led83[11] = now_step_uncount;               //当前阶段的倒计时
 716   1          led83[12] = machine_run_error;                //运行故障信息
 717   1          led83[13] = r_error1/256;
 718   1          led83[14] = r_error1%256;       /*驱而不亮的红灯组*/
 719   1          led83[15] = y_error1/256;
 720   1          led83[16] = y_error1%256;       /*驱而不亮的黄灯组*/
 721   1          led83[17] = g_error1/256;
 722   1          led83[18] = g_error1%256;       /*驱而不亮的绿灯组*/
 723   1      
 724   1          led83[19] = r_error2/256;
 725   1          led83[20] = r_error2%256;       /*不驱而亮的红灯组*/
 726   1          led83[21] = y_error2/256;
C51 COMPILER V6.02  SECOND                                                                 08/02/2006 15:11:10 PAGE 13  

 727   1          led83[22] = y_error2%256;       /*不驱而亮的黄灯组*/
 728   1          led83[23] = g_error2/256;
 729   1          led83[24] = g_error2%256;       /*不驱而亮的绿灯组*/
 730   1      
 731   1          led83[25] =  hpp/256;
 732   1          led83[26] =  hpp%256;
 733   1          led83[27] =  lpp/256;
 734   1          led83[28] =  lpp%256;           //线圈故障信息
 735   1      
 736   1      }
 737          
 738          
 739          /*****************************************************************************************************/
 740          //  半秒中断
 741          /*****************************************************************************************************/
 742          void secondint() interrupt 2 using 1
 743          {
 744   1          uchar  i;
 745   1          i = D12887C;
 746   1          FarContrlLed = !FarContrlLed;
 747   1          //WatchDog = !WatchDog;
 748   1          ssecond = !ssecond;
 749   1          if(ssecond)
 750   1          {
 751   2               force_flag=XBYTE[0X6d28];         /*读取强制标志*/
 752   2               force_number=XBYTE[0x6d29];       //强制相位号
 753   2               tran_count++;                     /*发送测试包的计数器*/
 754   2               start_counter++;
 755   2               if(start_counter>20)  start_counter=20;
 756   2               if(start_counter<=3)             /*开机黄闪*/
 757   2               {
 758   3                  for(i=0;i<16;i++)
 759   3                  {
 760   4                     lamp_state[i]=5;
 761   4                  }
 762   3               }
 763   2               else if((start_counter>3) && (start_counter<6))    /*开机全红*/
 764   2               {
 765   3                  for(i=0;i<16;i++)
 766   3                  {
 767   4                     lamp_state[i]=4;
 768   4                  }
 769   3               }
 770   2               else if(start_counter==6)
 771   2                  period_update=1;  /*开机黄闪全红后,更改周期更迭标志*/
 772   2               else if(start_counter>=7)
 773   2               {
 774   3      
 775   3                   remote_deal() ; //遥控处理函数
 776   3                   man_deal();      //手动控制处理程序
 777   3                   max_clear_time();               
 778   3                   search_color();       // key++;
 779   3                   make0x83();
 780   3      
 781   3               }
 782   2      
 783   2          }
 784   1        //强制解除操作
 785   1      // hand_control();       //手动控制
 786   1       if((now_schemeid==0x21)&&(start_counter>=3)){
 787   2           for(i=0;i<16;i++)
 788   2                  {
C51 COMPILER V6.02  SECOND                                                                 08/02/2006 15:11:10 PAGE 14  

 789   3                     lamp_state[i]=5;
 790   3                  }
 791   2                                                  }
 792   1      
 793   1       re_ye_allred();        //遥控黄闪,四面红
 794   1       lamp_out();            //灯色输出
 795   1       IP=0X10;
 796   1      }
 797          
C51 COMPILER V6.02  SECOND                                                                 08/02/2006 15:11:10 PAGE 15  

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


timeid . . . . . . . . . . . . . . . .  EXTERN   XDATA  U_CHAR   -----  1
force_number . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0000H  1
greenl . . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0001H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
hand_counter . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0002H  1
sensor_counter . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0003H  1
T0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
AC . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D6H  1
T1 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B5H  1
force_coloc. . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0004H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
clear_flag . . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0005H  1
remote_deal. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
inuse_phasen . . . . . . . . . . . . .  EXTERN   XDATA  ARRAY    -----  64
baseaddr_now_schemesch . . . . . . . .  EXTERN   XDATA  U_INT    -----  2
forceacting. . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0006H  1
force_flag . . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0007H  1
clear_state. . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0008H  1

⌨️ 快捷键说明

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