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

📄 hldkzqv12.lst

📁 LED照明行业地砖及护栏控制器程序 从现况来看
💻 LST
📖 第 1 页 / 共 2 页
字号:
 300   1              FPGL=2;
 301   1              XBYTE[0x8aaa]=0x55;
 302   1              FPGL=5;
 303   1              XBYTE[0x8555]=0Xa0;
C51 COMPILER V7.06   HLDKZQV12                                                             12/21/2004 08:51:33 PAGE 6   

 304   1              FPGH=page/256;FPGL=page%256;
 305   1              *DestBuf=Src;
 306   1          Check_Toggle_Ready(DestBuf);    /* wait for TOGGLE bit to get ready */
 307   1      }
 308          
 309          
 310          /************************************************************************/
 311          /* PROCEDURE:   Program_One_Sector                                      */
 312          /*                                                                      */
 313          /* This procedure can be used to program a total of 4096 bytes of data  */
 314          /* to the SST39VF016.                                                   */
 315          /*                                                                      */
 316          /* NOTES: 1. It is necessary to first erase the sector before the       */
 317          /*        programming.                                                  */
 318          /*        2. This sample code assumes the destination address passed    */
 319          /*        from the calling function is the starting address of the      */
 320          /*        sector.                                                       */
 321          /*                                                                      */
 322          /* Input:                                                               */
 323          /*           Src     SOURCE address containing the data which will be   */
 324          /*                   written to the 39VF016                             */
 325          /*           Dst     DESTINATION address which will be written with the */
 326          /*                   data passed in from Src                            */
 327          /*                                                                      */
 328          /* Output:                                                              */
 329          /*           None                                                       */
 330          /************************************************************************/
 331          
 332          void Program_One_Sector (uint Dst)
 333          {
 334   1              uchar xdata *SourceBuf;
 335   1              uchar xdata *DestBuf;
 336   1      
 337   1              uint Index;
 338   1                      page=Dst;
 339   1              SourceBuf = 0x1000;
 340   1              DestBuf = 0x8000;
 341   1      
 342   1              Erase_One_Sector(Dst);          /* erase the sector first */
 343   1      
 344   1              for (Index = 0; Index < 4096; Index++)
 345   1                      {
 346   2                              Program_One_Byte( *SourceBuf, DestBuf);
 347   2                              DestBuf++;
 348   2                              SourceBuf++;
 349   2                      }
 350   1      }
 351          
 352          //***********************************************
 353          //                      接收数据
 354          //************************************************
 355          void rece_picture(bit type)
 356          {
 357   1      uchar i;
 358   1      uchar xdata *op;
 359   1      uchar idata *sp;        //0x1000 test 0x1000
 360   1      //FPGH=send_buf[4];
 361   1      //FPGL=send_buf[3];
 362   1      if(type)
 363   1              op=(send_buf[5]*64);
 364   1      else
 365   1              op=(send_buf[5]*64)|0x1000;
C51 COMPILER V7.06   HLDKZQV12                                                             12/21/2004 08:51:33 PAGE 7   

 366   1      
 367   1      sp=&send_buf[8];
 368   1      for(i=0;i<64;i++)*op++=*sp++;   //写入RAM 1000H 单元 位图数据
 369   1      }
 370          //********************************************
 371          void    delay1s()
 372          {
 373   1      uint i,j;
 374   1      for(i=0;i<0xfff;i++)
 375   1              {for(j=0;j<0x8;j++);
 376   2              wdgclr=!wdgclr;
 377   2              }
 378   1      }
 379          //***********************************************
 380          void test()
 381          {
 382   1      //uchar xdata *rp;
 383   1      uchar xdata *p;
 384   1      //uchar xdata *sp;
 385   1      p=0x0000;
 386   1      memset(p,0x00,1024);
 387   1      delay1s();//1   
 388   1      p=0x0000;
 389   1      memset(p,255,255);
 390   1      delay1s();  //4
 391   1      
 392   1      p=0x0100;
 393   1      memset(p,255,255);
 394   1      delay1s();  //4
 395   1      
 396   1      p=0x0200;
 397   1      memset(p,255,255);
 398   1      delay1s();//8
 399   1      
 400   1      p=0x0300;
 401   1      memset(p,255,255);
 402   1      delay1s();//15
 403   1      /*
 404   1      p=0x0000;
 405   1      memset(p,0x00,1024);
 406   1      p=0x1000;
 407   1      memset(p,0x80,4096);
 408   1      Program_One_Sector(0);
 409   1      delay1s();//1   
 410   1      
 411   1      FPGH=0;FPGL=0;
 412   1      p=0x0000;
 413   1      sp=0x8000;
 414   1      rp=memcpy(p,sp,255);
 415   1      delay1s();//1   
 416   1      p=0x0100;
 417   1      sp=0x8100;
 418   1      rp=memcpy(p,sp,255);
 419   1      delay1s();//1
 420   1      p=0x0200;
 421   1      sp=0x8200;
 422   1      rp=memcpy(p,sp,255);
 423   1      delay1s();//1
 424   1      p=0x0300;
 425   1      sp=0x8300;
 426   1      rp=memcpy(p,sp,255);
 427   1      delay1s();//1XS
C51 COMPILER V7.06   HLDKZQV12                                                             12/21/2004 08:51:33 PAGE 8   

 428   1      */
 429   1      }
 430          
 431          /*
 432          ************************************
 433                  通讯协议解析                    接收数据
 434          *******************************************8
 435          */
 436          void receive(void)
 437          {
 438   1      uchar *p;
 439   1      wdgclr=!wdgclr;
 440   1      /*
 441   1      uchar xdata *p;
 442   1      uchar xdata *rp;
 443   1      uchar xdata *sp;*/
 444   1      switch(send_buf[2])//命令标志
 445   1              {
 446   2              case 1:rec_sta=1;TR0=0;//进入接收状态
 447   2                      break;  
 448   2              case 2:                 //接收数据
 449   2                      rece_picture(0);
 450   2                      break;  
 451   2              case 0:                 //加载某一帧数据到显存
 452   2                      dis_page=send_buf[4]*256+send_buf[3];
 453   2                      load_data(dis_page);
 454   2                      break;  
 455   2              case    3:              //将一扇区数据写闪存
 456   2                      Program_One_Sector(send_buf[4]*256+send_buf[3]);
 457   2                      break;
 458   2              case    4:              //测试
 459   2                      test();
 460   2                      break;
 461   2              case 5:         //接收到显存
 462   2                      rece_picture(1);
 463   2              case 6:         //同步信号
 464   2                      dis_page=send_buf[4]*256+send_buf[3];
 465   2                      ms=0;
 466   2              break;
 467   2              case 7:                 //进入自动播放
 468   2                      page_sta=send_buf[4]*256+send_buf[3];
 469   2                      dis_page=page_sta;
 470   2                      page_end=send_buf[6]*256+send_buf[5];
 471   2                      send_buf[7]=0xaa;
 472   2                      zhepe=100/send_buf[8];
 473   2                      p=&send_buf[3];
 474   2                      Write24c02(p,0,6);
 475   2                      ms=0;
 476   2                      TR0=1;
 477   2              break;
 478   2              case 8:
 479   2                      Erase_One_Sector (send_buf[4]*256+send_buf[3]);
 480   2              break;
 481   2              default:break;
 482   2              }
 483   1      }
 484          
 485          
 486          
 487          //********************************************
 488          //                                       主程序
 489          //********************************************
