搜索
bottom↓
回复: 20

模拟EEPROM,想怎写就写,想擦就擦!【恢复】

[复制链接]

出0入0汤圆

发表于 2008-12-16 10:31:31 | 显示全部楼层 |阅读模式
模拟EEPROM,想怎写就写,想擦就擦!

/**********************************/   

/*   从正常模式切换到编程模式    */                              

/*********************************/   

void star()

   {

    MK0=0xFF;

    DI();

    do

     {

        PFS=0;

        PFCMD=0xA5;

        FLPMC=0x01;

        FLPMC=0xFE;

        FLPMC=0x01;

        NOP();

        HALT();

     

     }while((PFS&0x01)==0x01);   

     

   }

   

/**********************************/

/*   从编程模式切换到正常模式    */

/*********************************/   

void stop()

   {

    do

     {

        PFS=0;

        PFCMD=0xA5;

        FLPMC=0x00;

        FLPMC=0xFF;

        FLPMC=0x00;

      }while((PFS&0x01)==0x01);   

     EI(); 

   }

/*********************************/

/*           块擦除             */

/* 入口参数:block 要擦除的块   */

/********************************/  

void erase(unsigned char block)

     {

        do

          {

           FLCMD=0x03;

           FLAPH=block;

           FLAPL=0x00;

           FLAPHC=block;

           FLAPLC=0x00;

           PFS=0x00;

           WDTE=0xAC;

           HALT();

          }while((PFS&0x06)==0x04);

     }

  /***********************************************/

  /*                写数据                       */

  /* 入口参数1:block 要写入数据所在的块         */

  /* 入口参数2: addr  要写入数据所在的块的偏地址 */

  /* 入口参数3:bdata 要写入的数据               */

  /***********************************************/     

void write(unsigned char block,unsigned char addr,unsigned char bdata)

      {

           FLW=bdata;

           FLAPH=block;

           FLAPL=addr;

           FLAPHC=block;

           FLAPLC=addr;

           FLCMD=0x05;

           PFS=0x00;

           WDTE=0xAC;

           NOP();

           HALT();

      } 



            

看了一大堆例程,都没有一个象我这样的例,  只好自己写一个了,断断续续搞了N久时间,终修正果!

9202上通过。



    欢迎大家讨论NEC应用:Q Q : 8 6 0 6 1 8 2 1

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2008-12-27 23:18:18 | 显示全部楼层
独特之处--就是轮换的办法,了解FLASH做EEPROM用的原理--只能把1变成0,不能把0变成1。NEC的代码是好,

但是好多人都搞不明白,当搞明白的时候,就不用它的了!

出0入0汤圆

发表于 2008-12-26 22:06:44 | 显示全部楼层
不要贬低nec的代码,还是有其独特之处, 它的代码讲究可擦写的次数

出0入0汤圆

发表于 2008-12-26 09:20:38 | 显示全部楼层
STC上应用很不错的主意 

出0入0汤圆

发表于 2008-12-24 10:25:56 | 显示全部楼层
en,STC上应用很不错的主意

出0入0汤圆

发表于 2008-12-24 01:05:19 | 显示全部楼层
非常感谢!!!

出0入0汤圆

 楼主| 发表于 2008-12-22 18:23:07 | 显示全部楼层
http://www.getsoon.com.cn/bbs/viewthread.php?tid=2477&extra=page%3D1



完整的程序可以参考这个贴!

出0入0汤圆

发表于 2008-12-22 10:49:32 | 显示全部楼层
学习一下

出0入0汤圆

 楼主| 发表于 2008-12-22 10:37:13 | 显示全部楼层
#pragma section @@CNST buf1 at 0x0C00

const unsigned char buf1[256]={

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

        0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};





把一个块定义成一个数组。



  读数据:                 ldata=buf1[k];

出0入0汤圆

 楼主| 发表于 2008-12-20 00:10:15 | 显示全部楼层
我的方法就是定义一个数组到所用到的块!

出0入0汤圆

发表于 2008-12-19 20:42:45 | 显示全部楼层
写入的数据是怎么读出来的?

出0入0汤圆

发表于 2008-12-18 20:48:05 | 显示全部楼层
回楼主,您这函数的使用是不是这样的:



   star() ;  



   erase(block_num) ;



   for(i=0;i<addr_mix;i++)

     write(block_num,i,i) ;



   stop() ;

出0入4汤圆

发表于 2008-12-17 20:54:35 | 显示全部楼层
flash的结构是什么?了解了这个问题就明白为什么要擦页了。否则不就和普通的eeprom一样了嘛。

出0入0汤圆

发表于 2008-12-17 20:51:26 | 显示全部楼层
STC51的FLASH做EEPROM要BANK擦除后才能写,NEC的要吗?

出0入0汤圆

发表于 2008-12-17 15:18:16 | 显示全部楼层
谢谢诶   顶!

出0入0汤圆

发表于 2008-12-17 15:08:13 | 显示全部楼层
78K0S可以这样写,换了78k0就比较麻烦了...78K0S手册直接有各个自编程相关函数的解释,78K0就没

出0入0汤圆

发表于 2008-12-16 13:02:27 | 显示全部楼层
兄弟   支持啊

谢谢!

出0入0汤圆

发表于 2008-12-16 12:24:34 | 显示全部楼层
kl

出0入0汤圆

发表于 2008-12-16 12:20:30 | 显示全部楼层
嗯 不错 还是这个方便多了 收藏

出0入0汤圆

 楼主| 发表于 2008-12-16 12:01:30 | 显示全部楼层
原理是一样的,我没有0511的芯片,如果老大支持给我芯片,搞出来是没有什么问题,

不明白NEC为什么这样简单的东西都没有写出来给大家,给的让人难看死的程序。

出0入0汤圆

发表于 2008-12-16 11:01:56 | 显示全部楼层
楼主有没有0511的程序?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 23:04

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表