分享

谁有STC 的 EEPROM C程序

 王利刚QWE 2011-08-10


STC的具体什么型号。因为04和12的 要写入的CMD不一样。

我先贴个 11F04E
//目标IC: STC-11F04E
//功能: EEPROM使用
//硬件:
//       P10-P12外接3个LED到正级


#include <at89x52.h>                          


sfr  IAP_DATA =   0xC2;
// 对对DATA FLASL/EEPROM读或者写的时候 数据全暂放的地方
sfr  IAP_ADDRH =   0xC3;
// 读写 地址的高8位
sfr  IAP_ADDRL =   0xC4;
// 读写 地址的底8位
sfr  IAP_CMD =   0xC5;
//命令模式寄存器
//0x00  待机模式
//0x01  对DATA FLASL/EEPROM 字节读
//0x02  对DATA FLASL/EEPROM 字节写
//0x03  对DATA FLASL/EEPROM 扇区搽

sfr  IAP_TRIG =   0xC6;
//命令触发寄存器
sfr  IAP_CONTR =   0xC7;
//IAP_CONTR.7  IPEN:读写功能允许为 1:允许  0:禁止
//IAP_CONTR.6  SWBS:。。。。。

  

#define uchar unsigned char
#define uint unsigned int

uchar  DATA;


sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;


void _delay_ms(uint time)
{
           uint sj;
    for(;time>0;time--)
            {
                   for(sj=115;sj>0;sj--);
            }
}


void  IAP_Disable()//关闭IAP
{
        IAP_CONTR=0;  //关闭IAP
        IAP_CMD=0;    //命令模式清0 可以不要
          IAP_TRIG=0;     //  可以不要
        IAP_ADDRH=0x80;   // 之向高地址 非EEPROM区域
        IAP_ADDRL=0x00;   //  防止误操作
}


uchar IAP_read(uchar  addr)       ///IAP 读 程序  //读addr地址的数据 返回
{
IAP_CONTR=0x82;//使能IAP 660个时钟的速度
IAP_CMD=0x01  ;//命令模式是扇区读
IAP_ADDRH = (uchar)(addr >> 8);   
IAP_ADDRL = (uchar)(addr & 0x00ff);   
EA=0;
IAP_TRIG=0X5A;
IAP_TRIG=0XA5;
_delay_ms(1);
EA=1;
IAP_Disable();  //关IAP
return (IAP_DATA); //读数据
}

void IAP_SectorErase(uchar addr)   ///IAP  察除 程序  //察除addr地址数据
{
IAP_CONTR=0x82;//使能IAP 660个时钟的速度
IAP_CMD=0x03  ;//命令模式是扇区搽除
IAP_ADDRH = (uchar)(addr >> 8);   
IAP_ADDRL = (uchar)(addr & 0x00ff);   
EA=0;
IAP_TRIG=0X5A;
IAP_TRIG=0XA5;
_delay_ms(1);
EA=1;
IAP_Disable();  //关IAP
}

void  IAP_Program(uint addr, uchar dat)    ///IAP 写 程序  在addr地址 写入 dat数据
{
IAP_CONTR=0x82;//使能IAP 660个时钟的速度
IAP_CMD=0x02  ;//命令模式是扇区写
IAP_ADDRH = (uchar)(addr >> 8);   
IAP_ADDRL = (uchar)(addr & 0x00ff);   
IAP_DATA=dat;// 写dat数据
EA=0;
IAP_TRIG=0X5A;
IAP_TRIG=0XA5;
_delay_ms(1);
EA=1;
IAP_Disable();  //关IAP
}

void  main()
{

IAP_SectorErase(0);///察除0地址内容
IAP_SectorErase(1);///察除0地址内容
IAP_SectorErase(2);///察除0地址内容

IAP_Program(0,0x56);  //在0 1 2地址写如2个数据
IAP_Program(1,0x66);
IAP_Program(2,0x76);


if(IAP_read(0)==0x56)   led3=0;  //读3个数据 用LED判断数据有错误没/
if(IAP_read(1)==0x66)   led2=0;
if(IAP_read(2)==0x76)   led1=0;

while(1);
}
同君一席话,胜读十年书。三人同行,必有我师,择其善者而从之,其不善者而改之。QQ:79733188(注明是搞电子的)-mail:chen1986sl_126.com

TOP


4# 发表于 2009-12-23 17:53  只看该作者
再上个125616(AD)

sfr  IAP_DATA =    0xe2;
sfr  IAP_ADDRH =   0xe3;
sfr  IAP_ADDRL =   0xe4;
sfr  IAP_CMD =     0xe5;
sfr  IAP_TRIG =    0xe6;
sfr  IAP_CONTR =   0xe7;













void _delay_ms(uint time)
{
           uint sj;
    for(;time>0;time--)
            {
                   for(sj=125;sj>0;sj--);
            }
}


void  IAP_Disable()//关闭IAP
{
        IAP_CONTR=0;  //关闭IAP
        IAP_CMD=0;    //命令模式清0 可以不要
          IAP_TRIG=0;     //  可以不要
        IAP_ADDRH=0x80;   // 之向高地址 非EEPROM区域
        IAP_ADDRL=0x00;   //  防止误操作
}


uchar IAP_read(uint  addr)       ///IAP 读 程序  //读addr地址的数据 返回
{
IAP_CONTR=0x82;//使能IAP 660个时钟的速度
IAP_CMD=0x01  ;//命令模式是扇区读
IAP_ADDRH = (uchar)(addr >> 8);   
IAP_ADDRL = (uchar)(addr & 0x00ff);   
EA=0;
IAP_TRIG=0X46;
IAP_TRIG=0Xb9;
_delay_ms(1);
EA=1;
IAP_Disable();  //关IAP
return (IAP_DATA); //读数据
}


void IAP_SectorErase(uint addr)   ///IAP  察除 程序  //察除addr地址数据
{
IAP_CONTR=0x82;//使能IAP 660个时钟的速度
IAP_CMD=0x03  ;//命令模式是扇区搽除
IAP_ADDRH = (uchar)(addr >> 8);   
IAP_ADDRL = (uchar)(addr & 0x00ff);   
EA=0;
IAP_TRIG=0X46;
IAP_TRIG=0Xb9;
_delay_ms(1);
EA=1;
IAP_Disable();  //关IAP
}

void  IAP_Program(uint addr, uchar dat)    ///IAP 写 程序  在addr地址 写入 dat数据
{
IAP_CONTR=0x82;//使能IAP 660个时钟的速度
IAP_CMD=0x02  ;//命令模式是扇区写
IAP_ADDRH = (uchar)(addr >> 8);   
IAP_ADDRL = (uchar)(addr & 0x00ff);   
IAP_DATA=dat;// 写dat数据
EA=0;
IAP_TRIG=0X46;
IAP_TRIG=0Xb9;
_delay_ms(1);
EA=1;
IAP_Disable();  //关IAP
}
同君一席话,胜读十年书。三人同行,必有我师,择其善者而从之,其不善者而改之。QQ:79733188(注明是搞电子的)-mail:chen1986sl_126.com


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多