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

📄 flash.lst

📁 CF8051F040开发板的 flash_gb程序
💻 LST
字号:
C51 COMPILER V7.02b   FLASH                                                                01/03/2006 09:50:07 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE FLASH
OBJECT MODULE PLACED IN .\output\flash.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE flash.c LARGE BROWSE DEBUG OBJECTEXTEND TABS(3) OBJECT(.\output\flash.obj)

stmt level    source

   1          /************************************************************************************
   2          *  Copyright (c) 2004,西安铭朗电子科技有限责任公司
   3          *            All rights reserved.
   4          *
   5          * 文件名称: flash.C
   6          * 文件标识: none
   7          * 适用器件: w29c020
   8          * 
   9          * 摘 要: 本文件是字库(GB2312)读写子程序;使用外部22.1184MHz晶振.
  10          * 
  11          * 当前版本:1.0
  12          * 作 者:卢 阳
  13          * 完成日期:2004年11月14日
  14          *
  15          * 历史版本:0.9 
  16          * 原作者 : 李林利
  17          * 完成日期:2004年1月1日
  18          *************************************************************************************/
  19          
  20          /************************************************************************************/
  21          // 引用外部头文件
  22          
  23          #include "c8051f040.h"
  24          #include "flash.h"
  25          #include "delay.h"
  26          
  27          /************************************************************************************/
  28          
  29          /***********************************************************************************
  30          * 函数名称:write_protect_enable;
  31          *
  32          * 函数功能描述:Flash写保护函数;1:打开保护进行读写,0:进入保护状态模式;
  33          *              
  34          * 输入参数:Flash写保护开关;
  35          *
  36          * 返回数据:none;
  37          *
  38          * 注意:    none;
  39          ************************************************************************************/
  40          
  41          void write_protect_enable(bool flag)
  42          {  
  43   1         unsigned char xdata *ad;
  44   1         char data SFRPAGE_SAVE = SFRPAGE;    // Save Current SFR page   
  45   1          SFRPAGE = SFR_PAGE_F;           // set SFR page F
  46   1         if(flag==0)
  47   1         {
  48   2            P4&=0xf5;
  49   2            P4|=0x05;
  50   2            ad=0xd555;
  51   2            *ad=0xaa;
  52   2      
  53   2            P4&=0xf2;
  54   2            P4|=0x02;
  55   2            ad=0xeaaa;
C51 COMPILER V7.02b   FLASH                                                                01/03/2006 09:50:07 PAGE 2   

  56   2            *ad=0x55;
  57   2      
  58   2            P4&=0xf5;
  59   2            P4|=0x05;
  60   2            ad=0xd555;
  61   2            *ad=0x80;
  62   2      
  63   2            P4&=0xf5;
  64   2            P4|=0x05;
  65   2            ad=0xd555;
  66   2            *ad=0xaa;
  67   2      
  68   2            P4&=0xf2;
  69   2            P4|=0x02;
  70   2            ad=0xeaaa;
  71   2            *ad=0x55;
  72   2      
  73   2            P4&=0xf5;
  74   2            P4|=0x05;
  75   2            ad=0xd555;
  76   2            *ad=0x20;
  77   2      
  78   2            Delay_ms(10);
  79   2         }
  80   1         else
  81   1         {
  82   2            P4&=0xf5;
  83   2            P4|=0x05;
  84   2            ad=0xd555;
  85   2            *ad=0xaa;
  86   2      
  87   2            P4&=0xf2;
  88   2            P4|=0x02;
  89   2            ad=0xeaaa;
  90   2            *ad=0x55;
  91   2      
  92   2            P4&=0xf5;
  93   2            P4|=0x05;
  94   2            ad=0xd555;
  95   2            *ad=0xa0;
  96   2         }
  97   1         SFRPAGE = SFRPAGE_SAVE;          // Restore SFR page
  98   1      }
  99          
 100          /***********************************************************************************
 101          * 函数名称:chip_erase;
 102          *
 103          * 函数功能描述:Flash芯片擦除程序;
 104          *              
 105          * 输入参数:none;
 106          *
 107          * 返回数据:none;
 108          *
 109          * 注意:    none;
 110          ************************************************************************************/
 111          
 112          void chip_erase(void)
 113          {
 114   1         unsigned char xdata *ad;
 115   1         char data SFRPAGE_SAVE = SFRPAGE;    // Save Current SFR page   
 116   1          SFRPAGE = SFR_PAGE_F;           // set SFR page F
 117   1      
C51 COMPILER V7.02b   FLASH                                                                01/03/2006 09:50:07 PAGE 3   

 118   1         P4&=0xf5;
 119   1         P4|=0x05;
 120   1         ad=0xd555;
 121   1         *ad=0xaa;
 122   1      
 123   1         P4&=0xf2;
 124   1         P4|=0x02;
 125   1         ad=0xeaaa;
 126   1         *ad=0x55;
 127   1      
 128   1         P4&=0xf5;
 129   1         P4|=0x05;
 130   1         ad=0xd555;
 131   1         *ad=0x80;
 132   1      
 133   1         P4&=0xf5;
 134   1         P4|=0x05;
 135   1         ad=0xd555;
 136   1         *ad=0xaa;
 137   1      
 138   1         P4&=0xf2;
 139   1         P4|=0x02;
 140   1         ad=0xeaaa;
 141   1         *ad=0x55;
 142   1      
 143   1         P4&=0xf5;
 144   1         P4|=0x05;
 145   1         ad=0xd555;
 146   1         *ad=0x10;
 147   1      
 148   1         Delay_ms(50);
 149   1         SFRPAGE = SFRPAGE_SAVE;          // Restore SFR page
 150   1      }
 151          
 152          /***********************************************************************************
 153          * 函数名称:bootblocklockout_enable;
 154          *
 155          * 函数功能描述:导入块停止使能函数程序;
 156          *              
 157          * 输入参数:导入块停止使能标志;
 158          *
 159          * 返回数据:none;
 160          *
 161          * 注意:    none;
 162          ************************************************************************************/
 163          
 164          void bootblocklockout_enable(bool flag)
 165          {  
 166   1         unsigned char xdata *ad;
 167   1         char data SFRPAGE_SAVE = SFRPAGE;    // Save Current SFR page   
 168   1          SFRPAGE = SFR_PAGE_F;           // set SFR page F
 169   1         if(flag==0)
 170   1         {
 171   2            P4&=0xf5;
 172   2            P4|=0x05;
 173   2            ad=0xd555;
 174   2            *ad=0xaa;
 175   2      
 176   2            P4&=0xf2;
 177   2            P4|=0x02;
 178   2            ad=0xeaaa;
 179   2            *ad=0x55;
C51 COMPILER V7.02b   FLASH                                                                01/03/2006 09:50:07 PAGE 4   

 180   2      
 181   2            P4&=0xf5;
 182   2            P4|=0x05;
 183   2            ad=0xd555;
 184   2            *ad=0x80;
 185   2      
 186   2            P4&=0xf5;
 187   2            P4|=0x05;
 188   2            ad=0xd555;
 189   2            *ad=0xaa;
 190   2      
 191   2            P4&=0xf2;
 192   2            P4|=0x02;
 193   2            ad=0xeaaa;
 194   2            *ad=0x55;
 195   2      
 196   2            P4&=0xf5;
 197   2            P4|=0x05;
 198   2            ad=0xd555;
 199   2            *ad=0x40;
 200   2      
 201   2            P4&=0xf0;
 202   2            ad=0xc000;
 203   2            *ad=0x00;
 204   2      
 205   2            Delay_ms(10);
 206   2         }
 207   1         else
 208   1         {     
 209   2            P4&=0xf5;
 210   2            P4|=0x05;
 211   2            ad=0xd555;
 212   2            *ad=0xaa;
 213   2      
 214   2            P4&=0xf2;
 215   2            P4|=0x02;
 216   2            ad=0xeaaa;
 217   2            *ad=0x55;
 218   2      
 219   2            P4&=0xf5;
 220   2            P4|=0x05;
 221   2            ad=0xd555;
 222   2            *ad=0x80;
 223   2      
 224   2            P4&=0xf5;
 225   2            P4|=0x05;
 226   2            ad=0xd555;
 227   2            *ad=0xaa;
 228   2      
 229   2            P4&=0xf2;
 230   2            P4|=0x02;
 231   2            ad=0xeaaa;
 232   2            *ad=0x55;
 233   2      
 234   2            P4&=0xf5;
 235   2            P4|=0x05;
 236   2            ad=0xd555;
 237   2            *ad=0x40;
 238   2      
 239   2            P4&=0xf3;
 240   2            ad=0xffff;//
 241   2            *ad=0xff;
C51 COMPILER V7.02b   FLASH                                                                01/03/2006 09:50:07 PAGE 5   

 242   2            Delay_ms(10);
 243   2         }
 244   1         SFRPAGE = SFRPAGE_SAVE;          // Restore SFR page
 245   1      }
 246          
 247          /***********************************************************************************
 248          * 函数名称:write_byte;
 249          *
 250          * 函数功能描述:Flash写入字节函数程序;
 251          *              
 252          * 输入参数:;
 253          *
 254          * 返回数据:none;
 255          *
 256          * 注意:    none;
 257          ************************************************************************************/
 258          
 259          void write_byte(unsigned char section,unsigned int addr, unsigned char dat)
 260          {
 261   1         unsigned char xdata *x;
 262   1         char data SFRPAGE_SAVE = SFRPAGE;    // Save Current SFR page   
 263   1          SFRPAGE = SFR_PAGE_F;           // set SFR page F
 264   1         P4=section;
 265   1         x=addr;
 266   1         *x=dat;
 267   1         SFRPAGE = SFRPAGE_SAVE;          // Restore SFR page
 268   1      }
 269          
 270          /***********************************************************************************
 271          * 函数名称:write_string;
 272          *
 273          * 函数功能描述:Flash写入字符串函数程序;
 274          *              
 275          * 输入参数:;
 276          *
 277          * 返回数据:none;
 278          *
 279          * 注意:    none;
 280          ************************************************************************************/
 281          
 282          void write_string(unsigned char section,unsigned int addr, unsigned char *dat_sta, unsigned char *dat_end)
 283          {
 284   1         while(dat_sta<=dat_end)
 285   1         {
 286   2            write_byte(section,addr++,*dat_sta++);
 287   2            if(addr==0x0000)
 288   2            {
 289   3               section++;
 290   3               addr=0xc000;
 291   3               if(section>15)
 292   3                  return;
 293   3            }
 294   2         }
 295   1      }
 296          
 297          /***********************************************************************************
 298          * 函数名称:write_page;
 299          *
 300          * 函数功能描述:Flash按页写入函数;
 301          *              
 302          * 输入参数:;
 303          *
C51 COMPILER V7.02b   FLASH                                                                01/03/2006 09:50:07 PAGE 6   

 304          * 返回数据:none;
 305          *
 306          * 注意:    none;
 307          ************************************************************************************/
 308          
 309          void write_page(unsigned char section,unsigned int addr, unsigned char *dat)
 310          {
 311   1         unsigned char i;
 312   1         i=0;
 313   1         while(i<128)
 314   1         {
 315   2            write_byte(section,addr++,*dat++);
 316   2            if(addr==0x0000)
 317   2            {
 318   3               section++;
 319   3               addr=0xc000;
 320   3               if(section>15)
 321   3                  return;
 322   3            }
 323   2            i++;
 324   2         }
 325   1      }
 326          
 327          /***********************************************************************************
 328          * 函数名称:read_byte;
 329          *
 330          * 函数功能描述:Flash读取字节函数程序;
 331          *              
 332          * 输入参数:;
 333          *
 334          * 返回数据:none;
 335          *
 336          * 注意:    none;
 337          ************************************************************************************/
 338          
 339          unsigned char read_byte(unsigned char section,unsigned int addr)
 340          {
 341   1         unsigned char xdata *x;
 342   1         char data SFRPAGE_SAVE = SFRPAGE;    // Save Current SFR page   
 343   1          SFRPAGE = SFR_PAGE_F;           // set SFR page F
 344   1      
 345   1         if(section>16)
 346   1            return 0xff;
 347   1      
 348   1         P4=section;
 349   1         x=addr;
 350   1      
 351   1         return *x;
 352   1         SFRPAGE = SFRPAGE_SAVE;          // Restore SFR page
 353   1      }
 354          
 355          /***********************************************************************************/
 356          // 文件结束
 357          /***********************************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1083    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      20
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
C51 COMPILER V7.02b   FLASH                                                                01/03/2006 09:50:07 PAGE 7   

   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 + -