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

📄 flash1.lst

📁 C8051f020单片机内部FLASH读写程序
💻 LST
字号:
C51 COMPILER V7.10   FLASH1                                                                08/18/2007 18:11:35 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE FLASH1
OBJECT MODULE PLACED IN flash1.OBJ
COMPILER INVOKED BY: C:\SiLabs\IDEfiles\C51\BIN\C51.exe flash1.c DB OE

line level    source

   1          ////////////FLASH读写操作调试程序/////////////////
   2          //////////flash.c////////////////////////////////////////
   3          #include "c8051f020.h"
   4          #include "absacc.h"
   5          #define LEN 5
   6          void FlashWrite(unsigned char xdata *pwrite,unsigned char  *BufFrom,unsigned char len){
   7   1              /*
   8   1              pwrite为FLASH地址指针,采用xdata强制指明指针类型,以保证采用MOVX操作
   9   1              BufFrom为数据指针
  10   1              len为数据长度
  11   1              */
  12   1                      unsigned char i;
  13   1                      WDTCN = 0xde;//1101 1110
  14   1                      WDTCN = 0xad;// 禁止看门狗1010 1101
  15   1                      EA=0;//禁止中断
  16   1      //              SFRPAGE=0x00;//0x84/* SFR PAGE SELECT                              */
  17   1                      FLSCL = 0x81;//0xb7/* FLASH TIMING PRESCALAR                       */
  18   1                      PSCTL = 0x03;//0x8f  0000 0011
  19   1                      *pwrite=0;              //擦除操作
  20   1                      PSCTL=0x01;
  21   1                      for(i=0;i<len;i++)      //copy BufFrom to FLASH with *pwriter
  22   1                      {       
  23   2                              *pwrite++=*BufFrom++;
  24   2                      }
  25   1                      PSCTL = 0;                       // disable FLASH writes
  26   1                      FLSCL = 0x80;            // disable FLASH writes
  27   1                      EA=1; 
  28   1      }
  29          
  30          void Flasherase(unsigned char xdata *pwrite){
  31   1              /*
  32   1              pwrite为FLASH地址指针,采用xdata强制指明指针类型,以保证采用MOVX操作
  33   1              BufFrom为数据指针
  34   1              len为数据长度
  35   1              */
  36   1              //      unsigned char i;
  37   1                      WDTCN = 0xde;//1101 1110
  38   1                      WDTCN = 0xad;// 禁止看门狗1010 1101
  39   1                      EA=0;//禁止中断
  40   1      //              SFRPAGE=0x00;//0x84/* SFR PAGE SELECT                              */
  41   1                      FLSCL = 0x81;//0xb7/* FLASH TIMING PRESCALAR                       */
  42   1                      PSCTL = 0x03;//0x8f  0000 0011
  43   1                      *pwrite=0;              //擦除操作
  44   1                      PSCTL=0x01;
  45   1      
  46   1                      PSCTL = 0;                       // disable FLASH writes
  47   1                      FLSCL = 0x80;            // disable FLASH writes
  48   1                      EA=1; 
  49   1      }
  50          
  51          
  52          void FlashRead(unsigned char code *pread,unsigned char *BufTo,unsigned char len){//采用指针方法实现
  53   1              /*
  54   1              对FLASH读操作采用MOVC指令,故采用code指针类型
  55   1              BufTo为存放读取值的缓冲指针
C51 COMPILER V7.10   FLASH1                                                                08/18/2007 18:11:35 PAGE 2   

  56   1              len为数据长度
  57   1              */
  58   1              unsigned char i;
  59   1              for(i=0;i<len;i++){
  60   2                      BufTo[i]=*pread;
  61   2                      pread++;
  62   2              }
  63   1      }
  64          
  65          
  66          void config(){
  67   1      //看门狗禁止
  68   1              WDTCN = 0x07;   
  69   1          WDTCN = 0xDE;   
  70   1              WDTCN = 0xAD;
  71   1      //      SFRPAGE = 0x0F;
  72   1      //交叉开关使能,但没有进行外围设备配置
  73   1              XBR0 = 0x00;    
  74   1              XBR1 = 0x00;    
  75   1              XBR2 = 0x40;
  76   1       //     XBR3 = 0x00;   
  77   1      //管脚输出配置,P0口为开漏输出,其中P0.6接上拉电阻,P0为数字输入口
  78   1      //      SFRPAGE = 0x0F;
  79   1              P0MDOUT = 0x00; 
  80   1              P1MDIN = 0xFF;  
  81   1      //晶振配置,采用内部晶振8分频
  82   1      //      SFRPAGE = 0x0F;
  83   1       //     CLKSEL = 0x00;  
  84   1              OSCXCN = 0x00;  
  85   1              OSCICN = 0x84;  
  86   1      }
  87          void main(){
  88   1      
  89   1      
  90   1      
  91   1              xdata float readpi=0.0;
  92   1          int i=0;
  93   1              config();
  94   1              for(i=0;i<30;i++)
  95   1              {Flasherase(512*i);
*** WARNING C214 IN LINE 95 OF FLASH1.C: 'Argument': conversion: non-pointer to pointer
  96   2       }
  97   1          
  98   1              while(1);//可在此设断点观察写的数据与读的数据是否一致
  99   1      }
 100          
 101                          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    238    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----       4
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  1 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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