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

📄 lcddram.c

📁 ASC 信号机控制程序,国内最先进的信号机控制程序
💻 C
📖 第 1 页 / 共 2 页
字号:
                                    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 + -