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

📄 cfctrlv10.lst

📁 LED照明行业地砖及护栏控制器程序 从现况来看
💻 LST
📖 第 1 页 / 共 3 页
字号:
 256          
 257          ************************************************/
 258          void delayms( uchar ticks )
 259          {
 260   1      uint    Count;
 261   1      uchar   Tick;
 262   1      for (Tick=ticks;Tick>0;Tick--)
 263   1              {
 264   2              for (Count=0;Count<=500;Count++);
 265   2              wdgclr=!wdgclr;
 266   2              }
 267   1      
 268   1      }
 269          /************************************************************************/
 270          /* PROCEDURE:   Erase_One_Sector                                        */
 271          /*                                                                      */
 272          /* This procedure can be used to erase a total of 4096 bytes.           */
 273          /*                                                                      */
 274          /* Input:                                                               */
 275          /*      Dst     DESTINATION address where the erase operation starts    */
 276          /*                                                                      */
 277          /* Output:                                                              */
 278          /*      NONE                                                            */
 279          /************************************************************************/
 280          
 281          void Erase_One_Sector (uint  Sec)
 282          {
 283   1         // uchar xdata *Temp;
 284   1              //Temp=0x0000;
 285   1              FPGH=(page/256)&0x03;FPGL=5;
 286   1              XBYTE[0x8555]=0Xaa;
 287   1              FPGL=2;
 288   1              XBYTE[0x8aaa]=0x55;
 289   1              FPGL=5;
 290   1              XBYTE[0x8555]=0X80;
 291   1              FPGL=5;
 292   1              XBYTE[0x8555]=0Xaa;
 293   1              FPGL=2;
 294   1              XBYTE[0x8aaa]=0X55;
 295   1              FPGH=Sec/256;FPGL=Sec%256;
 296   1              XBYTE[0x8000]=0x30;
 297   1          delayms(25);       /* Delay time = Tse                 */
 298   1      }
 299          
 300          /************************************************************************/
 301          /* PROCEDURE:    Check_Toggle_Ready                                     */
 302          /*                                                                      */
 303          /* During the internal program cycle, any consecutive read operation    */
