📄 lcddram.lst
字号:
196 3 do{}while(busy==0);XBYTE[0XC414]=0x00;
197 3 do{}while(busy==0);XBYTE[0XC415]=led83[4]; //当前阶段放行的相位
198 3 do{}while(busy==0);XBYTE[0XC416]=led83[5]; //当前阶段放行的相位
199 3 do{}while(busy==0);XBYTE[0XC417]=led83[6]; //下一阶段
200 3 do{}while(busy==0);XBYTE[0XC418]=0x00;
201 3 do{}while(busy==0);XBYTE[0XC419]=0x00;
202 3 do{}while(busy==0);XBYTE[0XC41a]=led83[9]; //下一阶段放行的相位
203 3 do{}while(busy==0);XBYTE[0XC41b]=led83[10];
204 3 do{}while(busy==0);XBYTE[0XC41C]=led83[11]; //当前阶段的倒计时
205 3 do{}while(busy==0);XBYTE[0XC41D]=led83[12]; //运行故障信息
206 3 do{}while(busy==0);XBYTE[0XC41E]=led83[13]; /*驱而不亮的红灯组*/
207 3 do{}while(busy==0);XBYTE[0XC41F]=led83[14]; /*驱而不亮的红灯组*/
208 3 do{}while(busy==0);XBYTE[0XC420]=led83[15]; /*驱而不亮的黄灯组*/
209 3 do{}while(busy==0);XBYTE[0XC421]=led83[16]; /*驱而不亮的黄灯组*/
210 3 do{}while(busy==0);XBYTE[0XC422]=led83[17]; /*驱而不亮的绿灯组*/
211 3 do{}while(busy==0);XBYTE[0XC423]=led83[18]; /*驱而不亮的绿灯组*/
212 3 do{}while(busy==0);XBYTE[0XC424]=led83[19]; /*不驱而亮的红灯组*/
213 3 do{}while(busy==0);XBYTE[0XC425]=led83[20]; /*不驱而亮的红灯组*/
214 3 do{}while(busy==0);XBYTE[0XC426]=led83[21]; /*不驱而亮的黄灯组*/
215 3 do{}while(busy==0);XBYTE[0XC427]=led83[22]; /*不驱而亮的黄灯组*/
216 3 do{}while(busy==0);XBYTE[0XC428]=led83[23]; /*不驱而亮的绿灯组*/
217 3 do{}while(busy==0);XBYTE[0XC429]=led83[24]; /*不驱而亮的绿灯组*/
218 3 do{}while(busy==0);XBYTE[0XC42a]=led83[25]; /*检测器故障*/
219 3 do{}while(busy==0);XBYTE[0XC42b]=led83[26]; /*检测器故障*/
220 3 do{}while(busy==0);XBYTE[0XC42c]=led83[27]; /*检测器故障*/
221 3 do{}while(busy==0);XBYTE[0XC42d]=led83[28]; /*检测器故障*/
222 3 do{}while(busy==0);XBYTE[0XC408]=0;
223 3 break;
224 3 case 0x8c:
225 3 do{}while(busy==0);XBYTE[0XC410]=0XCC; //查询统计周期
226 3 do{}while(busy==0);XBYTE[0XC408]=0;
227 3 break;
228 3 case 0x8d:
229 3 do{}while(busy==0);XBYTE[0XC410]=0XCd; //应答统计数据
230 3 do{}while(busy==0);XBYTE[0XC408]=0;
231 3 break;
232 3 case 0x8e: do{}while(busy==0);XBYTE[0XC410]=0xde; //遥控阶段对应表
233 3 do{}while(busy==0);XBYTE[0XC411]=XBYTE[0X6d28];
234 3 do{}while(busy==0);XBYTE[0XC412]=XBYTE[0X6d29];
235 3
236 3 do{}while(busy==0);XBYTE[0XC408]=0;
237 3 break;
238 3 case 0x8f: switch(fu){ //新中新增补协议
C51 COMPILER V6.02 LCDDRAM 09/28/2006 21:46:50 PAGE 5
239 4 case 0x8b:do{}while(busy==0);XBYTE[0XC410]=0xcf; //运行状态参数
240 4 do{}while(busy==0);XBYTE[0XC411]=0x8b;
241 4 do{}while(busy==0);XBYTE[0XC412]=run_state;
242 4 do{}while(busy==0);XBYTE[0XC408]=0;
243 4 break;
244 4 case 0x02:do{}while(busy==0);XBYTE[0XC410]=0xcf; //特征参数
245 4 do{}while(busy==0);XBYTE[0XC411]=0x02;
246 4 for(i=0;i<5;i++){//开关机时间,关机后状态
247 5 do{}while(busy==0);XBYTE[0XC412+i]=XBYTE[0X801A+i];
248 5 }
249 4 do{}while(busy==0);XBYTE[0XC417]=XBYTE[0X8000]; //路口编号
250 4 do{}while(busy==0);XBYTE[0XC418]=XBYTE[0X8001];
251 4 do{}while(busy==0);XBYTE[0XC419]=XBYTE[0X8008]; //主从标志
252 4
253 4 for(i=0;i<17;i++){
254 5 do{}while(busy==0);XBYTE[0XC41a+i]=XBYTE[0X8009+i];
255 5 }
256 4 do{}while(busy==0);XBYTE[0XC41a+i]=XBYTE[0X801f];
257 4 i++;
258 4 do{}while(busy==0);XBYTE[0XC41a+i]=XBYTE[0X8020];
259 4 i++;
260 4 do{}while(busy==0);XBYTE[0XC41a+i]=XBYTE[0X8021];
261 4
262 4 do{}while(busy==0);XBYTE[0XC408]=0;
263 4
264 4 break;
265 4 case 0x0d:do{}while(busy==0);XBYTE[0XC410]=0xcf; //遥控阶段对应表
266 4 do{}while(busy==0);XBYTE[0XC411]=0x0d;
267 4 for(i=0;i<8;i++){
268 5 do{}while(busy==0);XBYTE[0XC412+i]=XBYTE[0X6d20+i];
269 5 }
270 4 do{}while(busy==0);XBYTE[0XC408]=0;
271 4 break;
272 4 case 0x03:num=XBYTE[0XC40c]*256+XBYTE[0XC40d]; //N
273 4 addr=XBYTE[0X3ea7]*256+XBYTE[0X3ea8]; //故障信息的结束地址
274 4 if(addr==0x3000)addr=0x3ea6;
275 4 addr=addr-15*num;
276 4 if(addr<0x3000)addr=0x3ea6-0x3000+addr;
277 4
278 4 do{}while(busy==0);XBYTE[0XC410]=0xcf; //故障查询 8F 03 N
279 4 do{}while(busy==0);XBYTE[0XC411]=0x03;
280 4
281 4 for(i=0;i<15;i++){
282 5 do{}while(busy==0);XBYTE[0XC412+i]=XBYTE[addr+i];
283 5 }
284 4 do{}while(busy==0);XBYTE[0XC408]=0;
285 4 break;
286 4 default:break;
287 4 }
288 3
289 3 break;
290 3 default:break;
291 3 }
292 2 // EA=1;
293 2 }
294 1 //设置
295 1
296 1 do{}while(busy==0);flag=XBYTE[0XC409];
297 1 // do{}while(busy==0);fu=XBYTE[0XC40a];
298 1 do{}while(busy==0);id=XBYTE[0XC40b];
299 1 do{}while(busy==0);idcode=XBYTE[0XC40c];
300 1 if(flag==1){
C51 COMPILER V6.02 LCDDRAM 09/28/2006 21:46:50 PAGE 6
301 2 // EA=0;
302 2 switch(id){
303 3 case 0x90: //do{}while(busy==0);XBYTE[0XC410]=0XC0;
304 3 XBYTE[0X8002]=XBYTE[0XC410];
305 3 XBYTE[0X8003]=XBYTE[0XC411];
306 3 XBYTE[0X8004]=XBYTE[0XC412];
307 3 XBYTE[0X8005]=XBYTE[0XC413];
308 3 XBYTE[0X8006]=XBYTE[0XC414];
309 3 XBYTE[0X8007]=XBYTE[0XC415];
310 3 XBYTE[0X8008]=XBYTE[0XC416];
311 3 XBYTE[0XC409]=0;
312 3 break;
313 3 case 0x92:
314 3 XBYTE[0XC410]=0x20; //最大输出通道数
315 3 XBYTE[0XC411]=0X20; //支持阶段表数
316 3 XBYTE[0XC412]=0X20; //一个阶段表支持的最大阶段数
317 3 XBYTE[0XC413]=0X20; //最大控制方案数
318 3 XBYTE[0XC414]=0X20; //最大日计划数
319 3 XBYTE[0XC415]=0X18; //一个日计划支持的最大时段
320 3 XBYTE[0X72E2]=XBYTE[0XC416]; //开机时间小时
321 3 XBYTE[0X72E3]=XBYTE[0XC417]; //开机时间分钟
322 3 XBYTE[0X72E4]=XBYTE[0XC418]; //关机时间小时
323 3 XBYTE[0X72E5]=XBYTE[0XC419]; //关机时间分钟
324 3 XBYTE[0X72E6]=XBYTE[0XC41a]; //关机后状态
325 3 XBYTE[0X8000]=XBYTE[0XC41b];
326 3 XBYTE[0X8001]=XBYTE[0XC41c];
327 3
328 3 XBYTE[0XC409]=0;
329 3 break;
330 3 case 0x93: //设置系统时间
331 3 XBYTE[0XC009]=XBYTE[0XC420]; //year
332 3 XBYTE[0XC008]=XBYTE[0XC421]; //month
333 3 XBYTE[0XC007]=XBYTE[0XC422]; //date
334 3 XBYTE[0XC004]=XBYTE[0XC423]; //hour
335 3 XBYTE[0XC002]=XBYTE[0XC424]; //min
336 3 XBYTE[0XC000]=XBYTE[0XC425]; //sec
337 3 XBYTE[0XC006]=XBYTE[0XC426]; //day
338 3
339 3 XBYTE[0XC409]=0;
340 3 break;
341 3 case 0x94:if(idcode==0){ //设置相位信息
342 4 EA=0;
343 4 j=XBYTE[0XC40D];
344 4 j=(j-1)*18;
345 4 for(i=0;i<18;i++)ch[i]=XBYTE[0XC420+i];
346 4 for(i=0;i<18;i++){
347 5 // do{}while(busy==0);
348 5 addr=0x5001+i+j;
349 5 XBYTE[addr]=ch[i];
350 5 k=eeprom_addr;
351 5 k=k+i+j+1;
352 5 XBYTE[k]=ch[i];
353 5 k=0;
354 5 do{k++; WatchDog = !WatchDog;}while(k<800);
355 5 }
356 4
357 4 EA=1 ; }else{ EA=0;
358 4
359 4 j=XBYTE[0XC40D];
360 4 j=(j-1)*18;
361 4 if(XBYTE[0XC412]==3)XBYTE[0XC413]=4; //相位属性
362 4 for(i=0;i<18;i++){
C51 COMPILER V6.02 LCDDRAM 09/28/2006 21:46:50 PAGE 7
363 5 // tt=0x5122+i+j;
364 5 // ttd=0XC410+i;
365 5 // do{}while(busy==0);
366 5 XBYTE[0x5122+i+j]=XBYTE[0XC420+i];
367 5 k=eeprom_addr;
368 5 k=k+i+j+0x122;
369 5 XBYTE[k]=XBYTE[0XC420+i];
370 5 k=0;
371 5 do{k++; WatchDog = !WatchDog;}while(k<800); //
372 5 }
373 4
374 4 EA=1; }
375 3
376 3 //do{}while(busy==0);
377 3 XBYTE[0XC409]=0;
378 3 //
379 3
380 3 if(idcode==0){
381 4 cpu_fpga_set(0x94,0x5001,289);
382 4 }else {
383 4 cpu_fpga_set(0x94,0x5122,289);
384 4 }
385 3
386 3 break;
387 3 case 0x95: idcode=XBYTE[0XC410];
388 3 j=(idcode-1)*98; //设置阶段表
389 3 EA=0;
390 3 for(i=0;i<98;i++)ch[i]=XBYTE[0XC410+i];
391 3 for(i=0;i<98;i++){
392 4 addr=0x5242+i+j;
393 4 if(i==4){
394 5 XBYTE[addr]=ch[i]-1;
395 5
396 5 }else{
397 5 XBYTE[addr]=ch[i];
398 5 }
399 4 k=eeprom_addr;
400 4 k=k+i+j+0x242;
401 4 XBYTE[k]=ch[i];
402 4 k=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -