[经验分享] 82LE52 IAP 读写范例

[复制链接]
4573|15
 楼主| yuq_quan 发表于 2010-5-27 14:07 | 显示全部楼层 |阅读模式
82LE52 IAP 的设置与读写方法,和范例程序,分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ershisi 发表于 2010-5-27 21:03 | 显示全部楼层
好,顶~~~
huamunv 发表于 2010-5-27 22:15 | 显示全部楼层
82L/E52?IAP使用说明,简单明了
laslison 发表于 2010-5-27 22:39 | 显示全部楼层
好简单啊
David_ming 发表于 2010-5-28 13:37 | 显示全部楼层
David_ming 发表于 2010-5-28 13:38 | 显示全部楼层
操作IAP要注意电压,如果在上电瞬间操作的话,电源不稳定,也许刚好擦除一页就掉电,那么写入就会失败,好像丢失数据一样,一定要电源稳定在操作
 楼主| yuq_quan 发表于 2010-5-28 13:46 | 显示全部楼层
David_ming,  好建议! 赞同!
午夜粪车 发表于 2010-5-28 20:34 | 显示全部楼层
经验之谈啊
xiaomifan 发表于 2010-5-28 22:44 | 显示全部楼层
怎么判断电源稳定?
xiaohuai 发表于 2010-5-29 21:36 | 显示全部楼层
这个资料看着真舒服
lpydidi 发表于 2010-5-30 22:13 | 显示全部楼层
简洁明了,不错!
 楼主| yuq_quan 发表于 2010-5-31 10:44 | 显示全部楼层
怎么判断电源稳定?


一般认为:上电/掉电时,IC的电源是不稳定的.
所以,IC复位后一段时间,最好不要读写IAP,以免误动作.
David_ming 发表于 2010-6-1 17:19 | 显示全部楼层
#include "megawin.h"
#include "intrins.h"
#include "iap.h"

bit SetIAP(uchar Address)
{
        bit i = EA;
        if(Address % 2)return(1);//IAPLB must be even number
        EA    = 0;
        IFMT  = 0x04;   //IAPLB set command
        IFD   = Address;//0x02*0x100 = 0x200;(must be even number!!)
        ISPCR|= 0x80;   //enable ISP
        SCMD  = 0x46;
        SCMD  = 0xB9;   //start to set IAPLB
        _nop_();
        SCMD   = 0;     //disable the isp
        ISPCR  = 0;         //disable  ISP
        EA = i;
        return(0);       
}

bit WriteIAP(uint Address,uchar dat)
{
        bit i  = EA;
        EA     = 0;
        IFADRH = Address >> 8;        //address high byte
        IFADRL = (uchar)Address;//address low  byte
        IFMT   = 0x02;        //write   command
        IFD           = dat;   //data
        ISPCR |= 0x80;         //enable  ISP
        SCMD   = 0x46;
        SCMD   = 0xb9;        //start to operate
        _nop_();
        SCMD   = 0;     //disable the isp
        ISPCR  = 0;         //disable  ISP
        EA     = i;
        if(ISPCR & 0x10)return(1);
        else return(0);
}
bit EraseIAP(uchar Address)
{
        bit i  = EA;
        EA     = 0;
        IFADRH = Address;        //address high byte
        IFADRL = 0;                  //address low  byte
        IFMT   = 0x03;                //eraser  command
        ISPCR  = 0x00;                //waiting time set
        ISPCR |= 0x83;          //enable  ISP
        SCMD   = 0x46;
        SCMD   = 0xb9;                //start to operate
        _nop_();
        SCMD   = 0;     //disable the isp
        ISPCR  = 0;         //disable  ISP
        EA     = i;
        if(ISPCR & 0x10)return(1);
        else return(0);
}
uchar ReadIAP(uint Address)
{
        bit i  = EA;
        EA     = 0;
        IFADRH = Address >> 8;        //address high byte
        IFADRL = (uchar)Address;//address low  byte               
        IFMT   = 0x01;        //write   command
        ISPCR  = 0x00;        //waiting time set        
        ISPCR |= 0x83;         //enable  ISP
        SCMD   = 0x46;       
        SCMD   = 0xb9;        //start to operate               
    _nop_();
        SCMD   = 0;     //disable the isp
        ISPCR  = 0;         //disable  ISP
        EA     = i;
        return(IFD);
}
ershisi 发表于 2010-6-2 21:29 | 显示全部楼层
13发的是什么东西?
guita 发表于 2010-6-11 22:01 | 显示全部楼层
好东西,谢谢楼主分享
panamatw 发表于 2014-8-18 09:21 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

119

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部