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

📄 main.lst

📁 DownLoad_sst39sf010.zip--嵌入式系统中关于SST39SF010的FLASH的BOOTLOADER源程序(KC51)
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   MAIN                                                                  11/29/2004 16:44:51 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE main.c OPTIMIZE(4,SPEED) DEBUG OBJECTEXTEND CODE

stmt level    source

   1          /*********************************************************************
   2           
   3            (c) copyright Extell Company 2001 
   4            ALL RIGHTS RESERVED
   5           
   6           *********************************************************************
   7                  ESR-700 Demonstration Program for Voice Recognition Application
   8           *********************************************************************
   9          
  10            File:         main.c
  11           
  12            Project:      ESR-700 demo program for Demo Board DownLoad
  13           
  14            Description:  DownLoad Main Program
  15           
  16            Date:         Sep. 2001
  17             
  18           ********************************************************************/
  19          
  20          #include <stdio.h>
  21          #include "extell51.h"
  22          #include "main.h"
  23          
  24          
  25          #define BUFFER_LEN      64
  26          
  27          union BLOCK_SIZE {
  28                  unsigned short length;
  29                  struct {
  30                          unsigned char msb;
  31                          unsigned char lsb;
  32                  } div;
  33          };
  34          
  35          
  36          void delay(unsigned int count)
  37          {
  38   1              unsigned int data i;
  39   1              for(i=0;i<count;i++){}
  40   1      }
  41          
  42          
  43          void init()
  44          {
  45   1      
  46   1              // 12.288 MHz => 0xfb
  47   1              TH1 = 0xfb;             // f3(4800), fb(12800)
  48   1              TL1 = 0xff;
  49   1              PCON = 0x80;
  50   1              TMOD = 0x22;
  51   1              SM0 = 0;
  52   1              SM1 = 1;
  53   1              TI = 1;
  54   1              RI = 1;
  55   1              TR1 = 1;
C51 COMPILER V7.06   MAIN                                                                  11/29/2004 16:44:51 PAGE 2   

  56   1              REN = 1;
  57   1      
  58   1              // interrupt enable
  59   1              EA = 1;
  60   1              // edge sensitivie
  61   1              IT1 = 1;
  62   1      }
  63          
  64          void erase_flash()
  65          {
  66   1              unsigned short data addr;
  67   1              MXRAM = 1;
  68   1              for(addr=0;addr<=0xf000;addr+=0x1000)
  69   1              {
  70   2                      while(SectorErase(addr)!=OK);
  71   2                      if(addr==0xf000)break;
  72   2              }
  73   1              MXRAM = 0;
  74   1      }
  75          
  76          void main()
  77          {
  78   1              unsigned char data rdata;
  79   1              unsigned char data check_sum;
  80   1              unsigned short data flash_addr;
  81   1              union BLOCK_SIZE block;
  82   1              unsigned short data block_written;
  83   1              unsigned char data i;
  84   1              unsigned char data buffer[BUFFER_LEN];
  85   1              char mode;
  86   1              unsigned char led1;
  87   1              unsigned char count;
  88   1      
  89   1              init();
  90   1              P1 = 0xff;
  91   1      
  92   1              count = 0;
  93   1              while(1)
  94   1              {
  95   2                      while(1)
  96   2                      {
  97   3                              RI = 0;
  98   3                              while( !RI );
  99   3                              if(SBUF=='H')
 100   3                              {
 101   4                                      TI = 0;
 102   4                                      SBUF = 0x00;
 103   4                                      while( !TI );
 104   4              
 105   4                                      RI = 0;
 106   4              
 107   4                                      while( !RI );
 108   4                                      if(SBUF=='Y')
 109   4                                      {
 110   5                                              TI = 0;
 111   5                                              SBUF = 0x00;
 112   5                                              while( !TI );
 113   5              
 114   5                                              RI = 0;
 115   5                                              while( !RI );
 116   5                                              if(SBUF=='S') { break;}
 117   5                                      }
C51 COMPILER V7.06   MAIN                                                                  11/29/2004 16:44:51 PAGE 3   

 118   4                              }
 119   3                              P1 = 0xff;
 120   3                      }
 121   2              
 122   2                      P1 = 0xff;
 123   2                      TI = 0;
 124   2                      SBUF = 0X00;
 125   2                      while( !TI );
 126   2              
 127   2                      // ready to receive data
 128   2              
 129   2                      // receive bank index
 130   2      
 131   2                      RI = 0;
 132   2                      while( !RI );
 133   2                      
 134   2                      delay(100);
 135   2      
 136   2                      // erase selected bank flash
 137   2                      erase_flash();
 138   2      
 139   2                      TI = 0;
 140   2                      SBUF = 0x00;
 141   2                      while( !TI );
 142   2              
 143   2                      // receive block size infomation
 144   2                      P1_6 = 0;
 145   2              
 146   2                      RI = 0;
 147   2                      while( !RI );   
 148   2                      block.div.msb = SBUF;   
 149   2                      TI = 0;
 150   2                      SBUF = 0x00;
 151   2                      while( !TI );
 152   2              
 153   2                      RI = 0;
 154   2                      while( !RI );
 155   2                      block.div.lsb = SBUF;
 156   2                      TI = 0;
 157   2                      SBUF = 0x00;
 158   2                      while( !TI );
 159   2      
 160   2                      flash_addr = 0;
 161   2                      mode = 0;
 162   2                      block_written = 0;
 163   2      
 164   2                      led1 = 0xfe;
 165   2                      P1 = led1;
 166   2      
 167   2                      while(1)
 168   2                      {
 169   3                              // ready to receive !!
 170   3      
 171   3                              RI = 0;
 172   3                              while( !RI );
 173   3      
 174   3                              check_sum = 0;
 175   3      
 176   3                              TI = 0;
 177   3                              SBUF = 0x00;
 178   3                              while( !TI );
 179   3      
C51 COMPILER V7.06   MAIN                                                                  11/29/2004 16:44:51 PAGE 4   

 180   3                              for( i=0; i<BUFFER_LEN; i++)
 181   3                              {
 182   4                                      RI = 0;
 183   4                                      while( !RI );
 184   4      
 185   4                                      buffer[i] = SBUF;
 186   4                                      check_sum += SBUF;
 187   4                              }
 188   3      
 189   3                              // get check sum
 190   3                              RI = 0;
 191   3                              while( !RI );
 192   3                              rdata = SBUF;
 193   3      
 194   3                              if( rdata == check_sum )
 195   3                              {
 196   4                                      mode = 0;
 197   4                                      for( i=0; i<BUFFER_LEN; i++)
 198   4                                      {
 199   5                                              rdata = buffer[i];
 200   5                                              MXRAM = 1;
 201   5                                              FlashWrite(flash_addr,rdata);
 202   5                                              delay(5);
 203   5                                              MXRAM = 0;
 204   5                                              flash_addr++;
 205   5                                      }
 206   4                                      block_written ++;
 207   4                              }
 208   3                              else
 209   3                                      mode = 1;
 210   3      
 211   3                              if( block_written == block.length )
 212   3                              {
 213   4                                      P1 = 0xff;
 214   4                                      P1_0 = 0;
 215   4                                      P1_1 = 0;
 216   4      
 217   4                                      if( mode == 0 )
 218   4                                      {
 219   5                                              TI = 0;
 220   5                                              SBUF = 0x00;
 221   5                                              while( !TI );
 222   5                                      }
 223   4                                      else
 224   4                                      {
 225   5                                              TI = 0;
 226   5                                              SBUF = 0x0f;
 227   5                                              while( !TI );
 228   5                                      }
 229   4      
 230   4                                      break;
 231   4                              }
 232   3      
 233   3                              count ++;
 234   3      
 235   3                              if( count%12 == 0 )
 236   3                              {
 237   4                                      P1 = led1;
 238   4                                      led1 = led1 << 1;
 239   4                                      led1 = led1 | 0x01;
 240   4                                      if( led1==0xff )
 241   4                                              led1 = 0xfe;
C51 COMPILER V7.06   MAIN                                                                  11/29/2004 16:44:51 PAGE 5   

 242   4                              }
 243   3      
 244   3                              if( mode == 0 )
 245   3                              {
 246   4                                      TI = 0;
 247   4                                      SBUF = 0x00;
 248   4                                      while( !TI );
 249   4                              }
 250   3                              else

⌨️ 快捷键说明

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