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

📄 cmain.lst

📁 16x16单片机仿真LED点阵有卷动和移动两种闪法随便用
💻 LST
📖 第 1 页 / 共 2 页
字号:
 279          void carry();
 280          void t_state(void);     
 281          void clean(void);       //清空显存
 282          void slogan(uchar m);   
 283          void LeftMove(uchar *p);        
 284          void UpMove(void);      
 285          void WordUpMove(void);  
 286          void LoadNoSmoking(uchar *p);
 287          
 288          
 289          /***************************************/
 290          /**************主程序开始***************/
 291          /***************************************/
 292          void main(void)
 293          {
 294   1              uchar i;
 295   1              TMOD=0x11;                                                      
 296   1      //      TH0=TH1=TL0=TL1=0x00;
 297   1              SCON=0x00;
 298   1              EA=1;
 299   1              ES=0;
 300   1              while(1)
 301   1      {
 302   2                      clean();
 303   2      //              carry();        
C51 COMPILER V8.16   CMAIN                                                                 12/16/2008 14:05:47 PAGE 6   

 304   2                                                      
 305   2                      display(20);
 306   2                                              
 307   2      
 308   2              for(i=0;i<1;i++){
 309   3      //禁烟标志
 310   3                      LoadNoSmoking(no_smoking[0]);
 311   3                      pc[0]=&zero[0][0];
 312   3                      slogan(1);
 313   3      //请勿在车厢内吸烟。
 314   3                      pc[0]=&qing[0][0];pc[1]=&wu4[0][0];pc[2]=&zai[0][0];pc[3]=&che[0][0];pc[4]=&xiang[0][0];
 315   3                      pc[5]=&nei[0][0];pc[6]=&xi1[0][0];pc[7]=&yian[0][0];pc[8]=&zero[0][0];
 316   3                      slogan(9);
 317   3              }
 318   2                      
 319   2      
 320   2                      
 321   2                      
 322   2      //谢谢合作。            
 323   2                      pc[0]=&xie[0][0];pc[1]=&xie[0][0];pc[2]=&he[0][0];pc[3]=&zuo[0][0];
 324   2                      slogan(4);
 325   2                      
 326   2      //祝您旅途愉快!                 
 327   2                      pc[0]=&dh[0][0];pc[1]=&zhu[0][0];pc[2]=&nin[0][0];pc[3]=&lui[0][0];pc[4]=&tu[0][0];pc[5]=&yu[0][0];
 328   2                      pc[6]=&kuai[0][0];pc[7]=&well[0][0];
 329   2                      slogan(8);
 330   2                      //slogan(8);
 331   2                      pc[0]=&zero[0][0];
 332   2                      for(i=0;i<5;i++)
 333   2                              slogan(1);
 334   2                      
 335   2      //      
 336   2              }
 337   1      
 338   1      }
 339          
 340          
 341          
 342          /*###########子函数##########*/
 343          
 344           /*
 345          void timer0() interrupt 1 using 2{
 346          
 347                          ET0=0;
 348                          TR0=0;
 349          
 350          }
 351          
 352          void timer1() interrupt 3 using 3{
 353          
 354                          ET1=0;
 355                          TR1=0;
 356          
 357          }
 358          */
 359          
 360          void clean(void){
 361   1              uchar i,j;
 362   1              for(i=0;i<16;i++)
 363   1                      for(j=0;j<8;j++)
 364   1                              buffer[i][j]=0x00;
 365   1                              
C51 COMPILER V8.16   CMAIN                                                                 12/16/2008 14:05:47 PAGE 7   

 366   1              
 367   1      }
 368          
 369          
 370          void slogan(uchar m){   
 371   1              uchar i;
 372   1              for(i=0;i<m;i++)
 373   1                              LeftMove(pc[i]);
 374   1                              
 375   1              
 376   1      }
 377          
 378          
 379          
 380          void delay(uint t){                     
 381   1              int i,j;
 382   1              for(i=0;i<t;i++)
 383   1              for(j=0;j<10;j++);
 384   1      }
 385          
 386          
 387          
 388          
 389          void display(uint t){
 390   1              uint i;
 391   1              uchar j,k,a;
 392   1              uchar *disp;
 393   1              for(i=0;i<t;i++){                                               
 394   2                      a=0x80;
 395   2                      latch=0;
 396   2                      outen=1;                                                        
 397   2                      P0=0;
 398   2                      P2=0;
 399   2                      for(j=0;j<8;j++){
 400   3                              disp=buffer[j]+6;
 401   3                              for(k=0;k<7;k++){
 402   4                                      SBUF=*disp--;
 403   4                                      while(!TI){;}                           
 404   4                                      TI=0;
 405   4                              }
 406   3                              latch=1;
 407   3                              //delay(1);
 408   3                              latch=0;
 409   3                              //delay(1);
 410   3                              P0=a;
 411   3                              outen=0;                                                
 412   3                              delay(6);
 413   3                              a=a>>1;
 414   3                              //delay(2);
 415   3                              outen=1;
 416   3                      }
 417   2                      P0=0;
 418   2                      a=0x80;
 419   2                      for(j=0;j<8;j++){
 420   3                              disp=buffer[j+8]+6;
 421   3                              for(k=0;k<7;k++){
 422   4                                      SBUF=*disp--;
 423   4                                      while(!TI){;}                              
 424   4                                      TI=0;
 425   4                              }
 426   3                              latch=1;
 427   3                              //delay(1);
C51 COMPILER V8.16   CMAIN                                                                 12/16/2008 14:05:47 PAGE 8   

 428   3                              latch=0;
 429   3                              //delay(1);
 430   3                              P2=a;
 431   3                              outen=0;                                                
 432   3                              delay(6);
 433   3                              a=a>>1;
 434   3                              //delay(2);
 435   3                              outen=1;
 436   3                      }
 437   2              }
 438   1      }
 439          
 440          
 441          void move(void){
 442   1              uchar *m,i,j;
 443   1                      for(i=0;i<16;i++){
 444   2                              for(j=0;j<7;j++){       
 445   3                                      m=&buffer[i][j];
 446   3                                      *m=*m<<1;
 447   3                                      *m=*m|*(m+1)>>7;                        
 448   3                              }
 449   2                              buffer[i][7]=buffer[i][7]<<1; 
 450   2                      }
 451   1      }
 452          
 453           /*==============
 454          void carry(){                                   
 455                  uchar i,j,*car=wc;                                                                      
 456                          for(i=0;i<16;i++)       //16行
 457                                  for(j=0;j<4;j++)        //4 byte
 458                                          buffer[i][j+3]=*car++;  
 459                          
 460          }
 461          *////////////////////
 462          
 463          void LeftMove(uchar *p){
 464   1              uchar i;
 465   1              buffer[0][7]=buffer[1][7]=buffer[14][7]=buffer[15][7]=0x00;
 466   1              for(i=0;i<12;i++)
 467   1                      buffer[i+2][7]=*(p+2*i);        //装载高8位
 468   1              for(i=0;i<8;i++){       //左移8次,并显示
 469   2                      move();
 470   2                      display(1);
 471   2              }
 472   1              for(i=0;i<12;i++)
 473   1                      buffer[i+2][7]=*(p+1+2*i);      //装载低4位
 474   1              for(i=0;i<4;i++){       //左移4次,并显示
 475   2                      move();
 476   2                      display(1);
 477   2              }
 478   1      
 479   1      }
 480          
 481          
 482          
 483          void LoadNoSmoking(uchar *p){
 484   1              uchar i;
 485   1              //buffer[0][7]=buffer[1][7]=buffer[14][7]=buffer[15][7]=0x00;//清除0、1、14、15行
 486   1              //buffer[0][0]=buffer[1][0]=buffer[14][0]=buffer[15][0]=0x00;//清除号码
 487   1              for(i=0;i<16;i++)
 488   1                      buffer[i][7]=*(p+2*i);  //装载高8位
 489   1              for(i=0;i<8;i++){       //左移8次,并显示
C51 COMPILER V8.16   CMAIN                                                                 12/16/2008 14:05:47 PAGE 9   

 490   2                      move();
 491   2                      display(1);
 492   2              }
 493   1              for(i=0;i<16;i++)
 494   1                      buffer[i][7]=*(p+1+2*i);        //装载低4位
 495   1              for(i=0;i<8;i++){       //左移8次,并显示
 496   2                      move();
 497   2                      display(1);
 498   2              }
 499   1      
 500   1      }
 501          
 502          /*
 503          void UpMove(void){
 504                  uchar i,j;
 505                  for(i=0;i<15;i++){
 506                          for(j=0;j<7;j++)
 507                                  buffer[i][j]=buffer[i+1][j];
 508                          }
 509                          for(i=0;i<7;i++)
 510                                  buffer[15][i]=0x00;     
 511                          
 512                  }
 513          */
 514          
 515          /*
 516          void WordUpMove(void){
 517                  uchar i,j;
 518          
 519                  buffer[15][0]=*pc[0];
 520                  display(3);
 521                  UpMove();
 522                  buffer[15][0]=*(pc[0]+1);
 523                  display(3);
 524                  UpMove();
 525                  for(i=0;i<12;i++){
 526                          buffer[15][0]=*(pc[0]+2+i);
 527                          for(j=0;j<2;j++){
 528                                  buffer[15][1+3*j]=*(pc[1+2*j]+2*i);
 529                                  buffer[15][2+3*j]=*(pc[1+2*j]+1+2*i)|(*(pc[2+2*j]+2*i)>>4);
 530                                  buffer[15][3+3*j]=(*(pc[2+2*j]+2*i)<<4)|(*(pc[2+2*j]+1+2*i)>>4);
 531                          }
 532                          display(3);
 533                          UpMove();
 534                  }
 535                  //UpMove();
 536                  buffer[15][0]=*(pc[0]+14);
 537                  display(3);
 538                  UpMove();
 539                  buffer[15][0]=*(pc[0]+15);
 540                                          
 541                  display(150);
 542                  display(150);
 543                  //display(150);
 544          
 545          }
 546          */
 547          
 548          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V8.16   CMAIN                                                                 12/16/2008 14:05:47 PAGE 10  

   CODE SIZE        =    966    ----
   CONSTANT SIZE    =    776    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     48      26
   IDATA SIZE       =    128    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -