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

📄 main.lst

📁 This example demonstrates how to erase, write, and read the on-chip 640-byte EEPROM Data Memory of t
💻 LST
📖 第 1 页 / 共 3 页
字号:
  15   1      unsigned char dbuf;
  16   1      unsigned char rbuf;
  17   1      
  18   1      /*-----------------------------------------------
  19   1      Erase the EEPROM
  20   1      -----------------------------------------------*/
  21   1      flash_erase_all ();
  22   1      
  23   1      /*-----------------------------------------------
  24   1      Write values into all of the EEPROM
  25   1      -----------------------------------------------*/
  26   1      for (dbuf=0, i=flash_size (); i>0; i--, dbuf++)
  27   1        {
  28   2        flash_write (&dbuf, sizeof (dbuf), i-1);
  29   2        }
  30   1      
  31   1      /*-----------------------------------------------
  32   1      Read values from EEPROM and compare them to the
  33   1      original value that was written.  If they don't
  34   1      match, return the failing address.
  35   1      -----------------------------------------------*/
  36   1      for (dbuf=0, i=flash_size (); i>0; i--, dbuf++)
  37   1        {
  38   2        flash_read (&rbuf, sizeof (dbuf), i-1);
  39   2        if (rbuf != dbuf)
  40   2          {
  41   3          return (i-1);
  42   3          }
  43   2        }
  44   1      
  45   1      /*-----------------------------------------------
  46   1      -1 indicates that everything matched
  47   1      -----------------------------------------------*/
  48   1      return (-1);
  49   1      }
  50          
  51          /*-----------------------------------------------------------------------------
  52          -----------------------------------------------------------------------------*/
  53          void main (void)
  54          {
  55   1      long addr;
  56   1      
  57   1      /*-----------------------------------------------
  58   1      If we not talking to the monitor, then program
  59   1      the on-chip UART.
  60   1      -----------------------------------------------*/
  61   1      #ifndef MON51
  62   1      SCON  = 0x50;   // SCON: mode 1, 8-bit UART, enable rcvr
  63   1      TMOD |= 0x20;   // TMOD: timer 1, mode 2, 8-bit reload
  64   1      TH1   = 0xF4;   // TH1:  reload value for 2400 baud @ 11.0592 MHz
  65   1      TR1   = 1;      // TR1:  timer 1 run
  66   1      TI    = 1;      // TI:   set TI to send first char of UART
  67   1      #endif
  68   1      
  69   1      /*-----------------------------------------------
  70   1      Test the EEPROM and print the results.
  71   1      -----------------------------------------------*/
  72   1      printf ("Testing the ERPROM\n");
  73   1      addr = test_eeprom ();
  74   1      
  75   1      if (addr == -1)
C51 COMPILER V7.00 Beta 5  MAIN                                                            04/19/2002 14:12:10 PAGE 6   

  76   1        {
  77   2        printf ("ERPROM test passed!\n");
  78   2        }
  79   1      else
  80   1        {
  81   2        printf ("ERPROM test failed at %lu\n", addr);
  82   2        }
  83   1      
  84   1      /*-----------------------------------------------
  85   1      -----------------------------------------------*/
  86   1      printf ("Erasing the EEPROM\n");
  87   1      flash_erase_all ();
  88   1      
  89   1      printf ("EEPROM Size = %lu bytes\n", (unsigned long) flash_size ());
  90   1      
  91   1      printf ("Writing \"%s\" to the EEPROM\n", msgbuf);
  92   1      flash_write (msgbuf, sizeof (msgbuf), 0);
  93   1      
  94   1      flash_read  (strbuf, sizeof (msgbuf), 0);
  95   1      printf ("Read    \"%s\" from the EEPROM\n", strbuf);
  96   1      
  97   1      printf ("Erasing the EEPROM\n");
  98   1      flash_erase_all ();
  99   1      
 100   1      /*-----------------------------------------------
 101   1      -----------------------------------------------*/
 102   1      while (1);
 103   1      }
 104          
 105          
 106          /*-----------------------------------------------------------------------------
 107          -----------------------------------------------------------------------------*/
 108          
C51 COMPILER V7.00 Beta 5  MAIN                                                            04/19/2002 14:12:10 PAGE 7   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION Com000F (BEGIN)
0000         L?0016:
0000 E500        R     MOV     A,i+03H
0002 24FF              ADD     A,#0FFH
0004 F500        R     MOV     i+03H,A
0006 E500        R     MOV     A,i+02H
0008 34FF              ADDC    A,#0FFH
000A F500        R     MOV     i+02H,A
000C E500        R     MOV     A,i+01H
000E 34FF              ADDC    A,#0FFH
0010 F500        R     MOV     i+01H,A
0012 E500        R     MOV     A,i
0014 34FF              ADDC    A,#0FFH
0016 F500        R     MOV     i,A
0018 0500        R     INC     dbuf
001A 22                RET     
001B         L?0017:
001B E4                CLR     A
001C FF                MOV     R7,A
001D FE                MOV     R6,A
001E FD                MOV     R5,A
001F FC                MOV     R4,A
0020 AB00        R     MOV     R3,i+03H
0022 AA00        R     MOV     R2,i+02H
0024 A900        R     MOV     R1,i+01H
0026 A800        R     MOV     R0,i
0028 D3                SETB    C
0029 020000      E     LJMP    ?C?ULCMP
             ; FUNCTION Com000F (END)

             ; FUNCTION test_eeprom (BEGIN)
                                           ; SOURCE LINE # 12
                                           ; SOURCE LINE # 13
                                           ; SOURCE LINE # 21
