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

📄 flash.lst

📁 flash_download.C8051中的应用
💻 LST
📖 第 1 页 / 共 2 页
字号:
 184          * 函数功能描述:Flash写入字节函数程序;
 185          *              
 186          * 输入参数:unsigned long类型地址,unsigned char类型数据;
 187          *
 188          * 返回数据:none;
 189          *
 190          * 注意:    none;
 191          ************************************************************************************/
 192          
 193          void flash_write_byte_save(unsigned long address, unsigned char dat)
 194          {
 195   1         unsigned char xdata a[128];
 196   1         unsigned int temp;
 197   1         unsigned int t;
 198   1         unsigned char sec;
 199   1         char data SFRPAGE_SAVE = SFRPAGE;    // Save Current SFR page   
 200   1          SFRPAGE = SFR_PAGE_F;           // set SFR page F
 201   1         temp=address|0xc000;
 202   1         sec=address>>14;
 203   1      
 204   1         if(sec>15)
 205   1            return ;
 206   1         P4=sec;
 207   1         t=(temp-0xc000)%128;
 208   1         temp=temp-t;
 209   1      
 210   1         flash_read_page(address,a);
 211   1         a[t]=dat;
 212   1         flash_write_page(address,a);
 213   1         SFRPAGE = SFRPAGE_SAVE;          // Restore SFR page
 214   1      }
 215          
 216          /***********************************************************************************
 217          * 函数名称:flash_write_string;
 218          *
 219          * 函数功能描述:Flash写入字符串函数程序;
 220          *              
 221          * 输入参数:unsigned long类型地址,unsigned char类型数据起始指针,unsigned char类型数据长度;
 222          *
 223          * 返回数据:none;
 224          *
 225          * 注意:    none;
 226          ************************************************************************************/
 227          
 228          void flash_write_string(unsigned long address, unsigned char *dat_sta, unsigned char count)
 229          {
 230   1         if(count>127)
 231   1            return;
 232   1         while(count--)
 233   1         {
 234   2            flash_write_byte(address++,*dat_sta++);
 235   2         }
 236   1      }
 237          
 238          /***********************************************************************************
 239          * 函数名称:flash_write_page;
 240          *
 241          * 函数功能描述:Flash按页写入函数;
C51 COMPILER V7.02b   FLASH                                                                03/06/2006 15:41:23 PAGE 5   

 242          *              
 243          * 输入参数:unsigned long类型地址,unsigned char类型数据起始指针;
 244          *
 245          * 返回数据:none;
 246          *
 247          * 注意:    none;
 248          ************************************************************************************/
 249          
 250          void flash_write_page(unsigned long address, unsigned char *dat)
 251          {
 252   1         unsigned char i;
 253   1         i=0;
 254   1         while(i<128)
 255   1         {
 256   2            flash_write_byte(address++,*dat++);
 257   2            i++;
 258   2         }
 259   1      }
 260          
 261          /***********************************************************************************
 262          * 函数名称:flash_write_block;
 263          *
 264          * 函数功能描述:Flash按块写入函数;
 265          *              
 266          * 输入参数:unsigned long类型地址,unsigned char类型数据起始指针;
 267          *
 268          * 返回数据:none;
 269          *
 270          * 注意:    none;
 271          ************************************************************************************/
 272          
 273          void flash_write_block(unsigned long address, unsigned char *dat)
 274          {
 275   1         unsigned char count;
 276   1         unsigned int ct;
 277   1         count=128;
 278   1         ct=address%0x3fff;
 279   1         address=address-ct;
 280   1         while(count--)
 281   1         {
 282   2            flash_write_page(address, dat);
 283   2            Delay_ms(10);
 284   2      
 285   2            address+=128;
 286   2            dat+=128;
 287   2         }
 288   1      }
 289          
 290          /***********************************************************************************
 291          * 函数名称:flash_read_byte;
 292          *
 293          * 函数功能描述:Flash读取字节函数程序;
 294          *              
 295          * 输入参数:unsigned long类型地址;
 296          *
 297          * 返回数据:unsigned char;
 298          *
 299          * 注意:    none;
 300          ************************************************************************************/
 301          
 302          unsigned char flash_read_byte(unsigned long address)
 303          {
C51 COMPILER V7.02b   FLASH                                                                03/06/2006 15:41:23 PAGE 6   

 304   1         unsigned char xdata *x;
 305   1         unsigned int temp;
 306   1         unsigned char sec;
 307   1         char data SFRPAGE_SAVE = SFRPAGE;    // Save Current SFR page   
 308   1          SFRPAGE = SFR_PAGE_F;           // set SFR page F
 309   1         temp=address|0xc000;
 310   1         sec=address>>14;
 311   1         if(sec>15)
 312   1            return 0xff;
 313   1         P4=sec;
 314   1         x=temp;
 315   1         return *x;
 316   1         SFRPAGE = SFRPAGE_SAVE;          // Restore SFR page
 317   1      }
 318          
 319          /***********************************************************************************
 320          * 函数名称:flash_read_page;
 321          *
 322          * 函数功能描述:Flash读取页函数程序;
 323          *              
 324          * 输入参数:unsigned long类型地址,unsigned char类型数据存储起始地址指针;
 325          *
 326          * 返回数据:none;
 327          *
 328          * 注意:    none;
 329          ************************************************************************************/
 330          
 331          void flash_read_page(unsigned long address, unsigned char *buf)
 332          {
 333   1         unsigned char xdata *x;
 334   1         unsigned char count=128;
 335   1         unsigned int temp;
 336   1         unsigned int t;
 337   1         unsigned char sec;
 338   1         char data SFRPAGE_SAVE = SFRPAGE;    // Save Current SFR page   
 339   1          SFRPAGE = SFR_PAGE_F;           // set SFR page F
 340   1         
 341   1         temp=address|0xc000;
 342   1         sec=address>>14;
 343   1         if(sec>15)
 344   1            return ;
 345   1         t=(temp-0xc000)%128;
 346   1         temp=temp-t;
 347   1         P4=sec;
 348   1         x=temp;
 349   1         while(count--)
 350   1         {
 351   2            *buf++=*x++;
 352   2         }
 353   1         SFRPAGE = SFRPAGE_SAVE;          // Restore SFR page
 354   1      }
 355          
 356          /***********************************************************************************/
 357          // 文件结束
 358          /***********************************************************************************/
 359          
 360          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1119    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V7.02b   FLASH                                                                03/06/2006 15:41:23 PAGE 7   

   XDATA SIZE       =   ----     180
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       6
   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 + -