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

📄 fpgadram.lst

📁 最先进的信号机程序,经过很多重要场合测试通过
💻 LST
📖 第 1 页 / 共 2 页
字号:
 223   2                     XBYTE[tr_flagaddr+1]=address>>8;        //发送数据的首地址
 224   2                     XBYTE[tr_flagaddr+2]=address;
 225   2                     XBYTE[tr_flagaddr+3]=data_address>>8;   //发送数据的尾地址
 226   2                     XBYTE[tr_flagaddr+4]=data_address;
 227   2                     address=address+0xa000;
 228   2      
 229   2                     XBYTE[address]=0xc2;address++;          //发送应答数据
 230   2                     if(address>0xa7f0)address=0xa080;
 231   2                     XBYTE[address]=0x10;address++;          //最大输出通道数
 232   2      
 233   2                     if(address>0xa7f0)address=0xa080;
 234   2                     XBYTE[address]=0x20;address++;
 235   2      
 236   2                     if(address>0xa7f0)address=0xa080;
 237   2      
 238   2                     XBYTE[address]=0x20;address++;
 239   2                     if(address>0xa7f0)address=0xa080;
 240   2      
 241   2                     XBYTE[address]=0x20;address++;
C51 COMPILER V6.02  FPGADRAM                                                               08/02/2006 14:44:15 PAGE 5   

 242   2                     if(address>0xa7f0)address=0xa080;
 243   2      
 244   2                     XBYTE[address]=0x20;address++;
 245   2                     if(address>0xa7f0)address=0xa080;
 246   2      
 247   2                     XBYTE[address]=0x18;address++;
 248   2                     if(address>0xa7f0)address=0xa080;
 249   2      
 250   2                     XBYTE[address]=XBYTE[0X72E2];address++;       //开机时间小时
 251   2                     if(address>0xa7f0)address=0xa080;
 252   2      
 253   2                     XBYTE[address]=XBYTE[0X72E3];address++;       //开机时间分钟
 254   2                     if(address>0xa7f0)address=0xa080;
 255   2      
 256   2                     XBYTE[address]=XBYTE[0X72E4];address++;       //关机时间小时
 257   2                     if(address>0xa7f0)address=0xa080;
 258   2      
 259   2                     XBYTE[address]=XBYTE[0X72E5];address++;       //关机时间分钟
 260   2                     if(address>0xa7f0)address=0xa080;
 261   2                     XBYTE[address]=XBYTE[0X72E6];address++;       //关机后状态
 262   2                     if(address>0xa7f0)address=0xa080;
 263   2                     XBYTE[address]=XBYTE[0X8000];address++;       //路口编号高位地址
 264   2                     if(address>0xa7f0)address=0xa080;
 265   2                     XBYTE[address]=XBYTE[0X8001];      //路口编号地位地址
 266   2                     XBYTE[tr_flagaddr]=0x01;
 267   2                     break;
 268   2           case 0x83:XBYTE[re_flagaddr]=0x87;
 269   2                     data_address=XBYTE[0XA021]<<8+XBYTE[0XA022]+1;    //首地址偏移量
 270   2                     address=data_address;                             //首地址偏移量
 271   2                     data_address=data_address+7;            //应答数据长度7字节
 272   2                     if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
 273   2                     while((XBYTE[0xa023]==0)&&(XBYTE[0xa024]==1)){};    //等待FGPA修改头尾
 274   2                     XBYTE[0xa023]=0x01;                              //CPU修改头尾
 275   2                     XBYTE[0xa024]=0X00;
 276   2                     data_address=(XBYTE[0XA021]<<8)+XBYTE[0XA022]+1;
 277   2                     address=data_address;
 278   2                     data_address=data_address+7;            //应答数据长度7字节
 279   2                     if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
 280   2                     data_address--;
 281   2                     XBYTE[0XA021]=data_address>>8;          //
 282   2                     XBYTE[0XA022]=data_address;
 283   2                     XBYTE[0XA023]=0X00;                      //CPU修改头尾结束
 284   2                     XBYTE[0XA024]=0X00;
 285   2                     tr_flagaddr=0xa030;
 286   2                     for(i=0;i<6;i++){
 287   3                         tr_flagaddr=tr_flagaddr+i*5;
 288   3                         if(XBYTE[tr_flagaddr]==0x87)break;
 289   3                         }
 290   2                     if(i==6)return 1 ;
 291   2                     XBYTE[tr_flagaddr+1]=address>>8;        //发送数据的首地址
 292   2                     XBYTE[tr_flagaddr+2]=address;
 293   2                     XBYTE[tr_flagaddr+3]=data_address>>8;   //发送数据的尾地址
 294   2                     XBYTE[tr_flagaddr+4]=data_address;
 295   2                     address=address+0xa000;
 296   2                     XBYTE[address]=0xc3;address++;
 297   2                     if(address>0xa7f0)address=0xa080;                                           //发送应答数据
 298   2                     XBYTE[address]=XBYTE[0XC009];address++;
 299   2                     if(address>0xa7f0)address=0xa080;
 300   2                     XBYTE[address]=XBYTE[0XC008];address++;
 301   2                     if(address>0xa7f0)address=0xa080;
 302   2                     XBYTE[address]=XBYTE[0XC007];address++;
 303   2                     if(address>0xa7f0)address=0xa080;
C51 COMPILER V6.02  FPGADRAM                                                               08/02/2006 14:44:15 PAGE 6   

 304   2                     XBYTE[address]=XBYTE[0XC004];address++;
 305   2                     if(address>0xa7f0)address=0xa080;
 306   2                     XBYTE[address]=XBYTE[0XC002];address++;
 307   2                     if(address>0xa7f0)address=0xa080;
 308   2                     XBYTE[address]=XBYTE[0XC000];address++;
 309   2                     if(address>0xa7f0)address=0xa080;
 310   2                     XBYTE[address]=XBYTE[0XC006];
 311   2                     XBYTE[tr_flagaddr]=0x01;
 312   2                     break;
 313   2           case 0x84:answer_fpga(0x84);break;
 314   2           case 0x85:answer_fpga(0x85);break;
 315   2           case 0x86:answer_fpga(0x86);break;
 316   2           case 0x87:answer_fpga(0x87);break;
 317   2           case 0x88:answer_fpga(0x88);break;
 318   2           case 0x89:answer_fpga(0x89);break;
 319   2           case 0x8a:answer_fpga(0x8a);break;
 320   2           case 0x8b:answer_fpga(0x8b);break;
 321   2           case 0x8c:answer_fpga(0x8c);break;
 322   2           case 0x8d:answer_fpga(0x8d);break;
 323   2           case 0x8e:answer_fpga(0x8e);break;
 324   2           default:break;
 325   2                     }
 326   1          return 1;
 327   1      }
 328          //address代表标志地址 address+1
 329          
 330          deal_fpgadram()
 331          {
 332   1       unsigned char i=0;
 333   1       unsigned char flag=0;
 334   1       unsigned char xdata flagg;
 335   1      
 336   1       for(iiiii=0;iiiii<6;iiiii++){
 337   2         re_flagaddr=0XA050+iiiii*5;
 338   2         flagi=XBYTE[re_flagaddr];
 339   2         if(flagi==1){//flagi>0&&flagi<5){
 340   3            start_addr=XBYTE[re_flagaddr+1];      //偏移地址
 341   3            start_addr=(start_addr<<8);
 342   3            start_addr=start_addr+XBYTE[re_flagaddr+2];
 343   3           // start_addr=start_addr+0xa000;
 344   3          //  start_addr=(XBYTE[re_flagaddr+1]<<8)+XBYTE[re_flagaddr+2];
 345   3               //开始地址
 346   3         //   end_addr  =(XBYTE[re_flagaddr+3]<<8)+XBYTE[re_flagaddr+4];          //结束地址
 347   3            end_addr=XBYTE[re_flagaddr+3];
 348   3            end_addr=end_addr<<8;
 349   3            end_addr=end_addr+ XBYTE[re_flagaddr+4];
 350   3          //  end_addr=end_addr+0xa000;
 351   3            address=start_addr+0xa000;        //实际开始地址
 352   3            data_address=start_addr;          //偏移开始地址
 353   3            flagg=XBYTE[start_addr+0xa000];
 354   3            fpga_dram_data(flagg);       //接收fpga送来的数据
 355   3            return ;
 356   3                            }
 357   2                        }
 358   1      
 359   1      
 360   1      }
C51 COMPILER V6.02  FPGADRAM                                                               08/02/2006 14:44:15 PAGE 7   

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


tr_flagaddr. . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    0000H  2
_fpga_dram_data. . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  flag . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  i. . . . . . . . . . . . . . . . . .  AUTO     XDATA  U_INT    0000H  2
  j. . . . . . . . . . . . . . . . . .  AUTO     XDATA  U_INT    0002H  2
  a. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  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
iiiii. . . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_CHAR   0003H  1
RD . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B7H  1
tr_startaddr . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    0004H  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    0006H  2
PS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BCH  1
OV . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D2H  1
WR . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B6H  1
start_addr . . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    0008H  2
end_addr . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    000AH  2
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
  flagg. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
ET1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ABH  1
TF0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008DH  1
_detail_answer . . . . . . . . . . . .  PUBLIC   CODE   PROC     0004H  -----
  len. . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0002H  2
  detail . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0001H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  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
SM0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009FH  1
SM1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009EH  1
SM2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009DH  1
PT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B9H  1
PT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BBH  1
RS0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D3H  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
RS1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D4H  1
TR1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008EH  1
PX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B8H  1
C51 COMPILER V6.02  FPGADRAM                                                               08/02/2006 14:44:15 PAGE 8   

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


PX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BAH  1
REN. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009CH  1
data_address . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    000CH  2
address. . . . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    000EH  2
RXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B0H  1
TXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B1H  1
re_flagaddr. . . . . . . . . . . . . .  PUBLIC   XDATA  U_INT    0010H  2
_answer_fpga . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  flag . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0004H  1
F0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D5H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   4319    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     18       6
   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 + -