📄 lcddram.c
字号:
i++;
do{}while(busy==0);XBYTE[0XC41a+i]=XBYTE[0X8020];
i++;
do{}while(busy==0);XBYTE[0XC41a+i]=XBYTE[0X8021];
do{}while(busy==0);XBYTE[0XC408]=0;
break;
case 0x0d:do{}while(busy==0);XBYTE[0XC410]=0xcf; //遥控阶段对应表
do{}while(busy==0);XBYTE[0XC411]=0x0d;
for(i=0;i<8;i++){
do{}while(busy==0);XBYTE[0XC412+i]=XBYTE[0X6d20+i];
}
do{}while(busy==0);XBYTE[0XC408]=0;
break;
case 0x03:num=XBYTE[0XC40c]*256+XBYTE[0XC40d]; //N
addr=XBYTE[0X3ea7]*256+XBYTE[0X3ea8]; //故障信息的结束地址
if(addr==0x3000)addr=0x3ea6;
addr=addr-15*num;
if(addr<0x3000)addr=0x3ea6-0x3000+addr;
do{}while(busy==0);XBYTE[0XC410]=0xcf; //故障查询 8F 03 N
do{}while(busy==0);XBYTE[0XC411]=0x03;
for(i=0;i<15;i++){
do{}while(busy==0);XBYTE[0XC412+i]=XBYTE[addr+i];
}
do{}while(busy==0);XBYTE[0XC408]=0;
break;
default:break;
}
break;
default:break;
}
// EA=1;
}
//设置
do{}while(busy==0);flag=XBYTE[0XC409];
// do{}while(busy==0);fu=XBYTE[0XC40a];
do{}while(busy==0);id=XBYTE[0XC40b];
do{}while(busy==0);idcode=XBYTE[0XC40c];
if(flag==1){
// EA=0;
switch(id){
case 0x90: //do{}while(busy==0);XBYTE[0XC410]=0XC0;
XBYTE[0X8002]=XBYTE[0XC410];
XBYTE[0X8003]=XBYTE[0XC411];
XBYTE[0X8004]=XBYTE[0XC412];
XBYTE[0X8005]=XBYTE[0XC413];
XBYTE[0X8006]=XBYTE[0XC414];
XBYTE[0X8007]=XBYTE[0XC415];
XBYTE[0X8008]=XBYTE[0XC416];
XBYTE[0XC409]=0;
break;
case 0x92:
XBYTE[0XC410]=0x20; //最大输出通道数
XBYTE[0XC411]=0X20; //支持阶段表数
XBYTE[0XC412]=0X20; //一个阶段表支持的最大阶段数
XBYTE[0XC413]=0X20; //最大控制方案数
XBYTE[0XC414]=0X20; //最大日计划数
XBYTE[0XC415]=0X18; //一个日计划支持的最大时段
XBYTE[0X72E2]=XBYTE[0XC416]; //开机时间小时
XBYTE[0X72E3]=XBYTE[0XC417]; //开机时间分钟
XBYTE[0X72E4]=XBYTE[0XC418]; //关机时间小时
XBYTE[0X72E5]=XBYTE[0XC419]; //关机时间分钟
XBYTE[0X72E6]=XBYTE[0XC41a]; //关机后状态
XBYTE[0X8000]=XBYTE[0XC41b];
XBYTE[0X8001]=XBYTE[0XC41c];
XBYTE[0XC409]=0;
break;
case 0x93: //设置系统时间
XBYTE[0XC009]=XBYTE[0XC420]; //year
XBYTE[0XC008]=XBYTE[0XC421]; //month
XBYTE[0XC007]=XBYTE[0XC422]; //date
XBYTE[0XC004]=XBYTE[0XC423]; //hour
XBYTE[0XC002]=XBYTE[0XC424]; //min
XBYTE[0XC000]=XBYTE[0XC425]; //sec
XBYTE[0XC006]=XBYTE[0XC426]; //day
XBYTE[0XC409]=0;
break;
case 0x94:if(idcode==0){ //设置相位信息
EA=0;
j=XBYTE[0XC40D];
j=(j-1)*18;
for(i=0;i<18;i++)ch[i]=XBYTE[0XC420+i];
for(i=0;i<18;i++){
// do{}while(busy==0);
addr=0x5001+i+j;
XBYTE[addr]=ch[i];
k=eeprom_addr;
k=k+i+j+1;
XBYTE[k]=ch[i];
k=0;
do{k++; WatchDog = !WatchDog;}while(k<800);
}
EA=1 ; }else{ EA=0;
j=XBYTE[0XC40D];
j=(j-1)*18;
if(XBYTE[0XC412]==3)XBYTE[0XC413]=4; //相位属性
for(i=0;i<18;i++){
// tt=0x5122+i+j;
// ttd=0XC410+i;
// do{}while(busy==0);
XBYTE[0x5122+i+j]=XBYTE[0XC420+i];
k=eeprom_addr;
k=k+i+j+0x122;
XBYTE[k]=XBYTE[0XC420+i];
k=0;
do{k++; WatchDog = !WatchDog;}while(k<800); //
}
EA=1; }
//do{}while(busy==0);
XBYTE[0XC409]=0;
//
if(idcode==0){
cpu_fpga_set(0x94,0x5001,289);
}else {
cpu_fpga_set(0x94,0x5122,289);
}
break;
case 0x95: idcode=XBYTE[0XC410];
j=(idcode-1)*98; //设置阶段表
EA=0;
for(i=0;i<98;i++)ch[i]=XBYTE[0XC410+i];
for(i=0;i<98;i++){
addr=0x5242+i+j;
if(i==4){
XBYTE[addr]=ch[i]-1;
}else{
XBYTE[addr]=ch[i];
}
k=eeprom_addr;
k=k+i+j+0x242;
XBYTE[k]=ch[i];
k=0;
do{k++; WatchDog = !WatchDog;}while(k<800);
}
// do{}while(busy==0);
EA=1;
XBYTE[0XC409]=0;
cpu_fpga_set(0x95,0x5242+j,98); //发送到fpga
break;
case 0x96:j=(idcode-1)*41; //设置控制方案
EA=0;
for(i=0;i<41;i++){
XBYTE[0x5e82+i+j]=XBYTE[0XC410+i];
k=eeprom_addr;
k=k+i+j+0xe82;
XBYTE[k]=XBYTE[0x5e82+i+j];
k=0;
do{k++;}while(k<800);
}
// do{}while(busy==0);
EA=1;
XBYTE[0XC409]=0;
cpu_fpga_set(0x96,0x5e82+j,41); //发送到fpga
break;
// case 0x97:break;
case 0x98:j=(idcode-1)*74; //设置计划
EA=0;
for(i=0;i<74;i++){
// do{}while(busy==0);
XBYTE[0x63A2+i+j]=XBYTE[0XC410+i];
k=eeprom_addr;
k=k+i+j+0x13a2;
XBYTE[k]=XBYTE[0x63A2+i+j];
k=0;
do{k++; WatchDog = !WatchDog;}while(k<800);
} EA=1;
XBYTE[0XC409]=0;
cpu_fpga_set(0x98,0x63a2+j,74); //发送到fpga
break;
case 0x99: j=XBYTE[0XC40c];
j=(j-1)*6; EA=0;
for(i=0;i<6;i++){ //设置日计划调度表
// do{}while(busy==0);
XBYTE[0x6cE2+i+j]=XBYTE[0XC410+i];
k=eeprom_addr;
k=k+i+j+0x1ce2;
XBYTE[k]=XBYTE[0x6ce2+i+j];
k=0;
do{k++; WatchDog = !WatchDog;}while(k<800);
}EA=1;
//do{}while(busy==0);
XBYTE[0XC409]=0;
cpu_fpga_set(0x99,0x6ce2,60); //发送到fpga
break;
// case 0x9a:break;
// case 0x9b:break;
// case 0x9c:break;
// case 0x9d:break;
case 0x9e://do{}while(busy==0);XBYTE[0XC410]=0xde; //遥控阶段对应表
// do{}while(busy==0);
XBYTE[0X6d28]=XBYTE[0XC410];
// do{}while(busy==0);
XBYTE[0X6d29]=XBYTE[0XC411];
// do{}while(busy==0);
XBYTE[0XC409]=0;
break;
case 0x9f:switch(idcode){
case 0x02:for(i=0;i<5;i++){//开关机时间,关机后状态
// do{}while(busy==0);
XBYTE[0X801A+i]=XBYTE[0XC410+i];
}
//do{}while(busy==0);
XBYTE[0X8000]=XBYTE[0XC415]; //路口编号
//do{}while(busy==0);
XBYTE[0X8001]=XBYTE[0Xc416];
//do{}while(busy==0);
XBYTE[0X8008]=XBYTE[0XC417]; //主从标志
for(i=0;i<17;i++){
//do{}while(busy==0);
XBYTE[0X8009+i]=XBYTE[0XC418+i];
}
//do{}while(busy==0);
XBYTE[0X801f]=XBYTE[0XC418+i];
i++;
//do{}while(busy==0);
XBYTE[0X8020]=XBYTE[0XC418+i];
i++;
//do{}while(busy==0);
XBYTE[0X8021]=XBYTE[0XC418+i];
//do{}while(busy==0);
XBYTE[0XC409]=0;
break;
case 0x0d:for(i=0;i<8;i++){
//do{}while(busy==0);
XBYTE[0X6d20+i]=XBYTE[0XC410+i];
}
//do{}while(busy==0);
XBYTE[0XC409]=0;
break;
default:break;
}
default:break;
}
// EA=1;
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -