📄 greenflic.lst
字号:
C51 COMPILER V6.02 GREENFLIC 09/28/2006 21:46:49 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE GREENFLIC
OBJECT MODULE PLACED IN F:\LAIWORK\GB_ASC\GREENFLIC.OBJ
COMPILER INVOKED BY: c:\COMP51V6\C51.EXE F:\LAIWORK\GB_ASC\GREENFLIC.C DB SB OE LARGE
stmt level source
1 #include <absacc.h>
2 #include <reg51.h>
3
4 extern unsigned char xdata now_day_planid;
5 unsigned int xdata conflc_set[32],constep[32];
6 unsigned char xdata conflag=0,hconflag=0;
7 extern unsigned char xdata now_schemeid;
8 extern unsigned char step_counter; //阶段号
9 extern unsigned int xdata g_read;
10 void hard_greenconflic() using 1
11 {
12 1 unsigned int addr,an_addr,th_addr,for_addr;
13 1 unsigned char i,j,k;
14 1 unsigned char ste_id,phsch_id;
15 1
16 1 unsigned int now_phase,now_lamp,xlht;
17 1 unsigned int ph_lamp=0;
18 1 unsigned int xdata crush;
19 1 unsigned int xdata setpl;
20 1
21 1 hconflag=0x00;
22 1 addr=0x5e83;
23 1 addr=addr+(now_schemeid-1)*41; //方案表号地址
24 1 ste_id=XBYTE[addr]; //阶段表号
25 1 addr=0x5246+(ste_id-1)*98;
26 1 phsch_id=XBYTE[addr]; //用到的相位表号
27 1 an_addr=0x5244;
28 1 an_addr=an_addr+(ste_id-1)*98; //阶段表号
29 1 th_addr=an_addr+step_counter*3; //
30 1 now_phase=XBYTE[th_addr]*256+XBYTE[th_addr+1]; // 当前阶段放行的相位
31 1 //当前时刻输出的绿灯灯组
32 1 now_lamp=g_read;
33 1 //for_addr=0x5001+(phsch_id-1)*288;
34 1 for(j=0;j<16;j++){
35 2 xlht=(0x0001<<j);
36 2 if((now_lamp&xlht)==xlht){//当前放行的灯组
37 3 for(k=0;k<16;k++){ //逐相位的查找
38 4 for_addr=0x5001+(phsch_id)*288;
39 4 for_addr=for_addr+k*18;
40 4 setpl=XBYTE[for_addr];
41 4 setpl=(setpl<<8);
42 4 for_addr++;
43 4 setpl=setpl+XBYTE[for_addr];
44 4 // setpl=XBYTE[for_addr]*256+XBYTE[for_addr+1];//相位表中每个相位放行的灯组
45 4 //ph_lamp就是当前检测到的绿灯灯组所归属的全部相位
46 4 if((setpl&xlht)==xlht){ //若该相位包含了该灯组,则在相应的相位位置置1
47 5 ph_lamp=(ph_lamp|(0x0001<<k));
48 5 }
49 4 }
50 3 }
51 2 }
52 1 // for_addr=0x5000+(phsch_id-1)*288;
53 1 for(i=0;i<16;i++){
54 2 xlht=(0x0001<<i);//本阶段里放行的相位
55 2 if((now_phase&xlht)==xlht){ //逐放行相位 查找其冲突相位
C51 COMPILER V6.02 GREENFLIC 09/28/2006 21:46:49 PAGE 2
56 3 for_addr=0x500a+(phsch_id)*288;
57 3 for_addr=for_addr+i*18;
58 3 crush=XBYTE[for_addr];
59 3 crush=(crush<<8);
60 3 for_addr++;
61 3 crush=crush+XBYTE[for_addr];
62 3 // crush=XBYTE[for_addr]*256+ XBYTE[for_addr+1];//查找到的i+1相位的冲突相位
63 3 if((crush&ph_lamp)!=0){
64 4 hconflag=0x01;
65 4 }
66 3 }
67 2
68 2
69 2 }
70 1 }
71 /////////////////////////////////////////////////////////////////////////////////////////
72 //软件绿冲突检测函数:每周期开始时对信号机对应日计划内的所有方案中对应的相位表进行冲突统计
73 //在方案指定的阶段表中,逐阶段查找放行的相位,确认没接中有无冲突的相位在同一阶段中出现
74 ////////////////////////////////////////////////////////////////////////////////////////
75 void soft_greenconflic()
76 {
77 1 unsigned int addr,an_addr,th_addr,for_addr;
78 1 unsigned char per_id; //时段数
79 1 unsigned char sch_id,step_id,step_nu,phase_id;
80 1 unsigned char i,k,m;
81 1 unsigned int j,xlht;
82 1 conflag=0;
83 1 addr=0x63a3; //日计划开始地址
84 1 per_id=XBYTE[addr];
85 1 // addr=0x63a6;
86 1
87 1 for(i=0;i<per_id;i++){//每个方案 中都要判断
88 2 j=i*3;
89 2 addr=0x63a6;
90 2 sch_id=XBYTE[addr+j]; //每个时段使用的方案
91 2 an_addr=0x5e83;
92 2 an_addr=an_addr+(sch_id-1)*41;
93 2 step_id=XBYTE[an_addr]; //方案对应的阶段表号
94 2 step_nu=XBYTE[an_addr+1]; //方案对应的阶段数
95 2 th_addr=0x5246;
96 2 th_addr=th_addr+(step_id-1)*98;
97 2 phase_id=XBYTE[th_addr]; //方案对应的相位表号
98 2
99 2 for(k=0;k<16;k++){
100 3 for_addr=0x500a+phase_id*288;
101 3 for_addr=for_addr+k*18; //确认每个相位对应的冲突相位
102 3 conflc_set[k]=XBYTE[for_addr]*256+XBYTE[for_addr+1];
103 3 }
104 2 EA=0;
105 2 for(k=0;k<step_nu;k++){ //各相位 的冲突相位
106 3
107 3 //各阶段放行的相位
108 3 an_addr=0x5244+k*3;
109 3 constep[k]=XBYTE[an_addr]*256+XBYTE[an_addr+1];
110 3 for(m=0;m<16;m++){
111 4 xlht=0x0001;
112 4 xlht=(0x0001<<m);
113 4 if((constep[k]&xlht)==xlht){
114 5 if((constep[k]&conflc_set[m])!=0x0000){
115 6 conflag=0x01;
116 6 }
117 5 }
C51 COMPILER V6.02 GREENFLIC 09/28/2006 21:46:49 PAGE 3
118 4 }
119 3 } EA=1;
120 2
121 2 }
122 1
123 1 }
C51 COMPILER V6.02 GREENFLIC 09/28/2006 21:46:49 PAGE 4
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
constep. . . . . . . . . . . . . . . . PUBLIC XDATA ARRAY 0000H 64
T0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
AC . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D6H 1
T1 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
RD . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1
soft_greenconflic. . . . . . . . . . . PUBLIC CODE PROC 0000H -----
addr . . . . . . . . . . . . . . . . AUTO XDATA U_INT 0000H 2
an_addr. . . . . . . . . . . . . . . AUTO XDATA U_INT 0002H 2
th_addr. . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2
for_addr . . . . . . . . . . . . . . AUTO XDATA U_INT 0004H 2
per_id . . . . . . . . . . . . . . . AUTO XDATA U_CHAR 0006H 1
sch_id . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
step_id. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
step_nu. . . . . . . . . . . . . . . AUTO XDATA U_CHAR 0007H 1
phase_id . . . . . . . . . . . . . . * REG * DATA U_CHAR 0002H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0001H 1
k. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
m. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0002H 1
j. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
xlht . . . . . . . . . . . . . . . . * REG * DATA 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
PS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BCH 1
step_counter . . . . . . . . . . . . . EXTERN XDATA U_CHAR ----- 1
OV . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D2H 1
conflc_set . . . . . . . . . . . . . . PUBLIC XDATA ARRAY 0040H 64
WR . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B6H 1
IE0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0089H 1
IE1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008BH 1
hconflag . . . . . . . . . . . . . . . PUBLIC XDATA U_CHAR 0080H 1
ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1
ET1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ABH 1
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 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
PX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BAH 1
C51 COMPILER V6.02 GREENFLIC 09/28/2006 21:46:49 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
conflag. . . . . . . . . . . . . . . . PUBLIC XDATA U_CHAR 0081H 1
g_read . . . . . . . . . . . . . . . . EXTERN XDATA U_INT ----- 2
REN. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009CH 1
RXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B0H 1
TXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B1H 1
F0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D5H 1
hard_greenconflic. . . . . . . . . . . PUBLIC CODE PROC 0000H -----
addr . . . . . . . . . . . . . . . . * REG * DATA U_INT 000AH 2
an_addr. . . . . . . . . . . . . . . * REG * DATA U_INT 000CH 2
th_addr. . . . . . . . . . . . . . . * REG * DATA U_INT 000CH 2
for_addr . . . . . . . . . . . . . . AUTO XDATA U_INT 0000H 2
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 000BH 1
j. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 000BH 1
k. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 000AH 1
ste_id . . . . . . . . . . . . . . . AUTO XDATA U_CHAR 0002H 1
phsch_id . . . . . . . . . . . . . . * REG * DATA U_CHAR 0009H 1
now_phase. . . . . . . . . . . . . . AUTO XDATA U_INT 0003H 2
now_lamp . . . . . . . . . . . . . . AUTO XDATA U_INT 0005H 2
xlht . . . . . . . . . . . . . . . . AUTO XDATA U_INT 0007H 2
ph_lamp. . . . . . . . . . . . . . . AUTO XDATA U_INT 0009H 2
crush. . . . . . . . . . . . . . . . * REG * DATA U_INT 000CH 2
setpl. . . . . . . . . . . . . . . . * REG * DATA U_INT 000CH 2
now_schemeid . . . . . . . . . . . . . EXTERN XDATA U_CHAR ----- 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 932 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 130 19
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 + -