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

📄 lcddram.lst

📁 ASC 信号机控制程序,国内最先进的信号机控制程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 196   3                             do{}while(busy==0);XBYTE[0XC414]=0x00;
 197   3                             do{}while(busy==0);XBYTE[0XC415]=led83[4];            //当前阶段放行的相位
 198   3                             do{}while(busy==0);XBYTE[0XC416]=led83[5];            //当前阶段放行的相位
 199   3                             do{}while(busy==0);XBYTE[0XC417]=led83[6];            //下一阶段
 200   3                             do{}while(busy==0);XBYTE[0XC418]=0x00;
 201   3                             do{}while(busy==0);XBYTE[0XC419]=0x00;
 202   3                             do{}while(busy==0);XBYTE[0XC41a]=led83[9];            //下一阶段放行的相位
 203   3                             do{}while(busy==0);XBYTE[0XC41b]=led83[10];
 204   3                             do{}while(busy==0);XBYTE[0XC41C]=led83[11];           //当前阶段的倒计时
 205   3                             do{}while(busy==0);XBYTE[0XC41D]=led83[12];           //运行故障信息
 206   3                             do{}while(busy==0);XBYTE[0XC41E]=led83[13];           /*驱而不亮的红灯组*/
 207   3                             do{}while(busy==0);XBYTE[0XC41F]=led83[14];           /*驱而不亮的红灯组*/
 208   3                             do{}while(busy==0);XBYTE[0XC420]=led83[15];           /*驱而不亮的黄灯组*/
 209   3                             do{}while(busy==0);XBYTE[0XC421]=led83[16];           /*驱而不亮的黄灯组*/
 210   3                             do{}while(busy==0);XBYTE[0XC422]=led83[17];           /*驱而不亮的绿灯组*/
 211   3                             do{}while(busy==0);XBYTE[0XC423]=led83[18];           /*驱而不亮的绿灯组*/
 212   3                             do{}while(busy==0);XBYTE[0XC424]=led83[19];           /*不驱而亮的红灯组*/
 213   3                             do{}while(busy==0);XBYTE[0XC425]=led83[20];           /*不驱而亮的红灯组*/
 214   3                             do{}while(busy==0);XBYTE[0XC426]=led83[21];           /*不驱而亮的黄灯组*/
 215   3                             do{}while(busy==0);XBYTE[0XC427]=led83[22];           /*不驱而亮的黄灯组*/
 216   3                             do{}while(busy==0);XBYTE[0XC428]=led83[23];           /*不驱而亮的绿灯组*/
 217   3                             do{}while(busy==0);XBYTE[0XC429]=led83[24];           /*不驱而亮的绿灯组*/
 218   3                             do{}while(busy==0);XBYTE[0XC42a]=led83[25];           /*检测器故障*/
 219   3                             do{}while(busy==0);XBYTE[0XC42b]=led83[26];           /*检测器故障*/
 220   3                             do{}while(busy==0);XBYTE[0XC42c]=led83[27];           /*检测器故障*/
 221   3                             do{}while(busy==0);XBYTE[0XC42d]=led83[28];           /*检测器故障*/
 222   3                             do{}while(busy==0);XBYTE[0XC408]=0;
 223   3                             break;
 224   3                  case 0x8c:
 225   3                             do{}while(busy==0);XBYTE[0XC410]=0XCC;     //查询统计周期
 226   3                             do{}while(busy==0);XBYTE[0XC408]=0;
 227   3                             break;
 228   3                  case 0x8d:
 229   3                             do{}while(busy==0);XBYTE[0XC410]=0XCd;     //应答统计数据
 230   3                             do{}while(busy==0);XBYTE[0XC408]=0;
 231   3                             break;
 232   3                  case 0x8e: do{}while(busy==0);XBYTE[0XC410]=0xde;    //遥控阶段对应表
 233   3                             do{}while(busy==0);XBYTE[0XC411]=XBYTE[0X6d28];
 234   3                             do{}while(busy==0);XBYTE[0XC412]=XBYTE[0X6d29];
 235   3      
 236   3                             do{}while(busy==0);XBYTE[0XC408]=0;
 237   3                             break;
 238   3                  case 0x8f: switch(fu){ //新中新增补协议
C51 COMPILER V6.02  LCDDRAM                                                                09/28/2006 21:46:50 PAGE 5   

 239   4                             case 0x8b:do{}while(busy==0);XBYTE[0XC410]=0xcf;    //运行状态参数
 240   4                                       do{}while(busy==0);XBYTE[0XC411]=0x8b;
 241   4                                       do{}while(busy==0);XBYTE[0XC412]=run_state;
 242   4                                       do{}while(busy==0);XBYTE[0XC408]=0;
 243   4                                       break;
 244   4                             case 0x02:do{}while(busy==0);XBYTE[0XC410]=0xcf;    //特征参数
 245   4                                       do{}while(busy==0);XBYTE[0XC411]=0x02;
 246   4                                       for(i=0;i<5;i++){//开关机时间,关机后状态
 247   5                                           do{}while(busy==0);XBYTE[0XC412+i]=XBYTE[0X801A+i];
 248   5                                                        }
 249   4                                       do{}while(busy==0);XBYTE[0XC417]=XBYTE[0X8000]; //路口编号
 250   4                                       do{}while(busy==0);XBYTE[0XC418]=XBYTE[0X8001];
 251   4                                       do{}while(busy==0);XBYTE[0XC419]=XBYTE[0X8008]; //主从标志
 252   4      
 253   4                                       for(i=0;i<17;i++){
 254   5                                              do{}while(busy==0);XBYTE[0XC41a+i]=XBYTE[0X8009+i];
 255   5                                                         }
 256   4                                          do{}while(busy==0);XBYTE[0XC41a+i]=XBYTE[0X801f];
 257   4                                          i++;
 258   4                                          do{}while(busy==0);XBYTE[0XC41a+i]=XBYTE[0X8020];
 259   4                                          i++;
 260   4                                          do{}while(busy==0);XBYTE[0XC41a+i]=XBYTE[0X8021];
 261   4      
 262   4                                       do{}while(busy==0);XBYTE[0XC408]=0;
 263   4      
 264   4                                       break;
 265   4                             case 0x0d:do{}while(busy==0);XBYTE[0XC410]=0xcf;    //遥控阶段对应表
 266   4                                       do{}while(busy==0);XBYTE[0XC411]=0x0d;
 267   4                                       for(i=0;i<8;i++){
 268   5                                           do{}while(busy==0);XBYTE[0XC412+i]=XBYTE[0X6d20+i];
 269   5                                                        }
 270   4                                       do{}while(busy==0);XBYTE[0XC408]=0;
 271   4                                       break;
 272   4                              case 0x03:num=XBYTE[0XC40c]*256+XBYTE[0XC40d];     //N
 273   4                                       addr=XBYTE[0X3ea7]*256+XBYTE[0X3ea8];     //故障信息的结束地址
 274   4                                       if(addr==0x3000)addr=0x3ea6;
 275   4                                       addr=addr-15*num;
 276   4                                       if(addr<0x3000)addr=0x3ea6-0x3000+addr;
 277   4      
 278   4                                       do{}while(busy==0);XBYTE[0XC410]=0xcf;    //故障查询 8F 03 N
 279   4                                       do{}while(busy==0);XBYTE[0XC411]=0x03;
 280   4      
 281   4                                       for(i=0;i<15;i++){
 282   5                                           do{}while(busy==0);XBYTE[0XC412+i]=XBYTE[addr+i];
 283   5                                                        }
 284   4                                       do{}while(busy==0);XBYTE[0XC408]=0;
 285   4                                       break;
 286   4                             default:break;
 287   4                                            }
 288   3      
 289   3                             break;
 290   3                  default:break;
 291   3                    }
 292   2        //  EA=1;
 293   2          }
 294   1       //设置
 295   1      
 296   1       do{}while(busy==0);flag=XBYTE[0XC409];
 297   1      // do{}while(busy==0);fu=XBYTE[0XC40a];
 298   1       do{}while(busy==0);id=XBYTE[0XC40b];
 299   1       do{}while(busy==0);idcode=XBYTE[0XC40c];
 300   1       if(flag==1){
C51 COMPILER V6.02  LCDDRAM                                                                09/28/2006 21:46:50 PAGE 6   

 301   2         // EA=0;
 302   2          switch(id){
 303   3                  case 0x90: //do{}while(busy==0);XBYTE[0XC410]=0XC0;
 304   3                              XBYTE[0X8002]=XBYTE[0XC410];
 305   3                              XBYTE[0X8003]=XBYTE[0XC411];
 306   3                              XBYTE[0X8004]=XBYTE[0XC412];
 307   3                              XBYTE[0X8005]=XBYTE[0XC413];
 308   3                              XBYTE[0X8006]=XBYTE[0XC414];
 309   3                              XBYTE[0X8007]=XBYTE[0XC415];
 310   3                              XBYTE[0X8008]=XBYTE[0XC416];
 311   3                              XBYTE[0XC409]=0;
 312   3                             break;
 313   3                  case 0x92:
 314   3                              XBYTE[0XC410]=0x20;                   //最大输出通道数
 315   3                              XBYTE[0XC411]=0X20;                   //支持阶段表数
 316   3                              XBYTE[0XC412]=0X20;                   //一个阶段表支持的最大阶段数
 317   3                              XBYTE[0XC413]=0X20;                   //最大控制方案数
 318   3                              XBYTE[0XC414]=0X20;                   //最大日计划数
 319   3                              XBYTE[0XC415]=0X18;                   //一个日计划支持的最大时段
 320   3                              XBYTE[0X72E2]=XBYTE[0XC416];          //开机时间小时
 321   3                              XBYTE[0X72E3]=XBYTE[0XC417];          //开机时间分钟
 322   3                              XBYTE[0X72E4]=XBYTE[0XC418];          //关机时间小时
 323   3                              XBYTE[0X72E5]=XBYTE[0XC419];          //关机时间分钟
 324   3                              XBYTE[0X72E6]=XBYTE[0XC41a];          //关机后状态
 325   3                              XBYTE[0X8000]=XBYTE[0XC41b];
 326   3                              XBYTE[0X8001]=XBYTE[0XC41c];
 327   3      
 328   3                              XBYTE[0XC409]=0;
 329   3                             break;
 330   3                  case 0x93:       //设置系统时间
 331   3                              XBYTE[0XC009]=XBYTE[0XC420];  //year
 332   3                              XBYTE[0XC008]=XBYTE[0XC421];  //month
 333   3                              XBYTE[0XC007]=XBYTE[0XC422];  //date
 334   3                              XBYTE[0XC004]=XBYTE[0XC423];  //hour
 335   3                              XBYTE[0XC002]=XBYTE[0XC424];  //min
 336   3                              XBYTE[0XC000]=XBYTE[0XC425];  //sec
 337   3                              XBYTE[0XC006]=XBYTE[0XC426];  //day
 338   3      
 339   3                              XBYTE[0XC409]=0;
 340   3                             break;
 341   3                  case 0x94:if(idcode==0){    //设置相位信息
 342   4                             EA=0;
 343   4                             j=XBYTE[0XC40D];
 344   4                             j=(j-1)*18;
 345   4                             for(i=0;i<18;i++)ch[i]=XBYTE[0XC420+i];
 346   4                             for(i=0;i<18;i++){
 347   5                                        // do{}while(busy==0);
 348   5                                         addr=0x5001+i+j;
 349   5                                         XBYTE[addr]=ch[i];
 350   5                                         k=eeprom_addr;
 351   5                                         k=k+i+j+1;
 352   5                                         XBYTE[k]=ch[i];
 353   5                                         k=0;
 354   5                                         do{k++; WatchDog = !WatchDog;}while(k<800);
 355   5                                                 }
 356   4      
 357   4                                    EA=1 ;      }else{    EA=0;
 358   4      
 359   4                                   j=XBYTE[0XC40D];
 360   4                                   j=(j-1)*18;
 361   4                                   if(XBYTE[0XC412]==3)XBYTE[0XC413]=4;  //相位属性
 362   4                                   for(i=0;i<18;i++){
C51 COMPILER V6.02  LCDDRAM                                                                09/28/2006 21:46:50 PAGE 7   

 363   5                                                   //  tt=0x5122+i+j;
 364   5                                                   //  ttd=0XC410+i;
 365   5                                        // do{}while(busy==0);
 366   5                                         XBYTE[0x5122+i+j]=XBYTE[0XC420+i];
 367   5                                         k=eeprom_addr;
 368   5                                         k=k+i+j+0x122;
 369   5                                         XBYTE[k]=XBYTE[0XC420+i];
 370   5                                         k=0;
 371   5                                         do{k++; WatchDog = !WatchDog;}while(k<800);              //
 372   5                                                      }
 373   4      
 374   4                                   EA=1;              }
 375   3      
 376   3                             //do{}while(busy==0);
 377   3                             XBYTE[0XC409]=0;
 378   3                             //
 379   3      
 380   3                             if(idcode==0){
 381   4                                 cpu_fpga_set(0x94,0x5001,289);
 382   4                                         }else {
 383   4                                               cpu_fpga_set(0x94,0x5122,289);
 384   4                                               }
 385   3      
 386   3                             break;
 387   3                  case 0x95: idcode=XBYTE[0XC410];
 388   3                            j=(idcode-1)*98;      //设置阶段表
 389   3                             EA=0;
 390   3                             for(i=0;i<98;i++)ch[i]=XBYTE[0XC410+i];
 391   3                             for(i=0;i<98;i++){
 392   4                                   addr=0x5242+i+j;
 393   4                                   if(i==4){
 394   5                                            XBYTE[addr]=ch[i]-1;
 395   5      
 396   5                                           }else{
 397   5                                                 XBYTE[addr]=ch[i];
 398   5                                                 }
 399   4                                            k=eeprom_addr;
 400   4                                            k=k+i+j+0x242;
 401   4                                            XBYTE[k]=ch[i];
 402   4                                            k=0;

⌨️ 快捷键说明

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