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

📄 setbid.c

📁 ASC 信号机控制程序,国内最先进的信号机控制程序
💻 C
📖 第 1 页 / 共 3 页
字号:
  for(i=0;i<41;i++){
      XBYTE[0X5e82+i+j]=checkdata[5+i];  //一个方案表写入
      k=eeprom_addr;
      k=k+0xe82+i+j;
      XBYTE[k]=checkdata[5+i];
      k=0;
      do{k++;WatchDog = !WatchDog;}while(k<800);
      }

  //应答
  answer_data[0]=h_address;
  answer_data[1]=l_address;
  answer_data[2]=0xcc;
  answer_data[3]=0xc1;
  answer_data[4]=0xd6;
  p=&answer_data[0];
  check_temp=cal_crc(p,5);
  answer_data[5]=(check_temp>>8);    //crc
  answer_data[6]=check_temp;         //crc
  answer_data[7]=0x7e;

  for(i=0;i<8;i++){
        for(j=0;j<8;j++){
           add_bit=(answer_data[i]>>(7-j))%2;
           add_transparences();
          // if((add_transparence_valid==1) && (i!=17))data_final_number++;
           tempdata=tempdata+(add_bit<<(7-data_final_number++));
           if((add_transparence_valid==1) && (i!=7)){ ///////////////////////////////////
                   if(data_final_number==8)beginbit=1;
                                      else data_final_number++;
                                          }      ///////////////////////////////////
           if(data_final_number>=8){             /////////////////////////////////
               if(beginbit==1){                  ////////////////////
                          data_final_number=1;   ////////////////////////
                          beginbit=0;            ////////////////////
                               }else{
                          data_final_number=0;
                                     }
                 data_final[datanumber++]=tempdata; 	  /////////////////////
	        tempdata=0;
                                    }
                         }
                    }
        if( data_final_number!=0)data_final[datanumber++]=tempdata;
        EA=0;
        SBUF=0X7E;
        while(!TI);TI=0;
	for(i=0;i<datanumber;i++)
	{
	    SBUF=data_final[i];
            while(!TI);TI=0;
	}
        EA=1;
        tran_fpag(0x96,42);
}
//上位机直接控制
set_uppc()
{

}
set_remote()
{
    unsigned char *p;
  unsigned short check_temp;

  unsigned int i,k;
  unsigned int j;
  unsigned char beginbit=0;
  data_final_number=0;
  datanumber=0;
  //遥控数据包保存到NVRAM
  for(i=0;i<8;i++){
                   XBYTE[0X6D20+i]=checkdata[5+i];  //一个方案表写入
                   k=eeprom_addr;
                   k=k+0x1d20+i;
                   XBYTE[k]=checkdata[5+i];
                   k=0;
                   do{k++;WatchDog = !WatchDog;}while(k<800);
                   }

  //接收成功后应答
  answer_data[0]=h_address;
  answer_data[1]=l_address;
  answer_data[2]=0xcc;
  answer_data[3]=0xc1;
  answer_data[4]=0xdf;
  p=&answer_data[0];
  check_temp=cal_crc(p,5);
  answer_data[5]=(check_temp>>8);    //crc
  answer_data[6]=check_temp;         //crc
  answer_data[7]=0x7e;

  for(i=0;i<8;i++){
        for(j=0;j<8;j++){
           add_bit=(answer_data[i]>>(7-j))%2;
           add_transparences();
          // if((add_transparence_valid==1) && (i!=17))data_final_number++;
           tempdata=tempdata+(add_bit<<(7-data_final_number++));
           if((add_transparence_valid==1) && (i!=7)){ ///////////////////////////////////
                   if(data_final_number==8)beginbit=1;
                                      else data_final_number++;
                                          }      ///////////////////////////////////
           if(data_final_number>=8){             /////////////////////////////////
               if(beginbit==1){                  ////////////////////
                          data_final_number=1;   ////////////////////////
                          beginbit=0;            ////////////////////
                               }else{
                          data_final_number=0;
                                     }
                 data_final[datanumber++]=tempdata; 	  /////////////////////
	        tempdata=0;
                                    }
                         }
                    }
        if( data_final_number!=0)data_final[datanumber++]=tempdata;
        EA=0;
        SBUF=0X7E;
        while(!TI);TI=0;
	for(i=0;i<datanumber;i++)
	{
	    SBUF=data_final[i];
            while(!TI);TI=0;
	}
        EA=1;
        tran_fpag(0x9f,9);
}
//设置日计划
set_datesch()
{
  unsigned char *p;
  unsigned short check_temp;
  unsigned int i,k;
  unsigned int j;
  unsigned char beginbit=0;
  data_final_number=0;
  datanumber=0;
  //设置
  j=(checkdata[5]-1)*74;
  for(i=0;i<74;i++){
                    XBYTE[0X63a2+i+j]=checkdata[5+i];  //一个方案表写入
                    k=eeprom_addr;
                    k=k+0x13a2+i+j;
                    XBYTE[k]=checkdata[5+i];
                    k=0;
                    do{k++;WatchDog = !WatchDog;}while(k<800);
                    }

  //应答
  answer_data[0]=h_address;
  answer_data[1]=l_address;
  answer_data[2]=0xcc;
  answer_data[3]=0xc1;
  answer_data[4]=0xd8;
  p=&answer_data[0];
  check_temp=cal_crc(p,5);
  answer_data[5]=(check_temp>>8);    //crc
  answer_data[6]=check_temp;         //crc
  answer_data[7]=0x7e;
  for(i=0;i<8;i++){
        for(j=0;j<8;j++){
           add_bit=(answer_data[i]>>(7-j))%2;
           add_transparences();
           tempdata=tempdata+(add_bit<<(7-data_final_number++));
           if((add_transparence_valid==1) && (i!=7)){ ///////////////////////////////////
                   if(data_final_number==8)beginbit=1;
                                      else data_final_number++;
                                          }      ///////////////////////////////////
           if(data_final_number>=8){             /////////////////////////////////
               if(beginbit==1){                  ////////////////////
                          data_final_number=1;   ////////////////////////
                          beginbit=0;            ////////////////////
                               }else{
                          data_final_number=0;
                                     }
                 data_final[datanumber++]=tempdata; 	  /////////////////////
	        tempdata=0;
                                    }
                         }
                    }
        if( data_final_number!=0)data_final[datanumber++]=tempdata;
        EA=0;
        SBUF=0X7E;
        while(!TI);TI=0;
	for(i=0;i<datanumber;i++)
	{
	    SBUF=data_final[i];
            while(!TI);TI=0;
	}
        EA=1;
         tran_fpag(0x98,75);
}
//设置日计划调度表
set_datadis()
{
  unsigned char *p;
  unsigned short check_temp;
  unsigned int i,k;
  unsigned int j;
  unsigned char beginbit=0;
  data_final_number=0;
  datanumber=0;
  //设置日计划调度表

  for(i=0;i<60;i++){
                    XBYTE[0X6ce2+i]=checkdata[5+i];  //一个日计划调度表写入
                    k=eeprom_addr;
                    k=k+0x1ce2+i;
                    XBYTE[k]=checkdata[5+i];
                    k=0;
                    do{k++;WatchDog = !WatchDog;}while(k<800);
                    }

  //应答
  answer_data[0]=h_address;
  answer_data[1]=l_address;
  answer_data[2]=0Xcc;
  answer_data[3]=0XC1;
  answer_data[4]=0XD9;
  p=&answer_data[0];
  check_temp=cal_crc(p,5);
  answer_data[5]=(check_temp>>8);    //crc
  answer_data[6]=check_temp;         //crc
  answer_data[7]=0x7e;

  for(i=0;i<8;i++){
        for(j=0;j<8;j++){
           add_bit=(answer_data[i]>>(7-j))%2;
           add_transparences();
           tempdata=tempdata+(add_bit<<(7-data_final_number++));
           if((add_transparence_valid==1) && (i!=7)){ ///////////////////////////////////
                   if(data_final_number==8)beginbit=1;
                                      else data_final_number++;
                                          }      ///////////////////////////////////
           if(data_final_number>=8){             /////////////////////////////////
               if(beginbit==1){                  ////////////////////
                          data_final_number=1;   ////////////////////////
                          beginbit=0;            ////////////////////
                               }else{
                          data_final_number=0;
                          	data_final[datanumber++]=tempdata;
				tempdata=0;
                                    }
                                    }
                         }
                    }
        if( data_final_number!=0)data_final[datanumber++]=tempdata;
        EA=0;
        SBUF=0X7E;
        while(!TI);TI=0;
	for(i=0;i<datanumber;i++)
	{
	    SBUF=data_final[i];
            while(!TI);TI=0;
	}
        EA=1;
         tran_fpag(0x99,61);
}
//设置当前控制方案
set_nowsch()
{
}
//设置统计周期
set_caperiod()
{
}
//查询信号机标志
bid_flag()
{
  unsigned char *p=0;
  unsigned short check_temp;
  unsigned char i;
  unsigned char j;
  unsigned char beginbit=0;
  data_final_number=0;
  datanumber=0;

  answer_data[0]=h_address;
  answer_data[1]=l_address;
  answer_data[2]=0xcc;
  answer_data[3]=0xc1;
  answer_data[4]=0xf1;

  answer_data[5]=0x10;
  answer_data[6]=0x20;  //支持的最大阶段表数
  answer_data[7]=0x20;  //阶段表中最大阶段数
  answer_data[8]=0x20;  //最大控制方案数
  answer_data[9]=0x20;  //最大日计划数
  answer_data[10]=0x18;  //日计划中最大时段数
  answer_data[11]=XBYTE[0X72e2];  //开机时间  小时
  answer_data[12]=XBYTE[0X72e3];  //开机时间  分钟
  answer_data[13]=XBYTE[0X72e4];  //关机时间  小时
  answer_data[14]=XBYTE[0X72e5];  //关机时间  分钟
  answer_data[15]=XBYTE[0X72e6];  //关机后状态
  answer_data[16]=XBYTE[0X8000];  //路口编号高地址
  answer_data[17]=XBYTE[0X8001];  //路口编号低位地址

  //应答
 // p=&answer_data[0];
  check_temp=cal_crc(&answer_data[0],18);
  answer_data[18]=(check_temp>>8);    //crc
  answer_data[19]=check_temp;         //crc
  answer_data[20]=0x7e;
  tempdata=0;
 	for(i=0;i<21;i++)
	{
		for(j=0;j<8;j++)
		{
			add_bit=(answer_data[i]>>(7-j))%2;
			add_transparences();
			tempdata=tempdata+(add_bit<<(7-data_final_number++));
			if((add_transparence_valid==1) && (i!=20))
			{
				if(data_final_number==8)beginbit=1;
				else data_final_number++;
			}
			if(data_final_number>=8)
			{
				if(beginbit==1){
				  data_final_number=1;
                                       beginbit=0;
			           }
			    else
                                    data_final_number=0;
				data_final[datanumber++]=tempdata;
				tempdata=0;
			}
		}
	}
	if(data_final_number!=0)
	{
		data_final[datanumber++]=tempdata;
	}
        EA=0;
        SBUF=0X7E;
        while(!TI);TI=0;
	for(i=0;i<datanumber;i++)
	{
	    SBUF=data_final[i];
            while(!TI);TI=0;
	}
        EA=1;
}
//查询信号机特征参数
bid_mark()
{
  unsigned char *p;
  unsigned short check_temp;
  unsigned char i;
  unsigned char j;
  unsigned char beginbit=0;
  data_final_number=0;
  datanumber=0;
  //设置时间后用
  answer_data[0]=h_address;
  answer_data[1]=l_address;
  answer_data[2]=0xcc;
  answer_data[3]=0xc1;
  answer_data[4]=0x92;
  answer_data[5]=0x20;  //支持的最大阶段表数
  answer_data[6]=0x20;  //阶段表中最大阶段数
  answer_data[7]=0x20;  //最大控制方案数
  answer_data[8]=0x20;  //最大日计划数
  answer_data[9]=0x16;  //日计划中最大时段数
  answer_data[10]=XBYTE[0X72e2];  //开机时间  小时
  answer_data[11]=XBYTE[0X72e3];  //开机时间  分钟
  answer_data[12]=XBYTE[0X72e4];  //关机时间  小时
  answer_data[13]=XBYTE[0X72e5];  //关机时间  分钟
  answer_data[14]=XBYTE[0X72e6];  //关机后状态
  answer_data[15]=XBYTE[0X8000];  //路口编号高地址
  answer_data[16]=XBYTE[0X8001];  //路口编号低位地址

  //应答
  p=&answer_data[0];
  check_temp=cal_crc(p,17);
  answer_data[17]=(check_temp>>8);    //crc
  answer_data[18]=check_temp;         //crc
  answer_data[19]=0x7e;
  tempdata=0;
  for(i=0;i<20;i++){
        for(j=0;j<8;j++){
           add_bit=(answer_data[i]>>(7-j))%2;
           add_transparences();
           tempdata=tempdata+(add_bit<<(7-data_final_number++));
           if((add_transparence_valid==1) && (i!=19)){ ///////////////////////////////////
                   if(data_final_number==8)beginbit=1;
                                      else data_final_number++;
                                          }      ///////////////////////////////////
           if(data_final_number>=8){             /////////////////////////////////
               if(beginbit==1){                  ////////////////////
                          data_final_number=1;   ////////////////////////
                          beginbit=0;            ////////////////////
                               }else{
                          data_final_number=0;
                                     }
                 data_final[datanumber++]=tempdata; 	  /////////////////////
	        tempdata=0;
                                    }
                         }
                    }
        if( data_final_number!=0)data_final[datanumber++]=tempdata;
        EA=0;
        SBUF=0X7E;
        while(!TI);TI=0;
	for(i=0;i<datanumber;i++)
	{
	    SBUF=data_final[i];
            while(!TI);TI=0;
	}
        EA=1;

}
//查询时间
bid_time()
{
  unsigned char *p;
  unsigned short check_temp;
  unsigned char i;
  unsigned char j;
  unsigned char beginbit=0;
  data_final_number=0;
  datanumber=0;
  //设置时间后用
  answer_data[0]=h_address;
  answer_data[1]=l_address;
  answer_data[2]=0xcc;
  answer_data[3]=0xc1;
  answer_data[4]=0xc3;
  answer_data[5]=XBYTE[0XC009];  //year
  answer_data[6]=XBYTE[0XC008];  //month
  answer_data[7]=XBYTE[0XC007];  //date
  answer_data[8]=XBYTE[0XC004];  //hour
  answer_data[9]=XBYTE[0XC002];  //min
  answer_data[10]=XBYTE[0XC000];  //sec
  answer_data[11]=XBYTE[0XC006];  //day
  //应答
  p=&answer_data[0];
  check_temp=cal_crc(p,12);
  answer_data[12]=(check_temp>>8);    //crc
  answer_data[13]=check_temp;         //crc
  answer_data[14]=0x7e;
  tempdata=0;
  for(i=0;i<15;i++){
        for(j=0;j<8;j++){
           add_bit=(answer_data[i]>>(7-j))%2;
           add_transparences();
           tempdata=tempdata+(add_bit<<(7-data_final_number++));
           if((add_transparence_valid==1) && (i!=14)){ ///////////////////////////////////
                   if(data_final_number==8)beginbit=1;
                                      else data_final_number++;
                                          }      ///////////////////////////////////

⌨️ 快捷键说明

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