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

📄 main.lst

📁 一个使用USB下载51单片机程序的源程序
💻 LST
字号:
C51 COMPILER V7.07   MAIN                                                                  09/09/2004 18:15:25 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <at89x52.h>
   2          #include <intrins.h>
   3          #include "common.h"
   4          #include "pdiusbd12.h"
   5          #include "Int_D12.h"
   6          #include "AT89S52.h"
   7          BYTE page;
   8          
   9          void SystemInitial ()
  10          {
  11   1       EA=0;
  12   1       PSW=0;
  13   1       P0=P1=P2=P3=0xFF;
  14   1       Ret_I();
  15   1       Ret_I();
  16   1       Delay_ms(100);
  17   1       Init_D12();                                                                    // Initialize USB chipset
  18   1       IE=0x81;
  19   1       B_RST=0;
  20   1       programed=0;   
  21   1      }
  22          
  23          void main(void)
  24          {
  25   1              BYTE i;
  26   1              WORD p;
  27   1      
  28   1          SystemInitial ();
  29   1              while(1){       
  30   2                      if(b_rx_done){
  31   3                  //FlashLight ();
  32   3      
  33   3                              DISABLE_USBINT                                          // Disable USB interrupt
  34   3                              for(i=0; i<BUF_LEN; i++)
  35   3                                 buf[i]=rx_buf[i];
  36   3                              b_rx_done=0;
  37   3                              ENABLE_USBINT                                           // Enable USB interrupt
  38   3                              switch(buf[0]){
  39   4                              case 0: // 退出编程模式,目标CPU复位
  40   4                                      Reset_Target();
  41   4                                      Send_Data();
  42   4                                      break;
  43   4                              case 1: // 允许串行编程
  44   4                      device=buf[6];
  45   4                      if (programed)
  46   4                       {tx_buf[0]=1; tx_buf[1]=0xAA; tx_buf[2]=0xAA; Send_Data(); break;}
  47   4                      Enable_Program();
  48   4                                      Send_Data();
  49   4                                      break;
  50   4                              case 2: // 芯片擦除
  51   4                      if (!programed)                                 //芯片未进入编程模式
  52   4                        {
  53   5                         if (!Enable_Program())                       //芯片不能进入编程状态
  54   5                           {tx_buf[0]=2; tx_buf[1]=0xAA; tx_buf[2]=0xAA; Send_Data(); break;}
  55   5                         }  
C51 COMPILER V7.07   MAIN                                                                  09/09/2004 18:15:25 PAGE 2   

  56   4                                      Chip_Erase();
  57   4                                      Send_Data();
  58   4                                      break;
  59   4                              case 3: // 字节方式读
  60   4                                      for(i=0; i<4; i++)
  61   4                                              tx_buf[i]=buf[i];
  62   4                                      p=buf[3]*256+buf[2];
  63   4                                      for(i=0; i<buf[1]; i++){
  64   5                                              tx_buf[i+4]=Flash_ReadByte(p);
  65   5                                              p++;
  66   5                                      }
  67   4                                      Send_Data();
  68   4                                      break;
  69   4                              case 4: // 字节方式写
  70   4                                      p=buf[3]*256+buf[2];
  71   4                      switch (device){
  72   5                        case 0:
  73   5                        case 1:
  74   5                                          for(i=0; i<buf[1];i++){
  75   6                                                Flash_WriteByte(p, buf[i+4]);
  76   6                                                p++;
  77   6                            //tx_buf[i]=buf[i];
  78   6                                            }
  79   5                          tx_buf[0]=4;  tx_buf[1]=0xEE;  tx_buf[2]=0xEE;
  80   5                                          Send_Data();
  81   5                                          break;
  82   5                        case 2:
  83   5                          break;
  84   5                      }
  85   4                              case 5: // 写加密位
  86   4                                      Write_LockBit(buf[1]);
  87   4                                      tx_buf[0]=5;  tx_buf[1]=0xEE;  tx_buf[2]=0xEE;
  88   4                                      Send_Data();
  89   4                                      break;
  90   4                              case 6: // 读加密位
  91   4                                      break;
  92   4                              case 7: // 读电子标签
  93   4                                      break;
  94   4                              case 8: // 页方式读
  95   4                                      break;
  96   4                              case 9: // 页方式写
  97   4                      Flash_WritePage (buf[1],buf[2]);//buf[1]:mode,buf[2]:page,(ATMEGA8L:buf[3]->6位页内地址)
  98   4                      tx_buf[0]=9;  tx_buf[1]=0xEE;  tx_buf[2]=0xEE;
  99   4                                      Send_Data();
 100   4                                      break;
 101   4                  /*
 102   4                  case 10:
 103   4                      count=0;
 104   4                          for (page=0;page<128&&count<addrMax;page++){
 105   4                                pageaddr=count/64;
 106   4                                bCommand[2]=0;
 107   4                                bCommand[3]=pageaddr;
 108   4                                for (i=0;i<2;i++){
 109   4                                  addrinpage=count%64;
 110   4                                  bCommand[4]=addrinpage;
 111   4                                  for (j=5;j<37&&count<addrMax;j++)
 112   4                                        bCommand[j]=data[count++];
 113   4                                  MyWriteFile(DeviceNo,bCommand, rbuf,1);
 114   4                                  bCommand[2]=1;
 115   4                              }
 116   4                  */
 117   4                              }
C51 COMPILER V7.07   MAIN                                                                  09/09/2004 18:15:25 PAGE 3   

 118   3                      }
 119   2              }
 120   1      
 121   1      }
 122          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2392    ----
   CONSTANT SIZE    =    141    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     56      20
   IDATA SIZE       =   ----    ----
   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 + -