📄 main.lst
字号:
290 2 outdata(num16[c++]);
291 2 outdata(num16[c++]);
292 2 temp1+=AP;// d=d+1;
293 2 }
294 1 }
295
296
297 void drawtable()
298 { uchar i;
299 1 for(i=0;i<9;i++)
300 1 fixline2(2184+i*5);
301 1 for(i=0;i<5;i++)
302 1 fixline(2184+i*1680);
C51 COMPILER V7.06 MAIN 12/06/2005 13:07:29 PAGE 6
303 1 }
304 void warn3(uchar canghao[],uchar j)
305 { uchar i,temp[2];
306 1 initram();
307 1 drawtable();
308 1 showchinese32(345,shui);
309 1 showchinese32(349,wei);
310 1 showchinese32(353,yi);
311 1 showchinese32(357,chang);
312 1 showchinese32(361,cang);
313 1 showchinese32(365,wei);
314 1 for(i=0;i<j;i++)
315 1 { temp[0]=(canghao[i]-1)/8;
316 2 temp[1]=(canghao[i]-1)%8;
317 2 shownumber16(2353+1680*temp[0]+temp[1]*5,temp[0]);
318 2 shownumber16(2355+1680*temp[0]+temp[1]*5,temp[1]);
319 2 }
320 1 }
321
322 void xszc() //显示正常画面
323 { initram();
324 1 showchinese32(1852,chuan);
325 1 showchinese32(1856,cang);
326 1 showchinese32(1860,jin);
327 1 showchinese32(1864,shui);
328 1 showchinese32(1868,jian);
329 1 showchinese32(1872,ce);
330 1 showchinese32(1876,xi);
331 1 showchinese32(1880,tong);
332 1 showchinese32(3872,shui);
333 1 showchinese32(3879,wei);
334 1 showchinese32(3886,zheng);
335 1 showchinese32(3893,chang);
336 1 shownumber16(6441,10);
337 1 shownumber16(6443,10);
338 1 shownumber16(6445,10);
339 1 shownumber16(6447,15);
340 1 shownumber16(6449,13);
341 1 shownumber16(6451,14);
342 1 shownumber16(6453,8);
343 1 shownumber16(6455,8);
344 1 shownumber16(6457,15);
345 1 shownumber16(6459,11);
346 1 shownumber16(6461,12);
347 1 }
348
349 void warn0(uchar canghao[],j)
350 {uint addr;
351 1 uchar i,temp;
352 1 addr=2524;
353 1 initram();
354 1 showchinese32(350,jing);
355 1 showchinese32(358,gao);
356 1 for (i=0;i<j;i++)
357 1 { temp=canghao[i]/10;
358 2 shownumber16(addr,temp);
359 2 temp=canghao[i]%10;
360 2 shownumber16(addr+2,temp);
361 2 showchinese32(addr+4,hao);
362 2 showchinese32(addr+8,chuan);
363 2 showchinese32(addr+12,cang);
364 2 showchinese32(addr+16,shui);
C51 COMPILER V7.06 MAIN 12/06/2005 13:07:29 PAGE 7
365 2 showchinese32(addr+20,wei);
366 2 showchinese32(addr+24,yi);
367 2 showchinese32(addr+28,chang);
368 2 if(i==0)
369 2 addr+=1848;
370 2 else addr+=1680;
371 2 _nop_(); _nop_();
372 2 _nop_(); _nop_();
373 2 }
374 1 }
375 /********************************/
376 /*键盘扫描?*
377 /********************************/
378 uchar kbscan(void)
379 {uchar t,temp=0;
380 1 if((P1&0x0e)!=0x0e)
381 1 {delay(5);
382 2 if((P1&0x0e)!=0x0e)
383 2 {t=P1&0x0e;
384 3 switch (t)
385 3 {case 0x0c:temp=1;break;
386 4 case 0x0a:temp=2;break;
387 4 //case 0x06:temp=3;break;
388 4 default : break;
389 4 }
390 3 }
391 2 }
392 1 return(temp);
393 1 }
394 /***************************************************
395 rs232
396 ****************************************************/
397 /****RS232初始化***************/
398 void init232(void)
399 { TMOD=0x21;
400 1 PCON=0x80;
401 1 TH0=100;
402 1 TL0=50;
403 1 TH1=250;
404 1 TL1=250; //波特率为1200
405 1 //当TH1=244时为2400,当TH1=250时为4800,
406 1 //当TH1=253时为9600
407 1 TR1=1;
408 1 TR0=1;
409 1 ET0=1;
410 1 SCON=0x50;
411 1 }
412 /****RS232发送数据****/
413 void send232(uchar *p , uchar num)
414 {
415 1 uchar i;//,temp;,count=0;
416 1 EA=0;//关中断防止进入中断服务程序
417 1
418 1 for(i=0;i<num;i++)
419 1 { SBUF= *(p+i) ; //发送数据
420 2
421 2 while(TI!=1);
422 2 TI=0;
423 2 }
424 1 EA=1;
425 1
426 1 }
C51 COMPILER V7.06 MAIN 12/06/2005 13:07:29 PAGE 8
427 /*********************************************/
428 void send(uchar num)
429 { EA=0;
430 1 SBUF=num;
431 1 while(TI==0);
432 1 TI=0;
433 1 EA=1;
434 1 }
435
436
437 /******************************************
438 GPRS
439 ******************************************/
440 void gprs(void) interrupt 1
441 {
442 1 TH0=10;
443 1 TL0=100;
444 1 switch(gprsflag++)
445 1 {case 0: send232(at1,3);break;
446 2 case 6: send232(at2,10);break;
447 2 case 20:send232(at3,22);break;
448 2 case 40:sendnum();gprsflag=0;EA=0; break;
449 2 //case 70:gprsflag=0;break;
450 2 default:break;
451 2 }
452 1
453 1 }
454 /********************************************/
455 void sendnum(void)
456 {uchar i, k,canghao[24],j,temp[2],t;
457 1 countgprs(yangda,canghao,&j);
458 1 send232(at4,14);
459 1 for(i=0;i<j;i++)
460 1 { temp[0]=canghao[i]/10;
461 2 temp[1]=canghao[i]%10;
462 2 for(k=0;k<2;k++)
463 2 if(temp[k]!=0)
464 2 {t=temp[k]+0x30;
465 3 send(t);
466 3 }
467 2 t=' ';
468 2 send(t);
469 2 }
470 1 t=0x1a;
471 1 send(t);
472 1
473 1 }
474 /***********************************************/
475 void kaiji()
476 {
477 1 initram();
478 1 showchinese32(2026,huan);
479 1 showchinese32(2031,ying);
480 1 showchinese32(2036,shi);
481 1 showchinese32(2041,yong);
482 1 showchinese32(4039,qian);
483 1 showchinese32(4043,jing2);
484 1 showchinese32(4047,dian);
485 1 showchinese32(4051,zi);
486 1 showchinese32(4055,ji);
487 1 showchinese32(4059,shu);
488 1
C51 COMPILER V7.06 MAIN 12/06/2005 13:07:29 PAGE 9
489 1 shownumber16(6441,10);
490 1 shownumber16(6443,10);
491 1 shownumber16(6445,10);
492 1 shownumber16(6447,15);
493 1 shownumber16(6449,13);
494 1 shownumber16(6451,14);
495 1 shownumber16(6453,8);
496 1 shownumber16(6455,8);
497 1 shownumber16(6457,15);
498 1 shownumber16(6459,11);
499 1 shownumber16(6461,12);
500 1 delay(1000);
501 1 }
502 /**************************************************
503 计算舱号
504 ***********************************************/
505 void count(uchar canghao[],uchar*p)
506 {uchar k,i,j;
507 1 j=0;
508 1 for(k=0;k<3;k++)
509 1 {for (i=0;i<8;i++)
510 2 {if ((d[k]>>i)&0x01)
511 3 canghao[j++]=i+1+8*k;
512 3 }
513 2 }
514 1 *p=j;
515 1 }
516 /*******************************************/
517 void countgprs(uchar yangda[3],uchar canghao[],uchar*p)
518 {uchar k,i,j;
519 1 j=0;
520 1 for(k=0;k<3;k++)
521 1 {for (i=0;i<8;i++)
522 2 {if ((yangda[k]>>i)&0x01)
523 3 canghao[j++]=i+1+8*k;
524 3 }
525 2 }
526 1 *p=j;
527 1 }
528 /**********************************************/
529 void main()
530 { uchar k,j=0,f[3]={0} ;
531 1 uchar canghao[24]={0};
532 1 bit alarmflag0=0,alarmflag1=0;
533 1 init232();
534 1 alarm=0;
535 1 initall();
536 1 kaiji();
537 1 CAddr=mode ;
538 1 xszc();
539 1 while(1)
540 1 { d[0]=PortC;d[1]=PortA;d[2]=0xff;
541 2 d[0]=d[0]^0xff;d[1]=d[1]^0xff; d[2]=d[2]^0xff;
542 2 if((d[0]==f[0])&&(d[1]==f[1])&&(d[2]==f[2]));
543 2 else
544 2 {
545 3
546 3 f[0]=d[0];f[1]=d[1];f[2]=d[2];
547 3 count(canghao,&j);
548 3
549 3 if(j==0) xszc();
550 3 else{
C51 COMPILER V7.06 MAIN 12/06/2005 13:07:29 PAGE 10
551 4 if(j<5) warn0(canghao,j);
552 4 else warn3(canghao,j);
553 4 yangda[0]=d[0];yangda[1]=d[1];yangda[2]=d[2];
554 4 EA=1;
555 4 }
556 3 }
557 2 if(alarmflag1==0)
558 2 {
559 3 if(j==0) alarmflag0=0,alarm=0;
560 3 if(j>0)
561 3 if(alarmflag0==0) alarm=1;
562 3 }
563 2
564 2 k=kbscan();
565 2 switch (k)
566 2 {case 1:alarmflag1=alarmflag1^1;alarm=~alarm;delay(200);break;
567 3 case 2: alarmflag0=1; alarm=0;break;
568 3 default : break;
569 3 }
570 2 }
571 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2584 ----
CONSTANT SIZE = 4486 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 108
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -