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

📄 setbid.lst

📁 ASC 信号机控制程序,国内最先进的信号机控制程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 530   1      
 531   1        //接收成功后应答
 532   1        answer_data[0]=h_address;
 533   1        answer_data[1]=l_address;
 534   1        answer_data[2]=0xcc;
 535   1        answer_data[3]=0xc1;
 536   1        answer_data[4]=0xdf;
 537   1        p=&answer_data[0];
 538   1        check_temp=cal_crc(p,5);
 539   1        answer_data[5]=(check_temp>>8);    //crc
 540   1        answer_data[6]=check_temp;         //crc
 541   1        answer_data[7]=0x7e;
 542   1      
 543   1        for(i=0;i<8;i++){
 544   2              for(j=0;j<8;j++){
 545   3                 add_bit=(answer_data[i]>>(7-j))%2;
 546   3                 add_transparences();
 547   3                // if((add_transparence_valid==1) && (i!=17))data_final_number++;
 548   3                 tempdata=tempdata+(add_bit<<(7-data_final_number++));
 549   3                 if((add_transparence_valid==1) && (i!=7)){ ///////////////////////////////////
 550   4                         if(data_final_number==8)beginbit=1;
 551   4                                            else data_final_number++;
C51 COMPILER V6.02  SETBID                                                                 09/28/2006 21:46:50 PAGE 10  

 552   4                                                }      ///////////////////////////////////
 553   3                 if(data_final_number>=8){             /////////////////////////////////
 554   4                     if(beginbit==1){                  ////////////////////
 555   5                                data_final_number=1;   ////////////////////////
 556   5                                beginbit=0;            ////////////////////
 557   5                                     }else{
 558   5                                data_final_number=0;
 559   5                                           }
 560   4                       data_final[datanumber++]=tempdata; 	  /////////////////////
 561   4      	        tempdata=0;
 562   4                                          }
 563   3                               }
 564   2                          }
 565   1              if( data_final_number!=0)data_final[datanumber++]=tempdata;
 566   1              EA=0;
 567   1              SBUF=0X7E;
 568   1              while(!TI);TI=0;
 569   1      	for(i=0;i<datanumber;i++)
 570   1      	{
 571   2      	    SBUF=data_final[i];
 572   2                  while(!TI);TI=0;
 573   2      	}
 574   1              EA=1;
 575   1              tran_fpag(0x9f,9);
 576   1      }
 577          //设置日计划
 578          set_datesch()
 579          {
 580   1        unsigned char *p;
 581   1        unsigned short check_temp;
 582   1        unsigned int i,k;
 583   1        unsigned int j;
 584   1        unsigned char beginbit=0;
 585   1        data_final_number=0;
 586   1        datanumber=0;
 587   1        //设置
 588   1        j=(checkdata[5]-1)*74;
 589   1        for(i=0;i<74;i++){
 590   2                          XBYTE[0X63a2+i+j]=checkdata[5+i];  //一个方案表写入
 591   2                          k=eeprom_addr;
 592   2                          k=k+0x13a2+i+j;
 593   2                          XBYTE[k]=checkdata[5+i];
 594   2                          k=0;
 595   2                          do{k++;WatchDog = !WatchDog;}while(k<800);
 596   2                          }
 597   1      
 598   1        //应答
 599   1        answer_data[0]=h_address;
 600   1        answer_data[1]=l_address;
 601   1        answer_data[2]=0xcc;
 602   1        answer_data[3]=0xc1;
 603   1        answer_data[4]=0xd8;
 604   1        p=&answer_data[0];
 605   1        check_temp=cal_crc(p,5);
 606   1        answer_data[5]=(check_temp>>8);    //crc
 607   1        answer_data[6]=check_temp;         //crc
 608   1        answer_data[7]=0x7e;
 609   1        for(i=0;i<8;i++){
 610   2              for(j=0;j<8;j++){
 611   3                 add_bit=(answer_data[i]>>(7-j))%2;
 612   3                 add_transparences();
 613   3                 tempdata=tempdata+(add_bit<<(7-data_final_number++));
C51 COMPILER V6.02  SETBID                                                                 09/28/2006 21:46:50 PAGE 11  

 614   3                 if((add_transparence_valid==1) && (i!=7)){ ///////////////////////////////////
 615   4                         if(data_final_number==8)beginbit=1;
 616   4                                            else data_final_number++;
 617   4                                                }      ///////////////////////////////////
 618   3                 if(data_final_number>=8){             /////////////////////////////////
 619   4                     if(beginbit==1){                  ////////////////////
 620   5                                data_final_number=1;   ////////////////////////
 621   5                                beginbit=0;            ////////////////////
 622   5                                     }else{
 623   5                                data_final_number=0;
 624   5                                           }
 625   4                       data_final[datanumber++]=tempdata; 	  /////////////////////
 626   4      	        tempdata=0;
 627   4                                          }
 628   3                               }
 629   2                          }
 630   1              if( data_final_number!=0)data_final[datanumber++]=tempdata;
 631   1              EA=0;
 632   1              SBUF=0X7E;
 633   1              while(!TI);TI=0;
 634   1      	for(i=0;i<datanumber;i++)
 635   1      	{
 636   2      	    SBUF=data_final[i];
 637   2                  while(!TI);TI=0;
 638   2      	}
 639   1              EA=1;
 640   1               tran_fpag(0x98,75);
 641   1      }
 642          //设置日计划调度表
 643          set_datadis()
 644          {
 645   1        unsigned char *p;
 646   1        unsigned short check_temp;
 647   1        unsigned int i,k;
 648   1        unsigned int j;
 649   1        unsigned char beginbit=0;
 650   1        data_final_number=0;
 651   1        datanumber=0;
 652   1        //设置日计划调度表
 653   1      
 654   1        for(i=0;i<60;i++){
 655   2                          XBYTE[0X6ce2+i]=checkdata[5+i];  //一个日计划调度表写入
 656   2                          k=eeprom_addr;
 657   2                          k=k+0x1ce2+i;
 658   2                          XBYTE[k]=checkdata[5+i];
 659   2                          k=0;
 660   2                          do{k++;WatchDog = !WatchDog;}while(k<800);
 661   2                          }
 662   1      
 663   1        //应答
 664   1        answer_data[0]=h_address;
 665   1        answer_data[1]=l_address;
 666   1        answer_data[2]=0Xcc;
 667   1        answer_data[3]=0XC1;
 668   1        answer_data[4]=0XD9;
 669   1        p=&answer_data[0];
 670   1        check_temp=cal_crc(p,5);
 671   1        answer_data[5]=(check_temp>>8);    //crc
 672   1        answer_data[6]=check_temp;         //crc
 673   1        answer_data[7]=0x7e;
 674   1      
 675   1        for(i=0;i<8;i++){
C51 COMPILER V6.02  SETBID                                                                 09/28/2006 21:46:50 PAGE 12  

 676   2              for(j=0;j<8;j++){
 677   3                 add_bit=(answer_data[i]>>(7-j))%2;
 678   3                 add_transparences();
 679   3                 tempdata=tempdata+(add_bit<<(7-data_final_number++));
 680   3                 if((add_transparence_valid==1) && (i!=7)){ ///////////////////////////////////
 681   4                         if(data_final_number==8)beginbit=1;
 682   4                                            else data_final_number++;
 683   4                                                }      ///////////////////////////////////
 684   3                 if(data_final_number>=8){             /////////////////////////////////
 685   4                     if(beginbit==1){                  ////////////////////
 686   5                                data_final_number=1;   ////////////////////////
 687   5                                beginbit=0;            ////////////////////
 688   5                                     }else{
 689   5                                data_final_number=0;
 690   5                                	data_final[datanumber++]=tempdata;
 691   5      				tempdata=0;
 692   5                                          }
 693   4                                          }
 694   3                               }
 695   2                          }
 696   1              if( data_final_number!=0)data_final[datanumber++]=tempdata;
 697   1              EA=0;
 698   1              SBUF=0X7E;
 699   1              while(!TI);TI=0;
 700   1      	for(i=0;i<datanumber;i++)
 701   1      	{
 702   2      	    SBUF=data_final[i];
 703   2                  while(!TI);TI=0;
 704   2      	}
 705   1              EA=1;
 706   1               tran_fpag(0x99,61);
 707   1      }
 708          //设置当前控制方案
 709          set_nowsch()
 710          {
 711   1      }
 712          //设置统计周期
 713          set_caperiod()
 714          {
 715   1      }
 716          //查询信号机标志
 717          bid_flag()
 718          {
 719   1        unsigned char *p=0;
 720   1        unsigned short check_temp;
 721   1        unsigned char i;
 722   1        unsigned char j;
 723   1        unsigned char beginbit=0;
 724   1        data_final_number=0;
 725   1        datanumber=0;
 726   1      
 727   1        answer_data[0]=h_address;
 728   1        answer_data[1]=l_address;
 729   1        answer_data[2]=0xcc;
 730   1        answer_data[3]=0xc1;
 731   1        answer_data[4]=0xf1;
 732   1      
 733   1        answer_data[5]=0x10;
 734   1        answer_data[6]=0x20;  //支持的最大阶段表数
 735   1        answer_data[7]=0x20;  //阶段表中最大阶段数
 736   1        answer_data[8]=0x20;  //最大控制方案数
 737   1        answer_data[9]=0x20;  //最大日计划数
C51 COMPILER V6.02  SETBID                                                                 09/28/2006 21:46:50 PAGE 13  

 738   1        answer_data[10]=0x18;  //日计划中最大时段数
 739   1        answer_data[11]=XBYTE[0X72e2];  //开机时间  小时
 740   1        answer_data[12]=XBYTE[0X72e3];  //开机时间  分钟
 741   1        answer_data[13]=XBYTE[0X72e4];  //关机时间  小时
 742   1        answer_data[14]=XBYTE[0X72e5];  //关机时间  分钟
 743   1        answer_data[15]=XBYTE[0X72e6];  //关机后状态
 744   1        answer_data[16]=XBYTE[0X8000];  //路口编号高地址
 745   1        answer_data[17]=XBYTE[0X8001];  //路口编号低位地址
 746   1      
 747   1        //应答
 748   1       // p=&answer_data[0];
 749   1        check_temp=cal_crc(&answer_data[0],18);
 750   1        answer_data[18]=(check_temp>>8);    //crc
 751   1        answer_data[19]=check_temp;         //crc
 752   1        answer_data[20]=0x7e;
 753   1        tempdata=0;
 754   1       	for(i=0;i<21;i++)
 755   1      	{
 756   2      		for(j=0;j<8;j++)
 757   2      		{
 758   3      			add_bit=(answer_data[i]>>(7-j))%2;
 759   3      			add_transparences();
 760   3      			tempdata=tempdata+(add_bit<<(7-data_final_number++));
 761   3      			if((add_transparence_valid==1) && (i!=20))
 762   3      			{
 763   4      				if(data_final_number==8)beginbit=1;
 764   4      				else data_final_number++;
 765   4      			}
 766   3      			if(data_final_number>=8)
 767   3      			{
 768   4      				if(beginbit==1){
 769   5      				  data_final_number=1;
 770   5                                             beginbit=0;
 771   5      			           }
 772   4      			    else
 773   4                                          data_final_number=0;
 774   4      				data_final[datanumber++]=tempdata;
 775   4      				tempdata=0;
 776   4      			}
 777   3      		}
 778   2      	}
 779   1      	if(data_final_number!=0)
 780   1      	{
 781   2      		data_final[datanumber++]=tempdata;
 782   2      	}
 783   1              EA=0;
 784   1              SBUF=0X7E;
 785   1              while(!TI);TI=0;
 786   1      	for(i=0;i<datanumber;i++)
 787   1      	{
 788   2      	    SBUF=data_final[i];
 789   2                  while(!TI);TI=0;
 790   2      	}
 791   1              EA=1;
 792   1      }
 793          //查询信号机特征参数
 794          bid_mark()
 795          {
 796   1        unsigned char *p;
 797   1        unsigned short check_temp;
 798   1        unsigned char i;

⌨️ 快捷键说明

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