C51 COMPILER V7.06   CFCTRLV10                                                             10/27/2004 11:26:40 PAGE 6   

 304          /* on DQ6 will produce alternating 0's and 1's (i.e. toggling between   */
 305          /* 0 and 1). When the program cycle is completed, DQ6 of the data will  */
 306          /* stop toggling. After the DQ6 data bit stops toggling, the device is  */
 307          /* ready for next operation.                                            */
 308          /*                                                                      */
 309          /* Input:                                                               */
 310          /*           Dst        Must already be set-up by the caller            */
 311          /*                                                                      */
 312          /* Output:                                                              */
 313          /*           None                                                       */
 314          /************************************************************************/
 315          
 316          void Check_Toggle_Ready (uchar xdata  *Dst)
 317          {
 318   1              uchar Loop = TRUE;
 319   1              uchar  PreData;
 320   1              uchar  CurrData;
 321   1              uchar TimeOut = 0;
 322   1                      wdgclr=!wdgclr;
 323   1              PreData = *Dst;
 324   1              PreData = PreData & 0x40;
 325   1              while ((TimeOut< 0xff) && (Loop))
 326   1              {
 327   2                  CurrData = *Dst;
 328   2                  CurrData = CurrData & 0x40;
 329   2                  if (PreData == CurrData)
 330   2                          Loop = FALSE;   /* ready to exit the while loop */
 331   2                  PreData = CurrData;
 332   2                  TimeOut++;
 333   2                      wdgclr=!wdgclr;
 334   2              }
 335   1      }
 336          /************************************************************************/
 337          /* PROCEDURE:   Program_One_Byte                                        */
 338          /*                                                                      */
 339          /* This procedure can be used to program ONE byte of data to the        */
 340          /* 39VF016.                                                             */
 341          /*                                                                      */
 342          /* NOTE:  It is necessary to first erase the sector containing the      */
 343          /*        byte to be programmed.                                        */
 344          /*                                                                      */
 345          /* Input:                                                               */
 346          /*           Src     The BYTE which will be written to the 39VF016      */
 347          /*           Dst     DESTINATION address which will be written with the */
 348          /*                   data passed in from Src                            */
 349          /*                                                                      */
 350          /* Output:                                                              */
 351          /*           None                                                       */
 352          /************************************************************************/
 353          
 354          void Program_One_Byte (uchar Src, uchar xdata *Dst)
 355          {
 356   1      //      uchar xdata *Temp;
 357   1          uchar xdata *DestBuf;
 358   1              wdgclr=!wdgclr;
 359   1      
 360   1          DestBuf = Dst;
 361   1              FPGH=(page/256)&0x03;FPGL=5;
 362   1              XBYTE[0x8555]=0Xaa;
 363   1              FPGL=2;
 364   1              XBYTE[0x8aaa]=0x55;
 365   1              FPGL=5;
C51 COMPILER V7.06   CFCTRLV10                                                             10/27/2004 11:26:40 PAGE 7   

 366   1              XBYTE[0x8555]=0Xa0;
 367   1              FPGH=page/256;FPGL=page%256;
 368   1              *DestBuf=Src;
 369   1          Check_Toggle_Ready(DestBuf);    /* wait for TOGGLE bit to get ready */
 370   1      }
 371          
 372          /************************************************************************/
 373          /* PROCEDURE:   Program_One_Sector                                      */
 374          /*                                                                      */
 375          /* This procedure can be used to program a total of 4096 bytes of data  */
 376          /* to the SST39VF016.                                                   */
 377          /*                                                                      */
 378          /* NOTES: 1. It is necessary to first erase the sector before the       */
 379          /*        programming.                                                  */
 380          /*        2. This sample code assumes the destination address passed    */
 381          /*        from the calling function is the starting address of the      */
 382          /*        sector.                                                       */
 383          /*                                                                      */
 384          /* Input:                                                               */
 385          /*           Src     SOURCE address containing the data which will be   */
 386          /*                   written to the 39VF016                             */
 387          /*           Dst     DESTINATION address which will be written with the */
 388          /*                   data passed in from Src                            */
 389          /*                                                                      */
 390          /* Output:                                                              */
 391          /*           None                                                       */
 392          /************************************************************************/
 393          /*
 394          void Program_One_Sector (uint Dst)
 395          {
 396                  uchar xdata *SourceBuf;
 397                  uchar xdata *DestBuf;
 398          
 399                  uint Index;
 400                          page=Dst;
 401                  SourceBuf = 0x1000;
 402                  DestBuf = 0x8000;
 403          
 404                  Erase_One_Sector(Dst);          /* erase the sector first */
 405          /*
 406                  for (Index = 0; Index < 4096; Index++)
 407                          {
 408                                  Program_One_Byte( *SourceBuf, DestBuf);
 409                                  DestBuf++;
 410                                  SourceBuf++;
 411                          }
 412          }
 413          */
 414          void Program_One_Sector (uint Dst)
 415          {
 416   1              uchar xdata *SourceBuf;
 417   1              uchar xdata *DestBuf;
 418   1      
 419   1              uint Index;
 420   1                      page=Dst;
 421   1              SourceBuf = 0x1008;
 422   1              DestBuf = 0x8000;
 423   1      
 424   1              Erase_One_Sector(Dst);          /* erase the sector first */
 425   1      
 426   1              for (Index = 0; Index < 4096; Index++)
 427   1                      {
C51 COMPILER V7.06   CFCTRLV10                                                             10/27/2004 11:26:40 PAGE 8   

 428   2                              Program_One_Byte( *SourceBuf, DestBuf);
 429   2                              DestBuf++;
 430   2                              SourceBuf++;
 431   2                      }
 432   1      }
 433          
 434          /*
 435          void Program_One_Sector (uint Dst)
 436          {
 437          uchar xdata *SourceBuf;
 438          uchar xdata *DestBuf;
 439          uchar fpgh0,fpgh1,fpgl1;
 440          uint Index;
 441          page=Dst;   //sector number
 442          fpgh0=(page/256)&0x06;
 443          fpgh1=page/256;
 444          fpgl1=page%256;
 445          
 446          SourceBuf = 0x1008; //ram address
 447          DestBuf = 0x8000; //flash address 
 448          Erase_One_Sector(Dst);          /* erase the sector first */
 449          /*
 450          for (Index = 0; Index < 4096; Index++)
 451                  {
 452                     FPGH=fpgh0;FPGL=5;
 453                     XBYTE[0x8555]=0Xaa;
 454                     FPGL=2;
 455                     XBYTE[0x8aaa]=0x55;
 456                     FPGL=5;
 457                     XBYTE[0x8555]=0Xa0;
 458                     FPGH=fpgh1;FPGL=fpgl1;
 459                     *DestBuf=*SourceBuf;
 460                     Check_Toggle_Ready(DestBuf); 
 461                     DestBuf++;
 462                     SourceBuf++;
 463              }
 464          }
 465          */
 466          //***********************************************
 467          //                      接收数据
 468          //************************************************
 469          void rece_picture(bit type)
 470          {
 471   1      uint i;
 472   1      uchar xdata *op;
 473   1      uchar xdata *sp;        //0x1000 test 0x1000
 474   1      wdgclr=!wdgclr;
 475   1      if(type)
 476   1              op=0;
 477   1      else
 478   1              op=0x0000;
 479   1      sp=0x1008;
 480   1      for(i=0;i<1024;i++)*op++=*sp++; //写入RAM 1000H 单元 位图数据
 481   1      }
 482          //********************************************
 483          void    delay1s()
 484          {
 485   1      uint i,j;
 486   1      for(i=0;i<0xfff;i++)
 487   1              {for(j=0;j<0x8;j++);
 488   2              wdgclr=!wdgclr;
 489   2              }
C51 COMPILER V7.06   CFCTRLV10                                                             10/27/2004 11:26:40 PAGE 9   

 490   1      }
 491          //***********************************************
 492          void test()
 493          {
 494   1      //uchar xdata *rp;
 495   1      uchar xdata *p;
 496   1      //uchar xdata *sp;
 497   1      p=0x0000;
 498   1      memset(p,0x00,1024);
 499   1      delay1s();//1   
 500   1      p=0x0000;
 501   1      memset(p,255,255);
 502   1      delay1s();  //4
 503   1      
 504   1      p=0x0100;
 505   1      memset(p,255,255);
 506   1      delay1s();  //4
 507   1      
 508   1      p=0x0200;
 509   1      memset(p,255,255);
 510   1      delay1s();//8
 511   1      
 512   1      p=0x0300;
 513   1      memset(p,255,255);
 514   1      delay1s();//15
 515   1      }
 516          
 517          /*
 518          ************************************
 519                  通讯协议解析                    接收数据

⌨️ 快捷键说明

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