📄 setbid.bak
字号:
#include <absacc.h>
#include <reg51.h>
extern unsigned char receive_flag;
extern unsigned char xdata checkdata[512];
extern unsigned int check_temp;
unsigned char lin;
unsigned char add_transparence=0;
unsigned int add_transparence_valid=0;
unsigned int add_final_number;
unsigned char xdata data_final_number;
unsigned int xdata datanumber=0;
unsigned char xdata tempdata;
unsigned char xdata add_bit;
unsigned char xdata answer_data[310];
unsigned char xdata data_final[310];
extern unsigned char xdata RX_BUF[512];
extern unsigned int xdata head;
extern unsigned int xdata tail;
extern unsigned int re_flagaddr;
extern unsigned int xdata data_address;
extern unsigned char xdata checkdata[512];
extern unsigned short cal_crc(unsigned char *ptr,unsigned int len) ;
//发送数据到fpga
unsigned char tran_fpag(unsigned char flag)
{
unsigned int i;
unsigned char j;
for(i=0;i<6;i++){
re_flagaddr=0XA030+5*i;
flag=XBYTE[re_flagaddr];
if(flag==0x87){
XBYTE[re_flagaddr]=0x01;
XBYTE[0XA01F]=data_address>>8;
XBYTE[0XA020]=data_address;
break;
}
}
switch(flag){
case 0x94:if(checkdata[5]==0){
XBYTE[data_address]=0x94; // 标识
data_address++;if(data_address>0xa7f0)data_address=0xa080;
for(i=0;i<289;i++)XBYTE[data_address]=XBYTE[0X5000+i];
data_address++;if(data_address>0xa7f0)data_address=0xa080;
}else{
XBYTE[data_address]=0x94;
data_address++;if(data_address>0xa7f0)data_address=0xa080;
for(i=0;i<289;i++)XBYTE[data_address]=XBYTE[0X5121+i];
data_address++;if(data_address>0xa7f0)data_address=0xa080;
}
data_address--;
if(data_address<0xa080)data_address=0xa7f0;
XBYTE[0XA01F]=data_address>>8;
XBYTE[0XA020]=data_address;
break;
case 0x95: j=checkdata[5];
j=(j-1)*98;
XBYTE[data_address]=0x95; // 标识
data_address++;if(data_address>0xa7f0)data_address=0xa080;
for(i=0;i<98;i++){
XBYTE[data_address]=XBYTE[0X5242+i+j];
data_address++;if(data_address>0xa7f0)data_address=0xa080;
}
data_address--;
if(data_address<0xa080)data_address=0xa7f0;
XBYTE[0XA01F]=data_address>>8;
XBYTE[0XA020]=data_address;
break;
case 0x96: j=checkdata[5];
j=(j-1)*41;
XBYTE[data_address]=0x96; // 标识
data_address++;if(data_address>0xa7f0)data_address=0xa080;
for(i=0;i<41;i++){
XBYTE[data_address]=XBYTE[0X5e82+i+j];
data_address++;if(data_address>0xa7f0)data_address=0xa080;
}
data_address--;
if(data_address<0xa080)data_address=0xa7f0;
XBYTE[0XA01F]=data_address>>8;
XBYTE[0XA020]=data_address;
break;
case 0x97: break;
case 0x98:j=checkdata[5];
j=(j-1)*74;
XBYTE[data_address]=0x96; // 标识
data_address++;if(data_address>0xa7f0)data_address=0xa080;
for(i=0;i<41;i++){
XBYTE[data_address]=XBYTE[0X63a2+i+j];
data_address++;if(data_address>0xa7f0)data_address=0xa080;
}
data_address--;
if(data_address<0xa080)data_address=0xa7f0;
XBYTE[0XA01F]=data_address>>8;
XBYTE[0XA020]=data_address;
break;
case 0x99: XBYTE[data_address]=0x99; // 标识
data_address++;if(data_address>0xa7f0)data_address=0xa080;
for(i=0;i<60;i++){
XBYTE[data_address]=XBYTE[0X6ce2+i];
data_address++;if(data_address>0xa7f0)data_address=0xa080;
}
data_address--;
if(data_address<0xa080)data_address=0xa7f0;
XBYTE[0XA01F]=data_address>>8;
XBYTE[0XA020]=data_address;
break;
case 0x9a: break;
case 0x9b: break;
case 0x9c:break;
default:break;
}
return 0;
}
//透明性检验
void add_transparences()
{
switch(add_transparence){
case 0 :if(add_bit==1){
add_transparence=1;
add_transparence_valid=0;
}else{
add_transparence=0;
add_transparence_valid=0;
}break;
case 1 :if(add_bit==1){
add_transparence=2;
add_transparence_valid=0;
}else{
add_transparence=0;
add_transparence_valid=0;
}break;
case 2:if(add_bit==1){
add_transparence=3;
add_transparence_valid=0;
}else{
add_transparence=0;
add_transparence_valid=0;
}break;
case 3:if(add_bit==1){
add_transparence=4;
add_transparence_valid=0;
}else{
add_transparence=0;
add_transparence_valid=0;
}break;
case 4:if(add_bit==1){
add_transparence=5;
add_transparence_valid=0;
}else{
add_transparence=0;
add_transparence_valid=0;
}break;
case 5:if(add_bit==1){
add_transparence=0;
add_transparence_valid=1;
}else{
add_transparence=0;
add_transparence_valid=0;
}break;
// case 6:if(add_bit==1){
// add_transparence=0;
// add_transparence_valid=1;
// }else{
// add_transparence=0;
// add_transparence_valid=0;
// }break;
default:break;
}
}
//设置时间
set_time()
{
unsigned char *p;
unsigned short check_temp;
unsigned char i,j;
//设置时间后用
datanumber=0;
data_final_number=0;
tempdata=0;
XBYTE[0XC009]=checkdata[5]; //year
XBYTE[0XC008]=checkdata[6]; //month
XBYTE[0XC007]=checkdata[7]; //date
XBYTE[0XC004]=checkdata[8]; //hour
XBYTE[0XC002]=checkdata[9]; //min
XBYTE[0XC000]=checkdata[10]; //sec
XBYTE[0XC006]=checkdata[11]; //day
//应答
answer_data[0]=0x00;
answer_data[1]=0x43;
answer_data[2]=0x00;
answer_data[3]=0xc1;
answer_data[4]=0xd3;
answer_data[5]=0x00;
p=&answer_data[0];
check_temp=cal_crc(p,6);
answer_data[6]=(check_temp>>8); //crc
answer_data[7]=check_temp; //crc
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))data_final_number++;
if(data_final_number==8){
data_final[datanumber++]=tempdata;
data_final_number=0;
tempdata=0;
}
}
}
if( data_final_number!=0)data_final[datanumber++]=tempdata;
SBUF=0X7E;
while(TI==0);TI=0;
for(i=0;i<datanumber;i++)
{
SBUF=data_final[i];
while(TI==0);TI=0;
}
head=0;tail=0;
}
//设置相位
set_phase()
{
unsigned char *p;
unsigned short check_temp;
unsigned int i;
unsigned int j;
datanumber=0;
data_final_number=0;
//设置相位 0X5000
if(checkdata[5]==0){
for(i=0;i<289;i++)XBYTE[0X5000+i]=checkdata[5+i];
}else{
for(i=0;i<289;i++)XBYTE[0X5121+i]=checkdata[5+i];
}
//应答
answer_data[0]=0x00;
answer_data[1]=0x43;
answer_data[2]=0xcc;
answer_data[3]=0xc1;
answer_data[4]=0xd4;
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))data_final_number++;
if(data_final_number==8){
data_final[datanumber++]=tempdata;
data_final_number=0;
tempdata=0;
}
}
}
if(data_final_number!=0)data_final[datanumber++]=tempdata;
SBUF=0X7E;
while(!TI);TI=0;
for(i=0;i<datanumber;i++)
{
SBUF=data_final[i];
while(!TI);TI=0;
}EA=0;
head=0;tail=0;
EA=1;
//更改FPGA数据内容
tran_fpag(0x94);
}
//设置阶段表
set_stage()
{
unsigned char *p;
unsigned short check_temp;
unsigned int i;
unsigned int j;
datanumber=0;
data_final_number=0;
//设置阶段表
j=(checkdata[5]-1)*98;
for(i=0;i<98;i++)XBYTE[0X5242+i+j]=checkdata[5+i]; //一个阶段表写入
//应答
answer_data[0]=0X00;
answer_data[1]=0X43;
answer_data[2]=0XCC;
answer_data[3]=0XC1;
answer_data[4]=0XD5;
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))data_final_number++; ///////////
if(data_final_number==8){
data_final[datanumber++]=tempdata;
data_final_number=0;
tempdata=0;
}
//data_final_number++; /////////////////////////////////////
}
}
////////////////////////////////////////////////////////////
if(/*data_final_number!=8 &&*/data_final_number!=0)data_final[datanumber++]=tempdata;
SBUF=0X7E;
while(!TI);TI=0;
for(i=0;i<datanumber;i++)
{
SBUF=data_final[i];
while(!TI);TI=0;
}EA=0;
head=0;tail=0;
EA=1;
tran_fpag(0x95);
}
//设置当前方案
set_project()
{
unsigned char *p;
unsigned short check_temp;
unsigned int i;
unsigned int j;
data_final_number=0;
datanumber=0;
//设置当前方案
j=(checkdata[5]-1)*41;
for(i=0;i<41;i++)XBYTE[0X5e82+i+j]=checkdata[5+i]; //一个方案表写入
//应答
answer_data[0]=0x00;
answer_data[1]=0x43;
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();
tempdata=tempdata+(add_bit<<(7-data_final_number++));
if((add_transparence_valid==1) && (i!=7))data_final_number++;
if(data_final_number==8){
data_final[datanumber++]=tempdata;
data_final_number=0;
tempdata=0;
}
}
}
if(data_final_number!=0)data_final[datanumber++]=tempdata;
SBUF=0X7E;
while(!TI);TI=0;
for(i=0;i<datanumber;i++)
{
SBUF=data_final[i];
while(!TI);TI=0;
}EA=0;
head=0;tail=0;
EA=1;
tran_fpag(0x96);
}
//上位机直接控制
set_uppc()
{
}
//设置日计划
set_datesch()
{
unsigned char *p;
unsigned short check_temp;
unsigned int i;
unsigned int j;
data_final_number=0;
datanumber=0;
//设置
j=(checkdata[5]-1)*74;
for(i=0;i<74;i++)XBYTE[0X63a2+i+j]=checkdata[5+i]; //一个方案表写入
//应答
answer_data[0]=0x00;
answer_data[1]=0x43;
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))data_final_number++;
if(data_final_number==8){
data_final[datanumber++]=tempdata;
data_final_number=0;
tempdata=0;
}
}
}
if( data_final_number!=0)data_final[datanumber++]=tempdata;
SBUF=0X7E;
while(!TI);TI=0;
for(i=0;i<datanumber;i++)
{
SBUF=data_final[i];
while(!TI);TI=0;
}EA=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -