⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 用C8051F020做的一个船进水检测系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -