📄 fpgadram.lst
字号:
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 + -