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

📄 flash.lst

📁 用闪存实现单片机存储器的扩展 学会闪存的编程方法
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   FLASH                                                                 04/04/2009 12:20:10 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE FLASH
OBJECT MODULE PLACED IN Flash.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Flash.c BROWSE DEBUG OBJECTEXTEND CODE

stmt level    source

   1          /******************************************************/
   2          /*    文件名: Flash.c                                 */
   3          /*    功能描述:                                       */
   4          /******************************************************/
   5          
   6          #define START_ADDR     ((unsigned char volatile xdata *) 0x0000)
   7          #define ADDR_UNLOCK1   ((unsigned char volatile xdata *) 0x5555)
   8          #define ADDR_UNLOCK2   ((unsigned char volatile xdata *) 0x2AAA)
   9          
  10          sfr AUXR  = 0x8E;
  11          
  12          unsigned char DataBuf[64];
  13          
  14          void init_data()
  15          {
  16   1              unsigned char i;
  17   1              for(i=0; i<64; i++)
  18   1                      DataBuf[i] = i;
  19   1      }
  20          
  21          void delay()
  22          {
  23   1              unsigned int i;
  24   1              for(i=0; i<1000; i++);
  25   1      }
  26          
  27          void unprotect()                                // 取消软件数据保护
  28          {
  29   1              *ADDR_UNLOCK1 = 0xAA;
  30   1              *ADDR_UNLOCK2 = 0x55;
  31   1              *ADDR_UNLOCK1 = 0x80;
  32   1              *ADDR_UNLOCK1 = 0xAA;
  33   1              *ADDR_UNLOCK2 = 0x55;
  34   1              *ADDR_UNLOCK1 = 0x20;
  35   1      }
  36          
  37          void erase()                                    // 芯片擦除
  38          {
  39   1              *ADDR_UNLOCK1 = 0xAA;
  40   1              *ADDR_UNLOCK2 = 0x55;
  41   1              *ADDR_UNLOCK1 = 0x80;
  42   1              *ADDR_UNLOCK1 = 0xAA;
  43   1              *ADDR_UNLOCK2 = 0x55;
  44   1              *ADDR_UNLOCK1 = 0x10;
  45   1      }
  46          
  47          void unp_write(unsigned char *Buf, unsigned int len)    // 无保护写
  48          {
  49   1              unsigned int i;
  50   1              unsigned char *Des, *Src;
  51   1              Des = Buf;
  52   1              Src = DataBuf;
  53   1              for(i=0; i<len; i++)
  54   1              {
  55   2                      *Des = *Src;
C51 COMPILER V7.06   FLASH                                                                 04/04/2009 12:20:10 PAGE 2   

  56   2                      Des++;
  57   2                      Src++;
  58   2              }
  59   1      }
  60          
  61          void p_write(unsigned char *Buf, unsigned int len)              // 带保护写
  62          {
  63   1              unsigned int i;
  64   1              unsigned char *Des, *Src;
  65   1              Des = Buf;
  66   1              Src = DataBuf + 63;
  67   1              *ADDR_UNLOCK1 = 0xAA;
  68   1              *ADDR_UNLOCK2 = 0x55;
  69   1              *ADDR_UNLOCK1 = 0xA0;
  70   1              for(i=0; i<len; i++)
  71   1              {
  72   2                      *Des = *Src;
  73   2                      Des++;
  74   2                      Src--;
  75   2              }
  76   1      }
  77          
  78          void main()
  79          {
  80   1              AUXR = 0x2;
  81   1              init_data();
  82   1      
  83   1              p_write(START_ADDR, 64);                // 带保护写
  84   1              delay();
  85   1      
  86   1              unp_write(START_ADDR, 64);              // 不带保护写
  87   1              delay();
  88   1      
  89   1              unprotect();                                    // 去除保护
  90   1              unp_write(START_ADDR, 64);              
  91   1              delay();
  92   1      
  93   1              erase();                                                // 擦除 
  94   1      
  95   1              while(1);
  96   1      }
  97          
  98          
C51 COMPILER V7.06   FLASH                                                                 04/04/2009 12:20:10 PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION init_data (BEGIN)
                                           ; SOURCE LINE # 14
                                           ; SOURCE LINE # 15
                                           ; SOURCE LINE # 17
;---- Variable 'i' assigned to Register 'R7' ----
0000 E4                CLR     A
0001 FF                MOV     R7,A
0002         ?C0001:
                                           ; SOURCE LINE # 18
0002 7400        R     MOV     A,#LOW DataBuf
0004 2F                ADD     A,R7
0005 F8                MOV     R0,A
0006 A607              MOV     @R0,AR7
0008 0F                INC     R7
0009 BF40F6            CJNE    R7,#040H,?C0001
                                           ; SOURCE LINE # 19
000C         ?C0004:
000C 22                RET     
             ; FUNCTION init_data (END)

             ; FUNCTION delay (BEGIN)
                                           ; SOURCE LINE # 21
                                           ; SOURCE LINE # 22
                                           ; SOURCE LINE # 24
;---- Variable 'i' assigned to Register 'R6/R7' ----
0000 E4                CLR     A
0001 FF                MOV     R7,A
0002 FE                MOV     R6,A
0003         ?C0005:
0003 0F                INC     R7
0004 BF0001            CJNE    R7,#00H,?C0022
0007 0E                INC     R6
0008         ?C0022:
0008 BE03F8            CJNE    R6,#03H,?C0005
000B BFE8F5            CJNE    R7,#0E8H,?C0005
                                           ; SOURCE LINE # 25
000E         ?C0008:
000E 22                RET     
             ; FUNCTION delay (END)

             ; FUNCTION unprotect (BEGIN)
                                           ; SOURCE LINE # 27
                                           ; SOURCE LINE # 28
                                           ; SOURCE LINE # 29
0000 905555            MOV     DPTR,#05555H
0003 74AA              MOV     A,#0AAH
0005 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 30
0006 902AAA            MOV     DPTR,#02AAAH
0009 7455              MOV     A,#055H
000B F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 31
000C 905555            MOV     DPTR,#05555H
000F 7480              MOV     A,#080H
0011 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 32
0012 74AA              MOV     A,#0AAH
0014 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 33
C51 COMPILER V7.06   FLASH                                                                 04/04/2009 12:20:10 PAGE 4   

0015 902AAA            MOV     DPTR,#02AAAH
0018 7455              MOV     A,#055H
001A F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 34
001B 905555            MOV     DPTR,#05555H
001E 7420              MOV     A,#020H
0020 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 35
0021 22                RET     
             ; FUNCTION unprotect (END)

             ; FUNCTION erase (BEGIN)
                                           ; SOURCE LINE # 37
                                           ; SOURCE LINE # 38
                                           ; SOURCE LINE # 39
0000 905555            MOV     DPTR,#05555H
0003 74AA              MOV     A,#0AAH
0005 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 40
0006 902AAA            MOV     DPTR,#02AAAH
0009 7455              MOV     A,#055H
000B F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 41
000C 905555            MOV     DPTR,#05555H
000F 7480              MOV     A,#080H
0011 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 42
0012 74AA              MOV     A,#0AAH
0014 F0                MOVX    @DPTR,A

⌨️ 快捷键说明

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