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

📄 main.lst

📁 /*双龙ISP板*/ //#define SOME_CHIP /*只支持少数几种芯片*/只支持生产所用的芯片
💻 LST
📖 第 1 页 / 共 2 页
字号:
 258   1              Delay(10);
 259   1              RESET = 0;
 260   1              Delay(10);
 261   1      
 262   1              wrser(0xac);            // SPI write (byte 1)
 263   1              wrser(0x53);            // SPI write (byte 2)
 264   1              if ( (device >= 0x20) && (device <= 0x7F) )
 265   1              {
 266   2                      count = 32;
 267   2                      do {
 268   3                              if (wrser(0) == 0x53)   // SPI read (byte 3)
 269   3                                      break;
 270   3                              wrser(0x00);            // SPI write (byte 4)
 271   3                              pulse_sck();
 272   3                              wrser(0xac);            // SPI write (byte 1)
 273   3                              wrser(0x53);            // SPI write (byte 2)
 274   3      
 275   3                      } while(--count);
 276   2              }else wrser(0x00);              // SPI write (byte 3)
 277   1      
 278   1              wrser(0x00);    // SPI write (byte 4)
 279   1              Delay(100);
 280   1      }
 281          
 282          void writeFLASHdelay(void)
 283          { //根据芯片类型,决定是否延时
 284   1              if(pgm_mode == 0)
 285   1              {
 286   2      #ifndef SL_BOARD
                              Delay(100);
              #else 
 289   2                      Delay(250);
 290   2      #endif
 291   2              }
 292   1      }
 293          
 294          unsigned char w17call(unsigned char param1)
 295          {
 296   1              wrser(0x30);
 297   1              wrser(0x00);
 298   1              wrser(param1);
 299   1              return wrser(0);
 300   1      }
 301          
 302          
 303          unsigned char device;
