📄 transflow.lst
字号:
C51 COMPILER V6.02 TRANSFLOW 08/02/2006 14:44:13 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE TRANSFLOW
OBJECT MODULE PLACED IN D:\GB_ASC\TRANSFLOW.OBJ
COMPILER INVOKED BY: e:\comp51\COMP51V6\C51.EXE D:\GB_ASC\TRANSFLOW.C DB SB OE LARGE
stmt level source
1 #include <reg51.h>
2 #include <absacc.h>
3 extern unsigned char xdata send_liul[32],send_occ[32];
4 extern unsigned int xdata loop_ratio[32];
5 unsigned char xdata T;
6 unsigned char xdata fl,fh;
7 extern unsigned int xdata data_address;
8 extern unsigned int xdata address;
9 extern unsigned int xdata tr_flagaddr;
10
11
12 extern unsigned char xdata period_sch[40];
13 extern unsigned char xdata now_step_schid;
14 extern unsigned char xdata timeid;
15 extern unsigned int xdata savecount;
16
17
18
19 trans_volum() //流量和占有率发送程序,在周期结束时,发送到FPGA板
20 {
21 1 unsigned char i;
22 1 savecount++;
23 1 data_address=XBYTE[0XA021]<<8+XBYTE[0XA022]+1; //首地址 偏移量
24 1 address=data_address; //首地址 偏移量
25 1 data_address=data_address+70; //应答数据长度70字节
26 1 if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
27 1 while((XBYTE[0xa023]==0)&&(XBYTE[0xa024]==1)){}; //等待FGPA修改头尾
28 1 XBYTE[0xa023]=0x01; //CPU修改头尾
29 1 XBYTE[0xa024]=0X00;
30 1 data_address=(XBYTE[0XA021]<<8)+XBYTE[0XA022]+1;
31 1 address=data_address;
32 1 data_address=data_address+70; //应答数据长度70字节
33 1 if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
34 1 data_address--;
35 1 XBYTE[0XA021]=data_address>>8; //
36 1 XBYTE[0XA022]=data_address;
37 1 XBYTE[0XA023]=0X00; //CPU修改头尾结束
38 1 XBYTE[0XA024]=0X00;
39 1 for(i=0;i<6;i++){
40 2 tr_flagaddr=0XA030+5*i;
41 2 if(XBYTE[tr_flagaddr]==0x87)break;
42 2 }
43 1 if(i==6)return 1;
44 1 // SBUF=0XFF;while(!TI);TI=0; /////////////////////////////////////////
45 1 // SBUF=0XFF;while(!TI);TI=0; /////////////////////////////////////////
46 1 // SBUF=(savecount>>8);while(!TI);TI=0; /////////////////////////////////////////
47 1 // SBUF=savecount;while(!TI);TI=0; /////////////////////////////////////////
48 1
49 1 XBYTE[tr_flagaddr+1]=address>>8; //发送数据的首地址
50 1 // SBUF=XBYTE[tr_flagaddr+1];while(!TI);TI=0; /////////////////////////////////////////
51 1 XBYTE[tr_flagaddr+2]=address;
52 1 // SBUF=XBYTE[tr_flagaddr+2];while(!TI);TI=0; /////////////////////////////////////////
53 1 XBYTE[tr_flagaddr+3]=data_address>>8; //发送数据的尾地址
54 1 // SBUF=XBYTE[tr_flagaddr+3];while(!TI);TI=0; /////////////////////////////////////////
55 1 XBYTE[tr_flagaddr+4]=data_address;
C51 COMPILER V6.02 TRANSFLOW 08/02/2006 14:44:13 PAGE 2
56 1 // SBUF=XBYTE[tr_flagaddr+4];while(!TI);TI=0; /////////////////////////////////////////
57 1
58 1
59 1 address=address+0xa000; //发送应答数据
60 1 XBYTE[address]=0XFD; //发送标识
61 1 // SBUF=XBYTE[address];while(!TI);TI=0; /////////////////////////////////////////
62 1 address++;
63 1 if(address>0xa7f0)address=0xa080;
64 1 XBYTE[address]=XBYTE[0XC008]; //发送月
65 1 // SBUF=XBYTE[address];while(!TI);TI=0; /////////////////////////////////////////
66 1 address++;
67 1 if(address>0xa7f0)address=0xa080;
68 1 XBYTE[address]=XBYTE[0XC007]; //日
69 1 // SBUF=XBYTE[address];while(!TI);TI=0; /////////////////////////////////////////
70 1 address++;
71 1 if(address>0xa7f0)address=0xa080;
72 1 XBYTE[address]=XBYTE[0XC004]; //时
73 1 // SBUF=XBYTE[address];while(!TI);TI=0; /////////////////////////////////////////
74 1 address++;
75 1 if(address>0xa7f0)address=0xa080;
76 1 XBYTE[address]=XBYTE[0XC002]; //分
77 1 // SBUF=XBYTE[address];while(!TI);TI=0; /////////////////////////////////////////
78 1 address++;
79 1 if(address>0xa7f0)address=0xa080;
80 1 XBYTE[address]=XBYTE[0XC000]; //秒
81 1 // SBUF=XBYTE[address];while(!TI);TI=0; /////////////////////////////////////////
82 1 address++;
83 1 if(address>0xa7f0)address=0xa080;
84 1 for(i=0;i<32;i++){
85 2 XBYTE[address]=send_liul[i]; //发送流量
86 2 // SBUF=XBYTE[address];while(!TI);TI=0; /////////////////////////////////////////
87 2 address++;
88 2 if(address>0xa7f0)address=0xa080;
89 2 send_occ[i]=(loop_ratio[i]*10/1000)/T;
90 2 XBYTE[address]=send_occ[i]; //发送占有率
91 2 // SBUF=XBYTE[address];while(!TI);TI=0; /////////////////////////////////////////
92 2 address++;
93 2 if(address>0xa7f0)address=0xa080;
94 2 }
95 1 XBYTE[tr_flagaddr]=0x01;
96 1 for(i=0;i<32;i++){
97 2 send_liul[i]=0;
98 2 send_occ[i]=0;
99 2 loop_ratio[i]=0;
100 2 }
101 1 // SBUF=0XFF;
102 1 // while(!TI);TI=0;
103 1 for(i=0;i<32;i++){
104 2 send_liul[i]=0;
105 2 send_occ[i]=0;
106 2 loop_ratio[i]=0;
107 2 }
108 1 }
109 void tran_psh() //每周期发送一次方案
110 {
111 1 unsigned char i;
112 1 // period_sch[0]=0x20; //当前方案号 方案32作为备用降级方案
113 1 period_sch[0]=now_step_schid; //当前的阶段表号
114 1 period_sch[2]=timeid; //当前的时段号
115 1 period_sch[5]=XBYTE[0XC006]; //当前星期号
116 1
117 1 data_address=XBYTE[0XA021]<<8+XBYTE[0XA022]+1; //当前开始地址偏移量
C51 COMPILER V6.02 TRANSFLOW 08/02/2006 14:44:13 PAGE 3
118 1 address=data_address;
119 1 data_address=data_address+41; //应答数据长度+1字节
120 1
121 1 if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
122 1
123 1 while((XBYTE[0xa023]==0)&&(XBYTE[0xa024]==1)){}; //等待FGPA修改头尾
124 1 XBYTE[0xa023]=0x01; //CPU修改头尾
125 1 XBYTE[0xa024]=0X00;
126 1 data_address=(XBYTE[0XA021]<<8)+XBYTE[0XA022]+1;
127 1 address=data_address;
128 1 data_address=data_address+41; //应答数据长度+1字节
129 1 if(data_address>0x7f0)data_address=data_address-0x7f0+0x80;
130 1 data_address--;
131 1 XBYTE[0XA021]=data_address>>8; //
132 1 XBYTE[0XA022]=data_address;
133 1 XBYTE[0XA023]=0X00; //CPU修改头尾结束
134 1 XBYTE[0XA024]=0X00;
135 1
136 1 for(i=0;i<6;i++){
137 2 tr_flagaddr=0XA030+5*i;
138 2 if(XBYTE[tr_flagaddr]==0x87)break;
139 2 }
140 1 //if(i==6)return 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -