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

📄 main.lst

📁 c8051f310xmodembootloader.rar
💻 LST
字号:
C51 COMPILER V8.16   MAIN                                                                  12/09/2009 15:02:55 PAGE 1   


C51 COMPILER V8.16, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE

line level    source

   1          //
   2          //
   3          //      CPU:   STC89C52RC
   4          //  FOSC:  22.1184MHz
   5          //  XRAM:  32K   @0x8000
   6          //  FLASH: 512K  @0x2000
   7          //
   8          #include<reg52.h>
   9          #include <string.h>
  10          #include <intrins.h>
  11          #include <stdio.h>
  12          #include <absacc.h>
  13          #include"FlashRam.h"
  14          #include"xmodem.h"
  15          
  16          extern unsigned char data FlashType;
  17          
  18          int TimeTick;   // 定时计数器
  19          int TimeSec;    // 秒
  20          bit busy;
  21          
  22          //STC89C52RC
  23          sfr P4    = 0xE8;
  24          //sfr AUXR  = 0x8E;
  25          sfr WDTCR = 0xE1;
  26          
  27          sbit led  = P1^4;
  28          sbit rst_pin = P1^5;
  29                                                                  // -,-,EN_WDT,CLR_WDT,IDLE_WDT,PS2,PS1,PS0
  30          //#define WDTCR_VAL     0x34    //       1      1        0       1  0   0
  31          #define WDTCR_VAL   0x14
  32          
  33          
  34          #define BAUD_128000_22118400    0xFFFB
  35          #define BAUD_115200_22118400    0xFFFA
  36          
  37          void dog(void)
  38          {
  39   1              WDTCR = WDTCR_VAL;
  40   1      }
  41          
  42          void init(void)
  43          {
  44   1              IE = 0;
  45   1              P0 = 0xFF;
  46   1              P1 = 0xFF;
  47   1              P2 = 0xFF;
  48   1              P3 = 0xFF;
  49   1              P4 = 0xFF;
  50   1      
  51   1              AUXR = 0x02;            // 禁用内部扩展RAM
  52   1              WDTCR = WDTCR_VAL;      // 打开内部看门狗
  53   1      
  54   1              PCON = 0x80 | PCON;
  55   1                                                      //RCAP2=65535 - Fosc/(32*Baud)
C51 COMPILER V8.16   MAIN                                                                  12/09/2009 15:02:55 PAGE 2   

  56   1              RCAP2H=0xFF;            //115200BPS @ 22.1184MHz
  57   1              RCAP2L=0xFA;
  58   1              T2CON=0x34;
  59   1              SCON = 0x52;
  60   1      //      ES = 1;
  61   1              TCON = 0x05;
  62   1      
  63   1              TMOD &= 0xf0;
  64   1              TMOD |= 0x01;
  65   1              //TH0 = (65535 - 36864)>>8;
  66   1              //TL0 = 65535 - 36864;
  67   1              TH0=TL0=0;
  68   1              //ET0 = 1;
  69   1              //TR0 = 1;
  70   1      
  71   1              //EA = 1;
  72   1      }
  73          
  74          void delay(int n)
  75          {
  76   1              int a,b,c;
  77   1              for (a=0; a<n; a++)
  78   1              {
  79   2                      for (b=0; b<5; b++)
  80   2                      {
  81   3                              led = 0;
  82   3                              for(c=0; c<800; c++)dog();
  83   3                              led = 1;
  84   3                              for(c=0; c<8000; c++)dog();
  85   3                      }
  86   2              }
  87   1      }
  88          
  89          void Mon_RstPin(void)
  90          {
  91   1              rst_pin = 1;
  92   1              rst_pin = 1;
  93   1              if (!rst_pin)
  94   1              {
  95   2                      IE = 0;
  96   2                      for(;;);
  97   2              }
  98   1      }
  99          
 100          
 101          void main(void)
 102          {
 103   1              unsigned char ctmp;
 104   1              init();
 105   1      
 106   1              delay(3);
 107   1              puts("\n\nFlash Programmer 1.00  <1K-xmodem>\n");
 108   1      
 109   1              puts("Test Flash.....");
 110   1      
 111   1              if (eepGetChipId())     // 检测FLASH存储器
 112   1              {
 113   2                      switch(FlashType)
 114   2                      {
 115   3                              case SST28SF040A:
 116   3                                      puts("SST28SF040A\n");
 117   3                                      break;
C51 COMPILER V8.16   MAIN                                                                  12/09/2009 15:02:55 PAGE 3   

 118   3                              case SST29SF040:
 119   3                                      puts("SST29SF040");
 120   3                                      break;
 121   3                              default:
 122   3                                      printf("UnKnow=%02bx\n",FlashType);
 123   3                                      break;
 124   3                      }
 125   2              }
 126   1              else
 127   1              {
 128   2                      puts("None Flash\n");
 129   2              }
 130   1      
 131   1              puts("\n \"s\" --- write a file to FLASH");
 132   1              puts("\n \"C\" --- read file from FLASH\n\n");
 133   1              delay(3);
 134   1              if(!led)
 135   1              {
 136   2                      eepEraseChip();
 137   2                      eepEraseSector(0);
 138   2                      eepProgramByte(0,0);
 139   2                      eepReadByte(0);
 140   2                      eepWriteRam(0,0);
 141   2                      Mon_RstPin();
 142   2              }
 143   1      
 144   1              while(1)
 145   1              {
 146   2                      dog();
 147   2                      ctmp = serial_get_char();
 148   2                      if (ctmp == 'C')
 149   2                      {
 150   3                              led=0;
 151   3                              xmodem_tx();
 152   3                              fclose();
 153   3                              led=1;
 154   3                      }
 155   2                      else if (ctmp == 's')
 156   2                      {
 157   3                              led=0;
 158   3                              xmodem_rx();
 159   3                              led=1;
 160   3                      }
 161   2              }
 162   1      
 163   1              ((void (code *)(void)) 0)();
 164   1      }
 165          
 166          //
 167          void isr_ext0(void) interrupt 0
 168          {
 169   1      }
 170          
 171          void isr_timer0(void) interrupt 1
 172          {
 173   1              ++TimeTick;
 174   1      
 175   1              if (TimeTick > 28 )
 176   1              {
 177   2                      TimeTick=0;
 178   2                      ++TimeSec;
 179   2      //              if(TimeSec>=60)
C51 COMPILER V8.16   MAIN                                                                  12/09/2009 15:02:55 PAGE 4   

 180   2      //              {
 181   2      //                      TimeSec=0;
 182   2      //              }
 183   2                      if (!busy)led = !led;
 184   2              }
 185   1              TF0=0;
 186   1      }
 187          
 188          void isr_ext1(void) interrupt 2
 189          {
 190   1      
 191   1      }
 192          
 193          void isr_timer1(void) interrupt 3
 194          {
 195   1      }
 196          
 197          void isr_uart(void) interrupt 4
 198          {
 199   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    391    ----
   CONSTANT SIZE    =    169    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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