0000 120000      E     LCALL   flash_erase_all
                                           ; SOURCE LINE # 26
0003 120000      R     LCALL   L?0018
0006         ?C0001:
0006 120000      R     LCALL   L?0017
0009 402E              JC      ?C0002
                                           ; SOURCE LINE # 27
                                           ; SOURCE LINE # 28
000B 7B00              MOV     R3,#00H
000D 7A00        R     MOV     R2,#HIGH dbuf
000F 7900        R     MOV     R1,#LOW dbuf
0011 E500        R     MOV     A,i+03H
0013 24FF              ADD     A,#0FFH
0015 F500        E     MOV     ?_flash_write?BYTE+0AH,A
0017 E500        R     MOV     A,i+02H
0019 34FF              ADDC    A,#0FFH
001B F500        E     MOV     ?_flash_write?BYTE+09H,A
001D E500        R     MOV     A,i+01H
001F 34FF              ADDC    A,#0FFH
0021 F500        E     MOV     ?_flash_write?BYTE+08H,A
0023 E500        R     MOV     A,i
0025 34FF              ADDC    A,#0FFH
0027 F500        E     MOV     ?_flash_write?BYTE+07H,A
0029 7F01              MOV     R7,#01H
002B 7E00              MOV     R6,#00H
C51 COMPILER V7.00 Beta 5  MAIN                                                            04/19/2002 14:12:10 PAGE 8   

002D 7D00              MOV     R5,#00H
002F 7C00              MOV     R4,#00H
0031 120000      E     LCALL   _flash_write
                                           ; SOURCE LINE # 29
0034 120000      R     LCALL   L?0016
0037 80CD              SJMP    ?C0001
0039         ?C0002:
                                           ; SOURCE LINE # 36
0039 120000      R     LCALL   L?0018
003C         ?C0004:
003C 120000      R     LCALL   L?0017
003F 4049              JC      ?C0005
                                           ; SOURCE LINE # 37
                                           ; SOURCE LINE # 38
0041 7B00              MOV     R3,#00H
0043 7A00        R     MOV     R2,#HIGH rbuf
0045 7900        R     MOV     R1,#LOW rbuf
0047 E500        R     MOV     A,i+03H
0049 24FF              ADD     A,#0FFH
004B F500        E     MOV     ?_flash_read?BYTE+0AH,A
004D E500        R     MOV     A,i+02H
004F 34FF              ADDC    A,#0FFH
0051 F500        E     MOV     ?_flash_read?BYTE+09H,A
0053 E500        R     MOV     A,i+01H
0055 34FF              ADDC    A,#0FFH
0057 F500        E     MOV     ?_flash_read?BYTE+08H,A
0059 E500        R     MOV     A,i
005B 34FF              ADDC    A,#0FFH
005D F500        E     MOV     ?_flash_read?BYTE+07H,A
005F 7F01              MOV     R7,#01H
0061 7E00              MOV     R6,#00H
0063 7D00              MOV     R5,#00H
0065 7C00              MOV     R4,#00H
0067 120000      E     LCALL   _flash_read
                                           ; SOURCE LINE # 39
006A E500        R     MOV     A,rbuf
006C 6500        R     XRL     A,dbuf
006E 6015              JZ      ?C0006
                                           ; SOURCE LINE # 40
                                           ; SOURCE LINE # 41
0070 E500        R     MOV     A,i+03H
0072 24FF              ADD     A,#0FFH
0074 FF                MOV     R7,A
0075 E500        R     MOV     A,i+02H
0077 34FF              ADDC    A,#0FFH
0079 FE                MOV     R6,A
007A E500        R     MOV     A,i+01H
007C 34FF              ADDC    A,#0FFH
007E FD                MOV     R5,A
007F E500        R     MOV     A,i
0081 34FF              ADDC    A,#0FFH
0083 FC                MOV     R4,A
0084 22                RET     
                                           ; SOURCE LINE # 42
                                           ; SOURCE LINE # 43
0085         ?C0006:
0085 120000      R     LCALL   L?0016
0088 80B2              SJMP    ?C0004
008A         ?C0005:
                                           ; SOURCE LINE # 48
008A 74FF              MOV     A,#0FFH
008C FF                MOV     R7,A
C51 COMPILER V7.00 Beta 5  MAIN                                                            04/19/2002 14:12:10 PAGE 9   

008D FE                MOV     R6,A
008E FD                MOV     R5,A
008F FC                MOV     R4,A
                                           ; SOURCE LINE # 49
0090         ?C0008:
0090 22                RET     
0091         L?0018:
0091 E4                CLR     A
0092 F500        R     MOV     dbuf,A
0094 120000      E     LCALL   flash_size
0097 8F00        R     MOV     i+03H,R7
0099 8E00        R     MOV     i+02H,R6
009B 8D00        R     MOV     i+01H,R5
009D 8C00        R     MOV     i,R4
009F 22                RET     
             ; FUNCTION test_eeprom (END)

             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 53
                                           ; SOURCE LINE # 54
                                           ; SOURCE LINE # 62
0000 759850            MOV     SCON,#050H
                                           ; SOURCE LINE # 63
0003 438920            ORL     TMOD,#020H
                                           ; SOURCE LINE # 64
0006 758DF4            MOV     TH1,#0F4H
                                           ; SOURCE LINE # 65
0009 D28E              SETB    TR1
                                           ; SOURCE LINE # 66
000B D299              SETB    TI
                                           ; SOURCE LINE # 72
000D 7BFF              MOV     R3,#0FFH
000F 7A00        R     MOV     R2,#HIGH ?SC_0

⌨️ 快捷键说明

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