📄 stru.lst
字号:
C51 COMPILER V6.02 STRU 09/28/2006 21:46:49 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE STRU
OBJECT MODULE PLACED IN F:\LAIWORK\GB_ASC\STRU.OBJ
COMPILER INVOKED BY: c:\COMP51V6\C51.EXE F:\LAIWORK\GB_ASC\STRU.C DB SB OE LARGE
stmt level source
1 #include <stru.h>
2 /*****************************************************************************************************/
3 // 初始化函数
4 /*****************************************************************************************************/
5 extern uchar xdata loop_now[32],loop_last[32];
6 void init(void)
7 {
8 1 uchar i,j;
9 1 uint k;
10 1
11 1
12 1 D12887A=0x2f; /*对时钟中断进行设置 */
13 1 D12887B=0x4e;
14 1 XBYTE[0XC083]=0X8b; //CPU板内8255设置,绿灯电源为输出,遥控为输入
15 1 XBYTE[0XC080]=0X81; //输出绿灯电源
16 1 XBYTE[0Xc103]=0x80; //灯输出板设置,都设为输出
17 1 XBYTE[0Xc183]=0x80;
18 1 XBYTE[0XC203]=0X9b; //灯检测输入板设置,都设为输入
19 1 XBYTE[0XC283]=0X9b;
20 1 XBYTE[0XC303]=0X93; //车辆检测输入板设置
21 1 XBYTE[0XC383]=0X93;
22 1 XBYTE[0X6D28]=0; //强制标志为0
23 1 force_flag=0;
24 1 XBYTE[0X6D29]=0;
25 1 EA=0;
26 1 TMOD=0X21; /*定时器0工作在方式1,定时器1工作在方式2*/
27 1 TH0=-(18432/256); /*10毫秒定时 9216*/
28 1 TL0=-(18432%256);
29 1 TH1=0XFd;
30 1 TL1=0XFd;
31 1 PCON=0X00;
32 1 SCON=0X50; /*串行口初始化*/
33 1
34 1 IE=0X96; /*允许串口中断,外部事件1中断,定时器0中断*/
35 1 IP=0X10;
36 1 IT1=1; /*下降沿触发方式 */
37 1 TR0=1; /*允许T0计数*/
38 1 TR1=1;
39 1 ET0=1; /*T0中断开*/
40 1 EX1=1;
41 1 PX1=1;
42 1 PS=1;
43 1 ES=1;
44 1 IP=0X10;
45 1 user_count=0;
46 1 for(k=0;k<512;k++){
47 2 RX_BUF[k]=0xee;
48 2 }
49 1
50 1
51 1 for(i=0;i<32;i++){
52 2 loop_now[i]=0;
53 2 loop_last[i]=0; }
54 1 for(i=0;i<41;i++){
55 2 period_sch[i]=0;
C51 COMPILER V6.02 STRU 09/28/2006 21:46:49 PAGE 2
56 2 }
57 1 for(i=0;i<6;i++){
58 2 XBYTE[0XA030+i*5]=0x87; //发送寄存器
59 2 }
60 1 XBYTE[0XA021]=0X00;
61 1 XBYTE[0XA022]=0X80;
62 1 XBYTE[0XA023]=0;
63 1 XBYTE[0XA024]=0;
64 1 for(i=0; i<32; i++)
65 1 {
66 2 loop_error[i] = 0;
67 2 forsense[i] = 0;
68 2 liul[i] = 0;
69 2 send_liul[i] = 0;
70 2 // send_occ[i]=0;
71 2 no_vehicle_step[i]=0;
72 2 }
73 1 //初始化协调路口数据
74 1 //zone_count[5][60]; //5个路口,没个路口60个备用变化,每个阶段提供60秒的变化范围
75 1 //zone_step_time[5][60];//对应的阶段时间
76 1 // zone_now_step_key[5][60];//对应的阶段历时
77 1 EA=0;
78 1 for(i=0;i<5;i++){
79 2 WatchDog = !WatchDog;
80 2 for(j=0;j<60;j++){
81 3 zone_count[i][j]=0;
82 3 zone_step_time[i][j]=0;
83 3 zone_now_step_key[i][j]=0;
84 3 }
85 2 }
86 1
87 1
88 1 //start_counter = 0;
89 1 period_update = 0;
90 1 fuctioncounter=0;
91 1 remote_state=0;
92 1 hand_state=0;
93 1 force_state=0;
94 1 for(i=0;i<32;i++){ //mei
95 2 for(j=0;j<70;j++){
96 3 per[i][j]=0;
97 3 }
98 2 }
99 1 EA=1;
100 1
101 1 }
102
103 void updatanv()
104 {
105 1 unsigned int i ;
106 1 updatanvram=0;
107 1 EA=0;
108 1 for(i=0;i<0x1d1d;i++){
109 2 WatchDog = !WatchDog;
110 2 XBYTE[0X5000+i]=XBYTE[0X8050+i];
111 2 }
112 1 EA=1;
113 1
114 1 }
115
116 /*****************************************************************************************************/
117 // 主函数
C51 COMPILER V6.02 STRU 09/28/2006 21:46:49 PAGE 3
118 /*****************************************************************************************************/
119 void main (void) using 1
120 {
121 1
122 1 unsigned char i,j;
123 1 unsigned int addr_w,addr_r,addr_day;
124 1 unsigned char cal_flag,day;
125 1 unsigned char day_code;
126 1 cal_flag=0x01;
127 1 init();
128 1 EA=1;
129 1 IP=0X10;
130 1 while(1)
131 1 {
132 2 XBYTE[0XC083]=0X8b; //CPU板内8255设置,绿灯电源为输出,遥控为输入
133 2 XBYTE[0XC080]=0X81; //输出绿灯电源
134 2 InternalLed = !InternalLed;
135 2 WatchDog = !WatchDog;
136 2 if(selcal_flag==0x01)tran_psh();
137 2
138 2 if((start_counter==7)&&(cal_flag==0x01)){
139 3 last_recetimeid=timeid;
140 3 cal_flag=0;
141 3 //根据方案表中内容对,自学习优化结果进行重新初始化
142 3 day = XBYTE[0XC006]; /*星期*/
143 3 if(day>7)day=3;
144 3 addr_w=0x3f00+(day-1)*384+(timeid-1)*16;
145 3 addr_r=0x5e8b+(day-1)*1312+(timeid-1)*41;
146 3 for(j=0;j<7;j++){
147 4 addr_day=0x6ce7+6*j;
148 4 day_code=XBYTE[addr_day]; //日计划
149 4 addr_day=0x63a6+day_code*74;
150 4 day_code=XBYTE[addr_day]; //日计划中对应的方案
151 4 addr_day=0x5e8b+day_code*41;
152 4 addr_r=addr_day;
153 4 for(i=0;i<16;i++){
154 5 XBYTE[addr_w+i]=XBYTE[addr_r+i];
155 5 }
156 4 }
157 3 }
158 2
159 2 h_address=XBYTE[0X8000];
160 2 l_address=XBYTE[0X8001];
161 2 // EA=0;
162 2 deal_fpgadram();
163 2 // deal_lcddram();
164 2 // EA=1;
165 2 if(tran_count>=15){
166 3 bid_flag();
167 3 tran_count=0;
168 3 }
169 2 read_time();
170 2 if(updatanvram==1)updatanv();
171 2
172 2 if(start_counter>=3)
173 2 {
174 3 nowforce=XBYTE[0X6D29];
175 3 if(nowforce!=lastforce){
176 4 hand_counter=0;
177 4 }
178 3 lastforce=nowforce;
179 3 now_schemeid = search_scheme_yellow();
C51 COMPILER V6.02 STRU 09/28/2006 21:46:49 PAGE 4
180 3 cljc(); //车辆检测
181 3 phase_loop(); //相位流量检测
182 3 jude_looperror();
183 3
184 3 if((last_schemeid!=now_schemeid)&&(last_schemeid==0x21))period_update=1; //黄闪时段进入正常时段
185 3 if(period_update) //周期结束时算一次
186 3 {
187 4 alt_change=1;
188 4 period_update = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -