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

📄 block0.lst

📁 一个用SST89X516/564RD单片机实现程序和数据存储互补利用例子(即程序剩下的存储空间用作数据存储,最大可超过64K的数据存储空间)
💻 LST
📖 第 1 页 / 共 2 页
字号:
 174      =1  sbit WDT    = WDTC^1;
 175      =1  sbit SWDT   = WDTC^0;
 176      =1  
 177      =1  /*   IEA    */
 178      =1  sbit EBO    = IEA^3;
 179      =1  
 180      =1  /*   IPH    */
 181      =1  sbit PBO    = IPA^3;
 182      =1  
  26          
  27          extern void Flash_Block0_byte_program(unsigned short int dataAddr, unsigned char dataByte);
  28          
  29          /*********************************************************************************************************
             -**
  30          * 字节编程函数---Flash_Block1_byte_program()            //对MCU内部FLASH的Block1区域单字节编程函数
  31          * 输入参数:     dataAddr---编程的字节地址
  32          * 输入参数:     dataByte---编程的数据
  33          **********************************************************************************************************
             -*/
  34          void Flash_Block1_byte_program(unsigned short int dataAddr, unsigned char dataByte)
  35          {
  36   1              unsigned short int destAddr = dataAddr;
  37   1              SFCF = SFCF | 0x41; // SFCF.6=1: IAP功能使能,   SFCF.0=1: 选择Block1
  38   1              SFAH = destAddr>>8; // 将扇区地址的高8位装入FLASH的高8位地址寄存器(SFAH)中
  39   1              SFAL = destAddr;        // 将扇区地址的低8位装入FLASH的低8位地址寄存器(SFAL)中
  40   1              SFDT = dataByte;        // 在FLASH的数据寄存器(SFDT)中填入编程的数据--dataByte
  41   1              SFCM = 0x0e;    // 在FLASH的命令寄存器(SFCM)中填入字节编程命令--SFCM_PB=0X0E
  42   1              while (SFST&0x04);              //SFST.2=0:IAP操作完成
  43   1              SFCF = SFCF & ~0x40; // SFCF.6=0: IAP功能禁止
  44   1              SFDT = 0;                               //清除原来的FLASH数据寄存器,
  45   1      }
  46          
  47          void main(void)
  48          {
  49   1              unsigned int addr_flash;
  50   1              unsigned char i;
  51   1              
  52   1              addr_flash=0x0800;                              //针对SST89E516RD的BLOCK1的地址(0x0000-0x1fff);如是SST89E52-58RD,BLOCK1地址应在0xe0
             -00-0xffff之间
  53   1              for ( i=0; i<0x40; i++)         //对Block1的FLASH的0x0800--0x083f地址范围内单元连续写入0x21--0x60的数据,
  54   1              {                                                       //运行后可用编程器查看FLASH编程的结果
  55   2                      Flash_Block1_byte_program(addr_flash,i+0x21);
C51 COMPILER V7.50   BLOCK0                                                                11/17/2005 23:12:25 PAGE 5   

  56   2                      addr_flash++;
  57   2                      }
  58   1      
  59   1              addr_flash=0x0a00;
  60   1              for ( i=0; i<0x40; i++)         //对Block0的FLASH的0x0a00--0x0a3f地址范围内单元连续写入0x31--0x70的数据,
  61   1              {                                                       //运行后可用编程器查看FLASH编程的结果
  62   2                      Flash_Block0_byte_program(addr_flash,i+0x31);
  63   2                      addr_flash++;
  64   2                      }
  65   1      
  66   1              while(1)
  67   1              {
  68   2                      P1=0x55;                        //点亮P1口,指示编程完毕;
  69   2                      }
  70   1              
  71   1      }
C51 COMPILER V7.50   BLOCK0                                                                11/17/2005 23:12:25 PAGE 6   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _Flash_Block1_byte_program (BEGIN)
                                           ; SOURCE LINE # 34
;---- Variable 'dataByte' assigned to Register 'R5' ----
;---- Variable 'dataAddr' assigned to Register 'R6/R7' ----
                                           ; SOURCE LINE # 35
                                           ; SOURCE LINE # 36
;---- Variable 'destAddr' assigned to Register 'R2/R3' ----
0000 AB07              MOV     R3,AR7
0002 AA06              MOV     R2,AR6
                                           ; SOURCE LINE # 37
0004 43B141            ORL     SFCF,#041H
                                           ; SOURCE LINE # 38
0007 8AB4              MOV     SFAH,R2
                                           ; SOURCE LINE # 39
0009 8BB3              MOV     SFAL,R3
                                           ; SOURCE LINE # 40
000B 8DB5              MOV     SFDT,R5
                                           ; SOURCE LINE # 41
000D 75B20E            MOV     SFCM,#0EH
0010         ?C0001:
                                           ; SOURCE LINE # 42
0010 E5B6              MOV     A,SFST
0012 20E2FB            JB      ACC.2,?C0001
0015         ?C0002:
                                           ; SOURCE LINE # 43
0015 53B1BF            ANL     SFCF,#0BFH
                                           ; SOURCE LINE # 44
0018 E4                CLR     A
0019 F5B5              MOV     SFDT,A
                                           ; SOURCE LINE # 45
001B 22                RET     
             ; FUNCTION _Flash_Block1_byte_program (END)

             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 47
                                           ; SOURCE LINE # 48
                                           ; SOURCE LINE # 52
0000 750008      R     MOV     addr_flash,#08H
0003 750000      R     MOV     addr_flash+01H,#00H
                                           ; SOURCE LINE # 53
0006 E4                CLR     A
0007 F500        R     MOV     i,A
0009         ?C0004:
                                           ; SOURCE LINE # 54
                                           ; SOURCE LINE # 55
0009 E500        R     MOV     A,i
000B 2421              ADD     A,#021H
000D FD                MOV     R5,A
000E AF00        R     MOV     R7,addr_flash+01H
0010 AE00        R     MOV     R6,addr_flash
0012 120000      R     LCALL   _Flash_Block1_byte_program
                                           ; SOURCE LINE # 56
0015 0500        R     INC     addr_flash+01H
0017 E500        R     MOV     A,addr_flash+01H
0019 7002              JNZ     ?C0013
001B 0500        R     INC     addr_flash
001D         ?C0013:
                                           ; SOURCE LINE # 57
001D 0500        R     INC     i
C51 COMPILER V7.50   BLOCK0                                                                11/17/2005 23:12:25 PAGE 7   

001F E500        R     MOV     A,i
0021 C3                CLR     C
0022 9440              SUBB    A,#040H
0024 40E3              JC      ?C0004
0026         ?C0005:
                                           ; SOURCE LINE # 59
0026 75000A      R     MOV     addr_flash,#0AH
0029 750000      R     MOV     addr_flash+01H,#00H
                                           ; SOURCE LINE # 60
002C E4                CLR     A
002D F500        R     MOV     i,A
002F         ?C0007:
                                           ; SOURCE LINE # 61
                                           ; SOURCE LINE # 62
002F E500        R     MOV     A,i
0031 2431              ADD     A,#031H
0033 FD                MOV     R5,A
0034 AF00        R     MOV     R7,addr_flash+01H
0036 AE00        R     MOV     R6,addr_flash
0038 120000      E     LCALL   _Flash_Block0_byte_program
                                           ; SOURCE LINE # 63
003B 0500        R     INC     addr_flash+01H
003D E500        R     MOV     A,addr_flash+01H
003F 7002              JNZ     ?C0014
0041 0500        R     INC     addr_flash
0043         ?C0014:
                                           ; SOURCE LINE # 64
0043 0500        R     INC     i
0045 E500        R     MOV     A,i
0047 C3                CLR     C
0048 9440              SUBB    A,#040H
004A 40E3              JC      ?C0007
004C         ?C0010:
                                           ; SOURCE LINE # 66
                                           ; SOURCE LINE # 67
                                           ; SOURCE LINE # 68
004C 759055            MOV     P1,#055H
                                           ; SOURCE LINE # 69
004F 80FB              SJMP    ?C0010
             ; FUNCTION main (END)

C51 COMPILER V7.50   BLOCK0                                                                11/17/2005 23:12:25 PAGE 8   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
SFAH . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B4H  1
SFCF . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B1H  1
CCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D8H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  addr_flash . . . . . . . . . . . . .  AUTO     DATA   U_INT    0000H  2
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0002H  1
SFAL . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B3H  1
SFCM . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B2H  1
SFDT . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B5H  1
WDTC . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C0H  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
SFST . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B6H  1
_Flash_Block0_byte_program . . . . . .  EXTERN   CODE   PROC     -----  -----
_Flash_Block1_byte_program . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  dataAddr . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
  dataByte . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  destAddr . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0002H  2
IEA. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00E8H  1
IPA. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00F8H  1
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1


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