C51 COMPILER V7.06   HLDKZQV12                                                             12/21/2004 08:51:33 PAGE 9   

 490          void main()
 491          {
 492   1      uchar Temp[6];
 493   1      uchar *p;
 494   1      PS=1;
 495   1      ES=0;
 496   1      SM0=1;
 497   1      SM1=1;
 498   1      T2CON=0X30;
 499   1      RCAP2H=0XFF;
 500   1      TH2=0XFF;
 501   1      RCAP2L=0Xfb;    //9600bps= c4  115200bps =fb 57600= f6 19200 = e2
 502   1      TL2=0Xfb;
 503   1      TR2=1;
 504   1      
 505   1      REN=1;
 506   1      TMOD=0x05;      //定时器0 模式1 外部时钟
 507   1      //TMOD=0x01;    //定时器0 模式1 外部时钟
 508   1      TL0=V_TL0;
 509   1      TH0=V_TH0;
 510   1      //TR0=1;
 511   1      ET0=1;
 512   1      ES=1;
 513   1      EA=1;
 514   1      SM2=1;
 515   1      ADD=(~P1)&0x1f;
 516   1      //ADD=1;
 517   1      frameok=0;
 518   1      test();
 519   1      p=&Temp[0];
 520   1      Read24c02(p,0,6);
 521   1      if(Temp[4]==0xaa)
 522   1              {
 523   2              page_sta=Temp[1]*256+Temp[0];
 524   2              page_end=Temp[3]*256+Temp[2];
 525   2              dis_page=page_sta;
 526   2              zhepe=100/Temp[5];
 527   2              TR0=1;
 528   2              }
 529   1      while(1)
 530   1              {
 531   2              wdgclr=!wdgclr;
 532   2              if(timout)
 533   2                      {load_data(dis_page);dis_page++;timout=0;
 534   3                      if(dis_page>page_end)dis_page=page_sta;
 535   3                      }
 536   2      
 537   2              if(frameok)
 538   2                      {receive();frameok=0;}
 539   2              }//while(1)
 540   1      }
 541          /************************************************/
 542          void send_delay( void)
 543          {
 544   1      uint    Count;
 545   1      for (Count=0;Count<=200;Count++);
 546   1      
 547   1      }
 548          //*****************************************
 549          //                      串口中断服务程序
 550          //*****************************************
 551          void send(void) interrupt  4 
