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

📄 iapdx.lst

📁 P89V51RC2FA 单片机的IAP程序
💻 LST
字号:
C51 COMPILER V8.08   IAPDX                                                                 09/19/2008 10:58:25 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE IAPDX
OBJECT MODULE PLACED IN iapdx.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE iapdx.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "REG89V51.H"
   2          #include "V51IAP.h"
   3          
   4          /*
   5          函数:IAP_Wait()
   6          功能:等待IAP操作完成
   7          */
   8           void IAP_Wait()
   9          {
  10   1              while ( (FST & 0x04) != 0 );
  11   1      }
  12          
  13          
  14          /*
  15          函数:IAP_Read()
  16          功能:读取用户Flash中的代码(或数据)
  17          参数:
  18                  addr:用户Flash地址
  19          返回:
  20                  读取到的代码
  21          */
  22           unsigned char IAP_Read(unsigned int addr)
  23          {
  24   1              unsigned char c;
  25   1              UnionInt a;
  26   1              a.i = addr;
  27   1              FCF |= 0x40;
  28   1              FAH = a.CharPart.H;
  29   1              FAL = a.CharPart.L;
  30   1              FFS = 0x0C;
  31   1              c = FDAT;
  32   1              return c;
  33   1      }
  34          
  35          
  36          /*
  37          函数:IAP_Program()
  38          功能:烧录用户Flash代码,并立即校验
  39          参数:
  40                  addr:用户Flash地址
  41                  dat:要烧录的数据
  42          返回:
  43                  0:校验成功
  44                  1:校验失败
  45          说明:
  46                  烧录之前必须要确保被烧录存储单元已经被擦除
  47          */
  48          
  49           bit IAP_Program(unsigned int addr,unsigned char dat)
  50          {
  51   1              unsigned char d;
  52   1              UnionInt a;
  53   1              a.i = addr;
  54   1              FCF |= 0x40;
  55   1              FAH = a.CharPart.H;
C51 COMPILER V8.08   IAPDX                                                                 09/19/2008 10:58:25 PAGE 2   

  56   1              FAL = a.CharPart.L;
  57   1              FDAT = dat;
  58   1              FFS = 0x0E;
  59   1              IAP_Wait();
  60   1              d = IAP_Read(addr);
  61   1              if ( d == dat )
  62   1                      return 0;
  63   1              else
  64   1                      return 1;
  65   1      }
  66          
  67          
  68          
  69          
  70          /*
  71          函数:IAP_SectorEarse()
  72          功能:扇区擦除
  73          参数:
  74                  sector:扇区编号,取值0~511
  75          说明:
  76                  64KB的用户Flash共分为512个扇区,每个扇区128字节
  77                  执行扇区擦除操作后,要等待一段时间后才能进行烧录操作
  78          */
  79          void IAP_SectorErase(unsigned int sector)
  80          {
  81   1              UnionInt addr;
  82   1              if ( sector >= 512 ) return;
  83   1              addr.i = sector * 128;
  84   1              FCF |= 0x40;
  85   1              FAH = addr.CharPart.H;
  86   1              FAL = addr.CharPart.L;
  87   1              FFS = 0x0B;
  88   1              IAP_Wait();
  89   1      }
  90          
  91          
  92          /*
  93          函数:JumpToUser()
  94          功能:通过软复位跳到用户Flash的0x0000处执行程序
  95          */
  96          extern void JumpToUser()
  97          {
  98   1              FCF &= 0xFC;    //清除SWR和BSEL
  99   1              FCF |= 0x02;    //软件复位
 100   1              for (;;);               //停机
 101   1      }
 102          


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