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