C51 COMPILER V7.06   HLDKZQV12                                                             12/21/2004 08:51:33 PAGE 10  

 552          {
 553   1      uchar d;
 554   1      if(!TI && RI && !frameok)
 555   1       {RI=0;
 556   2        d=SBUF;
 557   2              if(pointer==0)
 558   2              {if(d==ADD)
 559   3                              {subchk=d;send_buf[0]=d;TB8=1;senden=1;
 560   4                              send_delay();SBUF=d;while(!TI);TI=0;send_delay();
 561   4                              senden=0;SM2=0;TB8=0;pointer++;}//71
 562   3                      else if(d==0xff)
 563   3                              {subchk=d;SM2=0;pointer++;}
 564   3                              
 565   3              }
 566   2        else 
 567   2                      {if(pointer==72)
 568   3              {send_buf[pointer]=d;
 569   4                              if(d==subchk)
 570   4                                      {senden=1;send_delay();SBUF=subchk;while(!TI);send_delay();senden=0;TI=0;frameok=1;}
 571   4                              else
 572   4                                      {senden=1;send_delay();SBUF=~subchk;while(!TI);send_delay();TI=0;senden=0;}
 573   4                              SM2=1;pointer=0;
 574   4                              }
 575   3              else
 576   3                {send_buf[pointer]=d;subchk+=d;pointer++;}
 577   3                      }        
 578   2        }//end if
 579   1      }
 580          //*************************************
 581          void timer1() interrupt  1  
 582          {TL0=V_TL0;
 583   1      TH0=V_TH0;
 584   1      ms++;
 585   1      if(ms>zhepe)
 586   1              {timout=1;
 587   2              ms=0;
 588   2              }
 589   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1392    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17      26
   IDATA SIZE       =     73    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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