📄 setbid.c
字号:
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 + -