C51 COMPILER V7.09   MAIN                                                                  04/11/2005 16:01:24 PAGE 6   

 304          unsigned char LedData;
 305          
 306          void main(void)
 307          {
 308   1              LED_GREEN = 0;
 309   1              Delay(60254);
 310   1              LED_GREEN = 1;
 311   1              init_serial( );
 312   1              while(1)
 313   1              {
 314   2                      _nop_();
 315   2                      switch(getc())
 316   2                      {
 317   3                      case 0x1b:
 318   3                              LED_GREEN = 0;
 319   3                              break;
 320   3      
 321   3                      case 'T':
 322   3                              device = getc();
 323   3                              putc(0x0d);
 324   3                              break;
 325   3      
 326   3                      case 'S':
 327   3                              showID();
 328   3                              break;
 329   3      
 330   3                      case 'V':
 331   3                              putc(SW_MAJOR);
 332   3                              putc(SW_MINOR);
 333   3                              break;
 334   3      
 335   3                      case 'v':
 336   3                              putc(HW_MAJOR);
 337   3                              putc(HW_MINOR);
 338   3                              break;
 339   3      
 340   3                      case 't':
 341   3                              show_device();//Show supported devices
 342   3                              break;
 343   3      
 344   3                      case 'p':
 345   3                              putc('S');
 346   3                              break;
 347   3      
 348   3                      case 'a':
 349   3                              putc('Y');
 350   3                              break;
 351   3      
 352   3                      case 'x':
 353   3                              LedData = getc();
 354   3                              if(LedData == 1)
 355   3                                      LED_GREEN = 0 ;
 356   3                              else 
 357   3                                      LED_GREEN = 1 ;
 358   3                              putc(0x0d);
 359   3                              break;
 360   3                      
 361   3                      case 'y':
 362   3                              LedData = getc();
 363   3                              if(LedData == 1)
 364   3                                      LED_RED2 = 0 ;
 365   3                              else 
C51 COMPILER V7.09   MAIN                                                                  04/11/2005 16:01:24 PAGE 7   

 366   3                                      LED_RED2 = 1 ;
 367   3                              putc(0x0d);
 368   3                              break;
 369   3      
 370   3                      case 'P':
 371   3                              spiinit();
 372   3                              LED_RED1 = 0;
 373   3                              pgm_mode = check_device(device);
 374   3                              if ( pgm_mode != '?' )
 375   3                                      putc(0x0d);
 376   3                              else 
 377   3                                      putc('?');
 378   3                              break;
 379   3      
 380   3                      case 'C':       //Write program memory, high byte
 381   3                              wrser(0x48);
 382   3                              wrser(Addr_H);
 383   3                              wrser(Addr_L);
 384   3                              wrser(getc());
 385   3      
 386   3                              IncAddrAuto();
 387   3      
 388   3                              writeFLASHdelay();
 389   3                              putc(0x0d);
 390   3                              break;
 391   3      
 392   3                      case 'c':       //Write program memory, low byte
 393   3                              wrser(0x40);
 394   3                              wrser(Addr_H);
 395   3                              wrser(Addr_L);
 396   3                              wrser(getc());
 397   3      
 398   3                              writeFLASHdelay();
 399   3                              putc(0x0d);
 400   3                              break;
 401   3      
 402   3                      case 'R'://Read program memory
 403   3                              wrser(0x28);
 404   3                              wrser(Addr_H);
 405   3                              wrser(Addr_L);
 406   3                              putc( wrser ( 0 ) );
 407   3      
 408   3                              wrser(0x20);
 409   3                              wrser(Addr_H);
 410   3                              wrser(Addr_L);
 411   3                              putc( wrser( 0 ) );
 412   3      
 413   3                              IncAddrAuto();
 414   3                              break;
 415   3      
 416   3                      case 'A':
 417   3                              Addr_H = getc();
 418   3                              Addr_L = getc();
 419   3                              putc( 0x0d );
 420   3                              break;
 421   3      
 422   3                      case 'D':               //Write data memory
 423   3                              wrser(0xC0);
 424   3                              wrser(Addr_H);
 425   3                              wrser(Addr_L);
 426   3                              wrser(getc() );
 427   3                              Delay(250);
C51 COMPILER V7.09   MAIN                                                                  04/11/2005 16:01:24 PAGE 8   

 428   3                              IncAddrAuto();
 429   3                              putc(0x0d);
 430   3                              break;
 431   3      
 432   3                      case 'd':       //Read data memory
 433   3                              wrser(0xA0);
 434   3                              wrser(Addr_H);
 435   3                              wrser(Addr_L);
 436   3                              putc( wrser( 0 ) );
 437   3                              IncAddrAuto();
 438   3                              break;
 439   3      
 440   3                      case 'L':               //Leave programming mode
 441   3      
 442   3                              MOSI = 1;
 443   3                              MISO = 1;
 444   3                              SCK  = 1;
 445   3                              LED_RED1 = 1;
 446   3                              putc(0x0d);
 447   3                              RESET = 1;
 448   3                              break;
 449   3      
 450   3                      case 'e':               //Chip erase
 451   3                              wrser(0xAC);
 452   3                              wrser(0x80);
 453   3                              wrser(0x04);
 454   3                              wrser(0x00);
 455   3                              Delay(10);
 456   3                              putc(0x0d);
 457   3      
 458   3                              break;
 459   3      
 460   3                      case 'l':               //Write lock bits
 461   3                              wrser(0xAC);
 462   3                              wrser( (getc() & 0x6) | 0xe0 );
 463   3                              wrser(0x00);
 464   3                              wrser(0x00);
 465   3                              Delay(10);
 466   3                              putc(0x0d);
 467   3                              break;
 468   3      
 469   3                      case 's':               //Read signature bytes
 470   3                              putc (w17call(2) );
 471   3                              putc (w17call(1) );
 472   3                              putc (w17call(0) );
 473   3                              break;
 474   3      
 475   3                      case 'm':               //Write Program Memory Page
 476   3                              wrser(0x4c);
 477   3                              wrser(Addr_H);
 478   3                              wrser(Addr_L);
 479   3                              wrser(0);
 480   3      
 481   3                              Delay(10);
 482   3                              putc(0x0d);
 483   3                              break;
 484   3      
 485   3                      case ':':               //Universal Command
 486   3                              wrser(getc());
 487   3                              wrser(getc());
 488   3                              wrser(getc());
 489   3                              putc( wrser(0));
C51 COMPILER V7.09   MAIN                                                                  04/11/2005 16:01:24 PAGE 9   

 490   3                              Delay(10);
 491   3                              putc(0x0d);
 492   3                              break;
 493   3      
 494   3                      case '.':               //New Universal Command
 495   3                              wrser( getc() );
 496   3                              wrser( getc() );
 497   3                              wrser( getc() );
 498   3                              putc(wrser ( getc() ) );
 499   3                              Delay( 10 );
 500   3                              putc( 0x0d );
 501   3                              break;
 502   3      
 503   3                      default:
 504   3                              putc('?');
 505   3                      }
 506   2              }       
 507   1      }
 508          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1062    ----
   CONSTANT SIZE    =    184    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7    ----
   IDATA SIZE       =   ----    ----
   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 + -