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

📄 flash.lst

📁 基于MST-G240128点阵液晶的 状态机机制 人机界面四级滚屏菜单 源代码 ,带时间片机制模拟操作系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   FLASH                                                                 01/31/2007 10:21:46 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE FLASH
OBJECT MODULE PLACED IN Flash.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\c51.exe Flash.c DB OE

line level    source

   1          #include "LZK.H"
   2          
   3          
   4          /**********************************************************************************
   5          ** 函数名称: Flash_128_Write()
   6          ** 功能描述: FLASH128字节快速存储区写操作
   7          ** 入口参数: pwrite为FLASH地址指针,采用xdata强制指明指针类型,以保证采用MOVX操作
   8          **               注意存储空间的指向,因为MOVX在操作Flash空间时,中间不能转而去操作XRAM
   9          **           BufFrom为数据指针,len为数据长度
  10          ** 出口参数: 无
  11          ** 全局变量: 无
  12          ** 调用模块: 无
  13          ** 说明: 
  14          *********************************************************************************/
  15          void Flash_128_Write(uint8 xdata *pwrite,uint8 *BufFrom,uint8 len,bit k)
  16          {       
  17   1          unsigned char i;
  18   1      
  19   1              WDTCN = 0xde;
  20   1              WDTCN = 0xad;  //禁止看门狗
  21   1      
  22   1              EA=0;    //禁止中断
  23   1      
  24   1              SFRPAGE=0x00;
  25   1              FLSCL = 0x81;        //FLWE=1 Flash擦/写使能
  26   1              PSCTL = 0x07;        //SFLE=1 Flash指向128字节快速存储区
  27   1                                   //PSEE=1 Flash页擦除使能
  28   1                                                       //PSWE=1 MOVX指向Flash闪存
  29   1              *pwrite=0;                   //擦除操作
  30   1      
  31   1              PSCTL=0x05;
  32   1          
  33   1      
  34   1          if(k)
  35   1              {
  36   2                 for(i=0;i<len;i++)    //copy BufFrom to FLASH with *pwriter
  37   2                 {    
  38   3                    *pwrite++ = 0x00;
  39   3                 }
  40   2              }
  41   1              else
  42   1              {
  43   2                 for(i=0;i<len;i++)    //copy BufFrom to FLASH with *pwriter
  44   2                 {    
  45   3                    *pwrite++ = *BufFrom++;
  46   3                 }
  47   2              }
  48   1      
  49   1               PSCTL = 0;                      // disable FLASH writes,MOVX指向外部RAM空间,将闪存擦除禁止,防止意外操作修改内存内容
  50   1               FLSCL = 0x80;           // disable FLASH writes  
  51   1               EA=1; 
  52   1      }
  53          
  54          /************************************************************************
  55          ** 函数名称: Flash_128_Read()
C51 COMPILER V7.20   FLASH                                                                 01/31/2007 10:21:46 PAGE 2   

  56          ** 功能描述: FLASH128字节快速存储区读操作
  57          ** 入口参数: 采用指针方法实现
  58          **               BufTo为存放读取值的缓冲指针,对FLASH读操作采用MOVC指令,故采用code指针类型
  59          **           len为数据长度
  60          ** 出口参数: 无
  61          ** 全局变量: 无
  62          ** 调用模块: 无
  63          ** 说明: 
  64          ************************************************************************/
  65          void Flash_128_Read(uint8 code *pread, uint8 *BufTo, uint8 len)
  66          { 
  67   1          unsigned char i;
  68   1      
  69   1          SFRPAGE=0x00;    
  70   1          PSCTL |= 0x04;       //SFLE=1, Flash指向128字节快速存储区
  71   1      
  72   1              for(i=0;i<len;i++)
  73   1              {
  74   2                      BufTo[i]=*pread;
  75   2                      pread++;
  76   2              }
  77   1      
  78   1          PSCTL = 0;                   //返回RAM空间,将闪存擦除禁止,防止意外操作修改内存内容
  79   1      
  80   1      }
  81          //////////////////////////////////////////////////////////////////////////////
  82          void HisFlash(uint8 k)
  83          {
  84   1         uint8 i;
  85   1         for(i=83;i>6;i--)
  86   1         Flash[i]=Flash[i-7];
  87   1      
  88   1         RTC8563_Read();
  89   1         Flash[0]=RTCData[6];
  90   1         Flash[1]=RTCData[5];
  91   1         Flash[2]=RTCData[3];
  92   1         Flash[3]=RTCData[2];
  93   1         Flash[4]=RTCData[1];
  94   1         Flash[5]=RTCData[0];
  95   1         Flash[6]=k;
  96   1         Flash_128_Write(0,Flash,128,0);
  97   1      }
  98          ///////////////////////////////////////////////////////////////////////////////
  99          /**********************************************************************************
 100          ** 函数名称: Flash_Param_Write()
 101          ** 功能描述: FLASH用户设置参数保存存储区写操作
 102          ** 入口参数: pwrite为FLASH地址指针,采用xdata强制指明指针类型,以保证采用MOVX操作
 103          **               注意存储空间的指向,因为MOVX在操作Flash空间时,中间不能转而去操作XRAM
 104          **           BufFrom为数据指针,len为数据长度
 105          ** 出口参数: 无
 106          ** 全局变量: 无
 107          ** 调用模块: 无
 108          ** 说明: 
 109          *********************************************************************************/
 110          void Flash_64K_Write(uint8 xdata *pwrite,uint8 *BufFrom,uint8 len,bit k)
 111          {       
 112   1          unsigned char i;
 113   1      
 114   1              WDTCN = 0xde;
 115   1              WDTCN = 0xad;  //禁止看门狗
 116   1      
 117   1              EA = 0;    //禁止中断
C51 COMPILER V7.20   FLASH                                                                 01/31/2007 10:21:46 PAGE 3   

 118   1      
 119   1              SFRPAGE = 0x00;
 120   1              FLSCL = 0x81;        //FLWE=1 Flash擦/写使能
 121   1              PSCTL = 0x03;        //SFLE=0 Flash指向64KB程序/数据区
 122   1                                   //PSEE=1 Flash页擦除使能
 123   1                                                       //PSWE=1 MOVX指向Flash闪存
 124   1              *pwrite = 0xFA02;          //擦除操作
 125   1      
 126   1              PSCTL = 0x01;
 127   1      
 128   1      
 129   1         if(k)
 130   1              {
 131   2                      for(i=0;i<len;i++)       //copy BufFrom to FLASH with *pwriter
 132   2                      {       
 133   3                      *pwrite++ = 0x00;
 134   3                      }
 135   2              }
 136   1              else
 137   1              {
 138   2                      for(i=0;i<len;i++)       //copy BufFrom to FLASH with *pwriter
 139   2                      {       
 140   3                      *pwrite++ = *BufFrom++;
 141   3                      }
 142   2         }
 143   1      
 144   1               PSCTL = 0;                      // disable FLASH writes,MOVX指向外部RAM空间,将闪存擦除禁止,防止意外操作修改内存内容
 145   1               FLSCL = 0x80;           // disable FLASH writes  
 146   1               EA = 1; 
 147   1      }
 148          
 149          /************************************************************************
 150          ** 函数名称: Flash_Param1_Read()
 151          ** 功能描述: FLASH用户设置参数保存存储区读操作
 152          ** 入口参数: 采用指针方法实现
 153          **               BufTo为存放读取值的缓冲指针,对FLASH读操作采用MOVC指令,故采用code指针类型
 154          **           len为数据长度
 155          ** 出口参数: 无
 156          ** 全局变量: 无
 157          ** 调用模块: 无
 158          ** 说明: 
 159          ************************************************************************/
 160          void Flash_64K_Read(uint8 code *pread, uint8 *BufTo, uint8 len)
 161          { 
 162   1          unsigned char i;
 163   1      
 164   1          SFRPAGE=0x00;    
 165   1         // PSCTL &= 0xFD;       //SFLE=0, Flash指向64K程序/数据区
 166   1      
 167   1              for(i=0; i<len; i++)
 168   1              {
 169   2                BufTo[i] = *pread;
 170   2                pread++;
 171   2              }
 172   1      
 173   1          PSCTL = 0;                   //返回RAM空间,将闪存擦除禁止,防止意外操作修改内存内容
 174   1      
 175   1      }
 176          /***********************************************************************/
 177          uint16 uchar_to_uint(uint8 x1,uint8 x2)
 178          {
 179   1         uint16 y;
C51 COMPILER V7.20   FLASH                                                                 01/31/2007 10:21:46 PAGE 4   

 180   1         y=x1;
 181   1              y=y<<8;
 182   1              y=y+x2;
 183   1              return(y);
 184   1      }
 185          /***********************************************************************/
 186          uint8 uint_to_uchar(uint16 y,bit k)
 187          {
 188   1         uint8 x;
 189   1              if(k)
 190   1              x=y>>8;
 191   1              else
 192   1              x=y;
 193   1              return(x);
 194   1      }
 195          /***********************************************************************/
 196          void Stc_to_CFlash()
 197          {
 198   1              CFlash[0]=EM_NomalPhaDiffCMD;
 199   1              CFlash[1]=EM_FulVoltPhaDiffCMD;
 200   1              CFlash[2]=AsyncTimOutCMD;
 201   1              CFlash[3]=EM_TimCMD;
 202   1              CFlash[4]=uint_to_uchar(EM_VoltScaleCMD,1);
 203   1              CFlash[5]=uint_to_uchar(EM_VoltScaleCMD,0);
 204   1              CFlash[6]=uint_to_uchar(EM_CurrScaleCMD,1);
 205   1              CFlash[7]=uint_to_uchar(EM_CurrScaleCMD,0);
 206   1              CFlash[8]=uint_to_uchar(EM_VoltMaxCMD,1);
 207   1              CFlash[9]=uint_to_uchar(EM_VoltMaxCMD,0);

⌨️ 快捷键说明

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