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

📄 yejing320240.lst

📁 用C8051F020做的一个船进水检测系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
 279   2                      //0x51f9,5218,2a18
 280   2                      hi=temp1/256;
 281   2                      lo=temp1%256;
 282   2                      outcode(0x46);
 283   2                      outdata(lo);
 284   2                      outdata(hi);
 285   2                      outcode(0x42);
 286   2                      outdata(num16[c++]);    
 287   2                      outdata(num16[c++]);
 288   2                      temp1+=AP;//    d=d+1; 
 289   2              }
 290   1      }
 291          
 292          
 293          void drawtable()
 294          {  uchar i; 
 295   1              for(i=0;i<9;i++)
 296   1              fixline2(2184+i*5);
 297   1              for(i=0;i<5;i++)
 298   1              fixline(2184+i*1680);
 299   1      }
 300          void warn3(uchar canghao[],uchar j)
 301          {               uchar i,temp[2];
 302   1                      initram();          
C51 COMPILER V7.06   YEJING320240                                                          12/05/2005 18:17:14 PAGE 6   

 303   1                      drawtable();
 304   1                      showchinese32(345,shui);
 305   1                      showchinese32(349,wei);
 306   1                      showchinese32(353,yi);
 307   1                      showchinese32(357,chang);
 308   1                      showchinese32(361,cang);
 309   1                      showchinese32(365,wei);
 310   1                      for(i=0;i<j;i++)
 311   1              { temp[0]=(canghao[i]-1)/8;
 312   2                        temp[1]=(canghao[i]-1)%8;
 313   2                        shownumber16(2353+1680*temp[0]+temp[1]*5,temp[0]);
 314   2                         shownumber16(2355+1680*temp[0]+temp[1]*5,temp[1]);
 315   2                      }
 316   1      }
 317          
 318          void xszc()                                  //显示正常画面
 319          {           initram(); 
 320   1              showchinese32(1852,chuan);
 321   1                      showchinese32(1856,cang);
 322   1                      showchinese32(1860,jin);
 323   1                      showchinese32(1864,shui);
 324   1                      showchinese32(1868,jian);
 325   1                      showchinese32(1872,ce);
 326   1                      showchinese32(1876,xi);
 327   1                      showchinese32(1880,tong);
 328   1                      showchinese32(3872,shui);
 329   1                  showchinese32(3879,wei);
 330   1                      showchinese32(3886,zheng);
 331   1                      showchinese32(3893,chang);
 332   1                      shownumber16(6441,10);
 333   1                      shownumber16(6443,10);
 334   1                      shownumber16(6445,10);
 335   1                      shownumber16(6447,15);
 336   1                      shownumber16(6449,13);
 337   1                      shownumber16(6451,14);
 338   1                      shownumber16(6453,8);
 339   1                      shownumber16(6455,8);
 340   1                      shownumber16(6457,15);
 341   1                      shownumber16(6459,11);
 342   1                      shownumber16(6461,12);
 343   1      }
 344          
 345          void warn0(uchar canghao[],j)
 346          {uint addr;
 347   1           uchar i,temp;
 348   1               addr=2524;
 349   1              initram();  
 350   1          showchinese32(350,jing);
 351   1          showchinese32(358,gao);
 352   1               for (i=0;i<j;i++)
 353   1             {     temp=canghao[i]/10;
 354   2                   shownumber16(addr,temp);
 355   2                               temp=canghao[i]%10;
 356   2                           shownumber16(addr+2,temp);
 357   2                           showchinese32(addr+4,hao);
 358   2                               showchinese32(addr+8,chuan);
 359   2                               showchinese32(addr+12,cang);
 360   2                               showchinese32(addr+16,shui);
 361   2                               showchinese32(addr+20,wei);
 362   2                               showchinese32(addr+24,yi);
 363   2                               showchinese32(addr+28,chang);
 364   2                               if(i==0)
C51 COMPILER V7.06   YEJING320240                                                          12/05/2005 18:17:14 PAGE 7   

 365   2                           addr+=1848;
 366   2                               else addr+=1680;
 367   2                               _nop_(); _nop_();
 368   2                               _nop_(); _nop_();
 369   2                 }
 370   1      }
 371          /********************************/
 372          /*键盘扫描?*
 373          /********************************/
 374          uchar kbscan(void)
 375          {uchar t,temp=0;
 376   1      if((P1&0x0e)!=0x0e)
 377   1      {delay(5);
 378   2      if((P1&0x0e)!=0x0e)
 379   2      {t=P1&0x0e;
 380   3      switch (t)
 381   3      {case 0x0c:temp=1;break;
 382   4       case 0x0a:temp=2;break;
 383   4       //case 0x06:temp=3;break;
 384   4       default  : break;
 385   4      }
 386   3      }
 387   2      }
 388   1      return(temp);
 389   1      }
 390          /***************************************************
 391                             rs232
 392          ****************************************************/
 393          /****RS232初始化***************/
 394          void init232(void)
 395          {       TMOD=0x21;
 396   1              PCON=0x80;
 397   1          TH0=100;
 398   1              TL0=50;
 399   1              TH1=250;
 400   1              TL1=250; //波特率为1200
 401   1       //当TH1=244时为2400,当TH1=250时为4800,
 402   1       //当TH1=253时为9600
 403   1              TR1=1;
 404   1              TR0=1;
 405   1              ET0=1;
 406   1              SCON=0x50;
 407   1      }
 408          /****RS232发送数据****/
 409          void send232(uchar *p , uchar num)
 410          {       
 411   1              uchar i;//,temp;,count=0;
 412   1          EA=0;//关中断防止进入中断服务程序
 413   1              
 414   1          for(i=0;i<num;i++)
 415   1                       { SBUF= *(p+i) ;       //发送数据
 416   2                                      
 417   2                while(TI!=1); 
 418   2                 TI=0;
 419   2                        }
 420   1                     EA=1;
 421   1                                              
 422   1      }
 423          /*********************************************/
 424          void send(uchar num)
 425          {  EA=0;
 426   1         SBUF=num;
C51 COMPILER V7.06   YEJING320240                                                          12/05/2005 18:17:14 PAGE 8   

 427   1         while(TI==0);
 428   1         TI=0;
 429   1         EA=1;
 430   1      }
 431             
 432          
 433          /******************************************
 434                  GPRS
 435          ******************************************/
 436          void gprs(void) interrupt 1
 437          {TH0=20;
 438   1       TL0=100;
 439   1       switch(gprsflag++)
 440   1       {case 0: send232(at1,3);break;
 441   2        case 6: send232(at2,10);break;
 442   2        case 20:send232(at3,22);break;
 443   2        case 40:sendnum();gprsflag=0;EA=0; break;
 444   2        //case 70:gprsflag=0;break;
 445   2        default:break;
 446   2       }
 447   1      }
 448          /********************************************/
 449          void sendnum(void)
 450          {uchar i, k,canghao[24],j,temp[2],t;
 451   1        count(canghao,&j); 
 452   1        for(i=0;i<j;i++)
 453   1        { temp[0]=canghao[i]/10;
 454   2          temp[1]=canghao[i]%10;
 455   2           for(k=0;k<2;k++)
 456   2                 if(temp[k]!=0)
 457   2                    {t=temp[k]+0x30;
 458   3                        send(t);
 459   3                              }
 460   2              t=0x21;
 461   2              send(t);
 462   2        }
 463   1        t=0x1a;
 464   1        send(t);
 465   1      
 466   1      }
 467          /***********************************************/
 468          void kaiji()
 469          {      
 470   1                      initram();      
 471   1              showchinese32(2026,huan);
 472   1                      showchinese32(2031,ying);
 473   1                      showchinese32(2036,shi);
 474   1                      showchinese32(2041,yong);
 475   1                      showchinese32(4039,qian);
 476   1                      showchinese32(4043,jing2);
 477   1                      showchinese32(4047,dian);
 478   1                      showchinese32(4051,zi);
 479   1                      showchinese32(4055,ji);
 480   1                      showchinese32(4059,shu);  
 481   1              
 482   1                      shownumber16(6441,10);
 483   1                      shownumber16(6443,10);
 484   1                      shownumber16(6445,10);
 485   1                      shownumber16(6447,15);
 486   1                      shownumber16(6449,13);
 487   1                      shownumber16(6451,14);
 488   1                      shownumber16(6453,8);
C51 COMPILER V7.06   YEJING320240                                                          12/05/2005 18:17:14 PAGE 9   

 489   1                      shownumber16(6455,8);
 490   1                      shownumber16(6457,15);
 491   1                      shownumber16(6459,11);
 492   1                      shownumber16(6461,12);
 493   1                      delay(1000);
 494   1      }
 495          /**************************************************
 496                          计算舱号
 497          ***********************************************/
 498          void count(uchar canghao[],uchar*p)
 499          {uchar k,i,j;
 500   1       j=0;
 501   1       for(k=0;k<3;k++)
 502   1              {for (i=0;i<8;i++) 
 503   2                              {if ((d[k]>>i)&0x01)    
 504   3                                       canghao[j++]=i+1+8*k;
 505   3                              }
 506   2               }
 507   1         *p=j;
 508   1        }
 509          /**********************************************/
 510          void main()
 511          {  uchar k,j=0,f[3]={0} ;
 512   1              uchar canghao[24]={0};
 513   1         bit alarmflag0=0,alarmflag1=0;
 514   1          init232();
 515   1          alarm=0;
 516   1              initall();
 517   1              kaiji();
 518   1          CAddr=mode ;
 519   1              xszc();
 520   1              while(1)
 521   1              {   d[0]=PortC;d[1]=PortA;d[2]=0xff; 
 522   2              d[0]=d[0]^0xff;d[1]=d[1]^0xff; d[2]=d[2]^0xff;
 523   2                      if((d[0]==f[0])&&(d[1]==f[1])&&(d[2]==f[2]));
 524   2                      else
 525   2                      {       f[0]=d[0];f[1]=d[1];f[2]=d[2];
 526   3                              count(canghao,&j);
 527   3                      
 528   3                          if(j==0)     xszc();
 529   3                           else{
 530   4                                              if(j<5) warn0(canghao,j);
 531   4                                              else    warn3(canghao,j);
 532   4                                              EA=1;
 533   4                                 }
 534   3                       }
 535   2                       if(alarmflag1==0)
 536   2                         {
 537   3                  if(j==0)  alarmflag0=0,alarm=0;
 538   3                   if(j>0)  
 539   3                                if(alarmflag0==0) alarm=1;
 540   3                      }
 541   2                       
 542   2              k=kbscan();
 543   2                      switch (k)
 544   2                      {case 1:alarmflag1=alarmflag1^1;alarm=~alarm;delay(200);break;
 545   3                       case 2: alarmflag0=1; alarm=0;break;
 546   3                       default : break;
 547   3               }
 548   2              }
 549   1      }

C51 COMPILER V7.06   YEJING320240                                                          12/05/2005 18:17:14 PAGE 10  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2470    ----
   CONSTANT SIZE    =   4472    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4      98
   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 + -