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

📄 fpgadram.lst

📁 ASC 信号机控制程序,国内最先进的信号机控制程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 245   2                     tr_flagaddr=0xa030;
 246   2                     for(i=0;i<6;i++){
 247   3                      tr_flagaddr=tr_flagaddr+i*5;
 248   3                      if(XBYTE[tr_flagaddr]==0x87)break;
 249   3                         }
 250   2                     if(i==6){
 251   3                              return 1 ;
 252   3                              }
 253   2                     XBYTE[tr_flagaddr+1]=address>>8;        //发送数据的首地址
 254   2                     XBYTE[tr_flagaddr+2]=address;
 255   2                     XBYTE[tr_flagaddr+3]=data_address>>8;   //发送数据的尾地址
 256   2                     XBYTE[tr_flagaddr+4]=data_address;
 257   2                     address=address+0xa000;
 258   2                     if(address>0xa7f0)address=0xa080;
 259   2                     XBYTE[address]=0xc2;address++;          //发送应答数据
 260   2                     if(address>0xa7f0)address=0xa080;
 261   2                     XBYTE[address]=0x10;address++;          //最大输出通道数
 262   2      
 263   2                     if(address>0xa7f0)address=0xa080;
 264   2                     XBYTE[address]=0x20;address++;
 265   2      
 266   2                     if(address>0xa7f0)address=0xa080;
 267   2      
 268   2                     XBYTE[address]=0x20;address++;
 269   2                     if(address>0xa7f0)address=0xa080;
 270   2      
 271   2                     XBYTE[address]=0x20;address++;
 272   2                     if(address>0xa7f0)address=0xa080;
 273   2      
 274   2                     XBYTE[address]=0x20;address++;
 275   2                     if(address>0xa7f0)address=0xa080;
 276   2      
 277   2                     XBYTE[address]=0x18;address++;
 278   2                     if(address>0xa7f0)address=0xa080;
 279   2      
 280   2                     XBYTE[address]=XBYTE[0X72E2];address++;       //开机时间小时
 281   2                     if(address>0xa7f0)address=0xa080;
 282   2      
 283   2                     XBYTE[address]=XBYTE[0X72E3];address++;       //开机时间分钟
 284   2                     if(address>0xa7f0)address=0xa080;
 285   2      
 286   2                     XBYTE[address]=XBYTE[0X72E4];address++;       //关机时间小时
 287   2                     if(address>0xa7f0)address=0xa080;
 288   2      
 289   2                     XBYTE[address]=XBYTE[0X72E5];address++;       //关机时间分钟
 290   2                     if(address>0xa7f0)address=0xa080;
 291   2                     XBYTE[address]=XBYTE[0X72E6];address++;       //关机后状态
 292   2                     if(address>0xa7f0)address=0xa080;
 293   2                     XBYTE[address]=XBYTE[0X8000];address++;       //路口编号高位地址
 294   2                     if(address>0xa7f0)address=0xa080;
 295   2                     XBYTE[address]=XBYTE[0X8001];address++;      //路口编号低位地址
 296   2                     if(address>0xa7f0)address=0xa080;
 297   2                     XBYTE[address]=XBYTE[0X8009];address++;      //主机路口编号高位地址
 298   2                     if(address>0xa7f0)address=0xa080;
 299   2                     XBYTE[address]=XBYTE[0X800a];address++;      //主机路口编号低位地址
 300   2                     if(address>0xa7f0)address=0xa080;
 301   2                     XBYTE[address]=XBYTE[0X8008];address++;      //主从机标志   1主机,其它从机
 302   2                     XBYTE[tr_flagaddr]=0x01;
C51 COMPILER V6.02  FPGADRAM                                                               09/28/2006 21:46:50 PAGE 6   

 303   2                     break;
 304   2           case 0x83:XBYTE[re_flagaddr]=0x87;
 305   2                     while((XBYTE[0xa023]==0)&&(XBYTE[0xa024]==1)){};    //等待FGPA修改头尾
 306   2                     XBYTE[0xa023]=0x01;                              //CPU修改头尾
 307   2                     XBYTE[0xa024]=0X00;
 308   2                     data_address=(XBYTE[0XA021]<<8)+XBYTE[0XA022]+1;
 309   2                     data_address=(data_address&0x7ff);
 310   2                     address=data_address;
 311   2                     data_address=data_address+7;            //应答数据长度7字节
 312   2                     if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
 313   2                     data_address--;
 314   2                     XBYTE[0XA021]=data_address>>8;          //
 315   2                     XBYTE[0XA022]=data_address;
 316   2                     XBYTE[0XA023]=0X00;                      //CPU修改头尾结束
 317   2                     XBYTE[0XA024]=0X00;
 318   2                     tr_flagaddr=0xa030;
 319   2                     for(i=0;i<6;i++){
 320   3                         tr_flagaddr=tr_flagaddr+i*5;
 321   3                         if(XBYTE[tr_flagaddr]==0x87)break;
 322   3                         }
 323   2                     if(i==6)return 1 ;
 324   2                     XBYTE[tr_flagaddr+1]=address>>8;        //发送数据的首地址
 325   2                     XBYTE[tr_flagaddr+2]=address;
 326   2                     XBYTE[tr_flagaddr+3]=data_address>>8;   //发送数据的尾地址
 327   2                     XBYTE[tr_flagaddr+4]=data_address;
 328   2                     address=address+0xa000;
 329   2                     if(address>0xa7f0)address=0xa080;
 330   2                     XBYTE[address]=0xc3;address++;
 331   2                     if(address>0xa7f0)address=0xa080;                                           //发送应答数据
 332   2                     XBYTE[address]=XBYTE[0XC009];address++;
 333   2                     if(address>0xa7f0)address=0xa080;
 334   2                     XBYTE[address]=XBYTE[0XC008];address++;
 335   2                     if(address>0xa7f0)address=0xa080;
 336   2                     XBYTE[address]=XBYTE[0XC007];address++;
 337   2                     if(address>0xa7f0)address=0xa080;
 338   2                     XBYTE[address]=XBYTE[0XC004];address++;
 339   2                     if(address>0xa7f0)address=0xa080;
 340   2                     XBYTE[address]=XBYTE[0XC002];address++;
 341   2                     if(address>0xa7f0)address=0xa080;
 342   2                     XBYTE[address]=XBYTE[0XC000];address++;
 343   2                     if(address>0xa7f0)address=0xa080;
 344   2                     XBYTE[address]=XBYTE[0XC006];
 345   2                     XBYTE[tr_flagaddr]=0x01;
 346   2                     break;
 347   2           case 0x84:XBYTE[re_flagaddr]=0x87;a=answer_fpga(0x84);break;
 348   2           case 0x85:XBYTE[re_flagaddr]=0x87;a=answer_fpga(0x85);break;
 349   2           case 0x86:XBYTE[re_flagaddr]=0x87;a=answer_fpga(0x86);break;
 350   2           case 0x87:XBYTE[re_flagaddr]=0x87;a=answer_fpga(0x87);break;
 351   2           case 0x88:XBYTE[re_flagaddr]=0x87;a=answer_fpga(0x88);break;
 352   2           case 0x89:XBYTE[re_flagaddr]=0x87;a=answer_fpga(0x89);break;
 353   2           case 0x8a:XBYTE[re_flagaddr]=0x87;a=answer_fpga(0x8a);break;
 354   2           case 0x8b:XBYTE[re_flagaddr]=0x87;a=answer_fpga(0x8b);break;
 355   2           case 0x8c:XBYTE[re_flagaddr]=0x87;a=answer_fpga(0x8c);break;
 356   2           case 0x8d:XBYTE[re_flagaddr]=0x87;a=answer_fpga(0x8d);break;
 357   2           case 0x8e:XBYTE[re_flagaddr]=0x87;a=answer_fpga(0x8e);break;
 358   2           default:break;
 359   2                     }
 360   1        //  return 1;
 361   1      }
 362          //address代表标志地址 address+1
 363          
 364          deal_fpgadram() using 1
C51 COMPILER V6.02  FPGADRAM                                                               09/28/2006 21:46:50 PAGE 7   

 365          {
 366   1       unsigned char i=0;
 367   1       unsigned char flag=0;
 368   1       extern unsigned char xdata flagg;
 369   1       //iiiii=0;
 370   1       for(iiiii=0;iiiii<6;iiiii++){
 371   2         re_flagaddr=0XA050+iiiii*5;
 372   2         flagi=XBYTE[re_flagaddr];
 373   2         if((flagi==1)||(flagi==2)){//flagi>0&&flagi<5){
 374   3      
 375   3            start_addr=XBYTE[re_flagaddr+1];      //偏移地址
 376   3            start_addr=(start_addr<<8);
 377   3            start_addr=start_addr+XBYTE[re_flagaddr+2];
 378   3           // start_addr=start_addr+0xa000;
 379   3          //  start_addr=(XBYTE[re_flagaddr+1]<<8)+XBYTE[re_flagaddr+2];
 380   3               //开始地址
 381   3         //   end_addr  =(XBYTE[re_flagaddr+3]<<8)+XBYTE[re_flagaddr+4];          //结束地址
 382   3            end_addr=XBYTE[re_flagaddr+3];
 383   3            end_addr=end_addr<<8;
 384   3            end_addr=end_addr+ XBYTE[re_flagaddr+4];
 385   3          //  end_addr=end_addr+0xa000;
 386   3            address=start_addr+0xa000;        //实际开始地址
 387   3            data_address=start_addr;          //偏移开始地址
 388   3            flagg=XBYTE[start_addr+0xa000];
 389   3            //i=fpga_dram_data(flagg);       //接收fpga送来的数据
 390   3            fpga_dram_data(flagg);
 391   3                            }
 392   2                        }
 393   1      
 394   1      
 395   1      }
C51 COMPILER V6.02  FPGADRAM                                                               09/28/2006 21:46:50 PAGE 8   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
tr_flagaddr. . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    0000H  2
flagg. . . . . . . . . . . . . . . . .  EXTERN   XDATA  U_CHAR   -----  1
_fpga_dram_data. . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  flag . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   000FH  1
  i. . . . . . . . . . . . . . . . . .  AUTO     XDATA  U_INT    0000H  2
  j. . . . . . . . . . . . . . . . . .  AUTO     XDATA  U_INT    0002H  2
  a. . . . . . . . . . . . . . . . . .  AUTO     XDATA  U_CHAR   0004H  1
T0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
AC . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D6H  1
T1 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B5H  1
flagi. . . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0002H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
KB . . . . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0003H  1
force_flag . . . . . . . . . . . . . .  EXTERN   XDATA  U_CHAR   -----  1
iiiii. . . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0004H  1
RD . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B7H  1
tr_startaddr . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    0005H  2
ES . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ACH  1
RI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0098H  1
INT0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B2H  1
CY . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D7H  1
TI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0099H  1
INT1 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B3H  1
tr_endaddr . . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    0007H  2
now_step_key . . . . . . . . . . . . .  EXTERN   XDATA  U_CHAR   -----  1
PS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BCH  1
step_counter . . . . . . . . . . . . .  EXTERN   XDATA  U_CHAR   -----  1
OV . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D2H  1
FarContrlLed . . . . . . . . . . . . .  ABSBIT   -----  BIT      0091H  1
WR . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B6H  1
start_addr . . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    0009H  2
end_addr . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    000BH  2
re_control . . . . . . . . . . . . . .  EXTERN   DATA   BIT      -----  1
IE0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0089H  1
IE1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008BH  1
deal_fpgadram. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     XDATA  U_CHAR   0000H  1
  flag . . . . . . . . . . . . . . . .  AUTO     XDATA  U_CHAR   0001H  1
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
ET1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ABH  1
TF0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008DH  1
_detail_answer . . . . . . . . . . . .  PUBLIC   CODE   PROC     0004H  -----
  len. . . . . . . . . . . . . . . . .  AUTO     XDATA  U_INT    0000H  2
  detail . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0004H  1
TF1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008FH  1
RB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009AH  1
EX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A8H  1
IT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0088H  1
TB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009BH  1
EX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AAH  1
IT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008AH  1
P. . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D0H  1
step_time. . . . . . . . . . . . . . .  EXTERN   XDATA  U_CHAR   -----  1
SM0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009FH  1
SM1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009EH  1
C51 COMPILER V6.02  FPGADRAM                                                               09/28/2006 21:46:50 PAGE 9   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


SM2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009DH  1
PT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B9H  1
PT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BBH  1
RS0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D3H  1
machine_flag . . . . . . . . . . . . .  EXTERN   XDATA  U_CHAR   -----  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
RS1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D4H  1
TR1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008EH  1
PX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B8H  1
PX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BAH  1
sch_step . . . . . . . . . . . . . . .  PUBLIC   XDATA  ARRAY    000DH  16
REN. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009CH  1
data_address . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    001DH  2
address. . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    001FH  2
RXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B0H  1
TXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B1H  1
re_flagaddr. . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    0021H  2
_answer_fpga . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0010H  -----
  flag . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   000DH  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   000CH  1
  a. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0009H  1
F0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D5H  1
c080 . . . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0023H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   4918    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     36       9
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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