本文目录一览

1,谁能告诉我AT24C02 EEPROM的擦除和读写时间分别是多少

写入固化时间最大11ms,不需要擦除。
eeprom还是用avr自带的吧

谁能告诉我AT24C02 EEPROM的擦除和读写时间分别是多少

2,STC15系列内部EEPROM怎样应用

STC15系列内部EEPROM应用例程,可以在 stc-isp 下载软件 打开后 右上(程序文件)-->的(范例程序)中找 参考程序。
使用内部振荡器很简单,将外部引脚悬空。使用isp程序时将单选框选中内部振荡即可

STC15系列内部EEPROM怎样应用

3,单片机AT24C02 eeprom 校验怎么实现的 还有擦除 求教

这个不是单片机,是一个存储芯片,校验就是查1的个数,看看有多少个,看看接收的与发送的1的个数二者是否相同,所控芯片会回复给主机一个标志,主机用校验指令。,然后二者对比结果,看否一样。用置1来删除内部的数据,但有时候全暴露在阳光下长期照射的话会影响数据的正确率,

单片机AT24C02 eeprom 校验怎么实现的 还有擦除 求教

4,单片机STC15中这一段EEPROM读程序是什么意思读出来的是什么

是读eeprom里面的数据,0到5是索引,类似数组的下标,至于读出来是什么值还要看放进去的是什么值,不过这个是16位的,数字信号肯定是0或1的,不过这个既然用了左移8位,应该不是用来当开关用的,不然都没必要这么高低位组合,直接读位就好了。航模遥控用的,有可能用来匹配地址码,还有一些遥控设置用的数据,如陀螺什么的。
这个我就不给你写出代码了,我只告诉你怎么使用stc15w单片机的内部eeprom,很简单到宏晶官网找到对应单片机型号下载相关data数据手册,手册里面都有告诉你单片机内部的每个功能怎么使用寄存器怎么配置,还有相关代码。注意:学习单片机要学会自己查手册,这是每位单片机开发工程师都不许会的。

5,STC15单片机EEPROM数据掉电丢失

是不是没有按照资料里的例程写EEPROM?最好时序要保持一致,另,关中断。
pcon=0x02; 就可以使芯片进入掉电模式,看芯片资料,上电复位,或者外部中断(有些可以,有些不行)可以从从掉电模式唤醒。
这个有两个最有可能的原因:1,不良使用习惯,甚至是错误操作导致;2,程序有问题,比如有bug之类的。最大的可能是第一个,建议仔细检查使用方法,操作流程等,看看与别的正常的用户有什么细微的差别。第二个原因就只能仔细检查程序了。至于干扰什么的,虽不能完全排除,但可能性不会很高,可以到最后找不到原因的时候再检查
我也出现过类似问题,最后发现擦除函数里面的指令写错了,ISP_TRIG.数值不对,认真对下手册,如果这个数值不对,是能够读写但掉电照样丢失,不同芯片的这个值是不一样的!看你的是不是这个原因
可能写入本身就错了,断电前你返回的数据可能是写入的数据而不是写入后读出的数据。
到stc官网问他们那边工程师,网页上有QQ在线

6,STC89C5251增强型单片机内部资源问题2

我做过STC89C52RC的ram存储实验,全局变量的极限:data可定义95字节 + xdata可定义256字节,共351字节RAM可供用户使用。其它的估计被特殊寄存器占用了。。。。。。。。你也可以做实验试试,实践是检验真理的唯一标准。。。。。。。。。
关于stc89c52:1、stc89c52只有512字节的的ram,包括2部份,一是256字节的内部ram,二是256字节的外部ram;stc89c54以上的芯片才有1k的ram(内256+外1024)。2、1k的eeprom(应为2k)出厂时内置有支持串行下载功能的代码,配合官方下载软件完成代码的串口下载。这个区域在实际应用当中也可用于可保存断电后不能丢失的数据,但实际操作上不能像ram那样直接读写,需要通过专门的寄存器操作来完成读写。3、eeprom不是rom,也不是ram,eeprom也没有用作ram--你先这样记,这个问题说起来内容比较多,后面细谈。4、flash程序存储器8k就是当rom用(这句话严格的讲应该说成“flash程序存储器8k就是当程序存储器用”):基本上是这样。关于rom、falsh后面细说。 是否需要1k的ram:可在编译完成后观察编译结果,如果能编译成功,应该有类似下面的信息:“program size:data=9.0,xdata=1,code =2345”,其中data的整数部份就是你实际需要的内部ram字节数,xdata是你实际需要的外部ram字节数,code是代码长度。你可以根据这个信息选择最合适的stc单片机型号。具体到stc89c52:data<256,xdata<256,code<8192就行对上述的一些概念补充说明(包括_at_)1、51单片机的c语言中有个需要关注的概念就是变量或数据的存储模式(pc机是否有类似的情况我不了解)。在c51中的存储模式是data、bdata、idata、pdata、xdata、code共6种:data、bdata、idata:就是说变量或数据位于单片机的内部ram中(st89c52有256字节),访问速度最快。pdata、xdata:就是说变量或数据位于扩展的外部ram中(st89c52内集成了256字节),相对内部ram访问速度要慢。code:就是程序代码,位于单片机的程序存储其中(st89c52内含8192字节) keil c编译时在有个选项叫数据存储模式(memory model),如果选择小模式,则程序中的变量一般会放在内部ram(data)中,选择其它模式则会放在外部ram(xdata或pdata,采用这两种存储模式的变量在物理上都放在外部ram中,只是寻址方式有所不同,整体上pdata更快些);当然,如果在定义变量时就声明了存储模式,编译时会根据声明决定该变量在哪个区。比如:char data flag就是指定将flag放在内部ram中;char xdata flag _at_0x0000则指定放在外部ram中,而且地址是0x0000。 "_at_" 用于指定变量在内存中的地址。指定地址的方法优点在于调试方便,比如仿真单步运行时可以直接到该地址去更直观的观察变量的实际变化情况,若不指定则编译器会自己决定放在什么地方,只能通过.m51文件去获取该变量的地址了。其缺点则是容易出错,由于人为的因素,可能会成各变量的地址重叠。所以实际应用中一般都不指定地址,编译器会自动安排的,除非是特殊要求。 这里针对内部ram和外部ram再说几句:早先的单片机(8031、8032)外部ram和程序存储器都需要通过p0口p2口来扩展的,51单片机本身没有哪怕是1个字节的外部ram,扩展起来很麻烦。后来随着发展才演变到现在几乎所有的单片机都或多或少的集成了ram和程序存储器,这样大多数应用只需要设计功能电路就可以了,不需要再去扩展,这就降低了不少成本。2、关于flash、rom、prom、eprom、eeprom、ram 我们现在一般都会把单片机的程序存储器叫rom,早先的硬件程序代码确实是放在rom型的器件中(包括电脑的bios),所以rom就是程序、程序就是rom,大家都理解,就成习惯了。其实这是不对的,真正的rom现在很少用了。下面就这几个名词解释一下:ram:一般都叫内存,特点是读写速度快,但断电后数据丢失(后5种断电后数据不丢失)rom:只读存储器。特点是只能读,其内容在芯片出厂时就已经固化,如果有错只能扔掉prom:可编程只读存储器。特点是实际应用中只能读,但应用产品生产环节可由用户来完成对芯片的编程,只能写1次,有错的话下场同rom。eprom:可重复擦写的只读存储器。特点是实际应用中只能读,但可以通过紫外线擦除(也有电擦除的),从而实现再编程,只是编程时一般需要将芯片取下来在专用设备上擦除、编程(电擦除的虽然可以在用户系统上实现擦除及编程,但必须设计专门的擦除编程电路)。上世纪90年代基本上都采用的是这种模式,如果你看到某个芯片上有个小玻璃窗,一般就是这种工艺的芯片。紫外线擦除需要15分钟的时间,也很麻烦,而且映像中编程次数只有1000次。eeprom:可重复擦写的非易失性存储器。特点是可读可写,且断电后数据不丢失。采取这种工艺的芯片大多数都是通过iic总线模式来访问的。但其容量一般都不大,适合于数据不多的应用。flash:可重复擦写的非易失性存储器。特点是可读可写,且断电后数据不丢失。与eeprom的主要区别在于口线更多、存储容量更大、速度更快,还有就是擦写方式不同:eeprom可按字节擦写,而flash是块擦写模式,所以速度上falsh的读写更快。 stc单片机为什么要采取eeprom的模式而不采用flash我不知道,可能是因为eeprom相对成本较低,而且可以直接用作非易失性存储,不需要用户外扩eeprom了。

7,IAP15f2k61s2单片机 的EEPROM程序可以给借鉴一下吗

你看下 这个是可以用的/********************************************************************************** * 工程名 :内部EEPROM读写实验 * 描述 :从EEPROM的地址0x0000起擦除一个扇区,再写512个字节,操作正确LED5闪烁, * 失败则LED6闪烁 **********************************************************************************/#include "STC15F2Kxx.h"#include "LED.H"#include "Delay.h"#include "intrins.h"#define CMD_IDLE 0x00 //空闲模式#define CMD_READ 0x01 //IAP字节读命令#define CMD_PROGRAM 0x02 //IAP字节编程命令#define CMD_ERASE 0x03 //IAP扇区擦除命令//#define ENABLE_IAP 0x80 //if SYSCLK<30MHz//#define ENABLE_IAP 0x81 //if SYSCLK<24MHz#define ENABLE_IAP 0x82 //if SYSCLK<20MHz//#define ENABLE_IAP 0x83 //if SYSCLK<12MHz//#define ENABLE_IAP 0x84 //if SYSCLK<6MHz//#define ENABLE_IAP 0x85 //if SYSCLK<3MHz//#define ENABLE_IAP 0x86 //if SYSCLK<2MHz//#define ENABLE_IAP 0x87 //if SYSCLK<1MHzunsigned char IapReadByte(unsigned int addr);void IapProgramByte(unsigned int addr, unsigned char dat);void IapEraseSector(unsigned int addr);/******************************************************************************** 函数名 : main* 描述 : 主函数,用户程序从main函数开始运行* 输入 : 无* 输出 : 无* 返回值 : 无* 说明 : 无*******************************************************************************/void main(void) unsigned int i=0; Timer0_Init_Config();//定时器0 16位自动重载模式初始配置 while(1) LED_ON();//点亮LED.P21 IapEraseSector(0x0000);//扇区擦除 Delay_Nms(10);//延时10ms for(i=0; i<512; i++)//检测是否擦除成功(全FF检测) if(IapReadByte(0x0000+i) != 0xff)//如果擦除失败 LED_OFF();//点亮LED.P21 goto ERROR; } } Delay_Nms(10);//延时10ms for(i=0; i<512; i++)//编程512字节 IapProgramByte(0x0000+i, (unsigned char)i);//写一字节数据到ISP/IAP/EEPROM指定地址 } Delay_Nms(10);//延时10ms for (i=0; i<512; i++)//校验512字节 if(IapReadByte(0x0000+i) != (unsigned char)i)//如果数据写入失败 LED_OFF();//点亮LED.P21 goto ERROR; } } LED_OFF(); //点亮LED.P21 Delay_Nms(500);//延时10ms }ERROR://如果操作失败 while(1) LED_ON(); //点亮LED.P21 Delay_Nms(250);//延时10ms LED_OFF(); //点亮LED.P21 Delay_Nms(250);//延时10ms }}/******************************************************************************** 函数名 : IapIdle* 描述 : 关闭IAP* 输入 : 无* 输出 : 无* 返回值 : 无* 说明 : STC15F2K60S2的EEPROM有1K,2个扇区,地址0x000~0x3ff*******************************************************************************/void IapIdle() IAP_CONTR = 0; //关闭IAP功能 IAP_CMD = 0; //清除命令寄存器 IAP_TRIG = 0; //清除触发寄存器 IAP_ADDRH = 0x80; //将地址设置到非IAP区域 IAP_ADDRL = 0;}/******************************************************************************** 函数名 : IapReadByte* 描述 : 从ISP/IAP/EEPROM指定地址读取一字节* 输入 : addr:地址,* 输出 : 无* 返回值 : dat:返回数据* 说明 : STC15F2K60S2的EEPROM有1K,2个扇区,地址0x000~0x3ff*******************************************************************************/unsigned char IapReadByte(unsigned int addr) unsigned char dat; //数据缓冲区 IAP_CONTR = ENABLE_IAP; //使能IAP IAP_CMD = CMD_READ; //设置IAP命令 IAP_ADDRL = addr; //设置IAP低地址 IAP_ADDRH = addr >> 8; //设置IAP高地址 IAP_TRIG = 0x5a; //写触发命令(0x5a) IAP_TRIG = 0xa5; //写触发命令(0xa5) _nop_(); //等待ISP/IAP/EEPROM操作完成 dat = IAP_DATA; //读ISP/IAP/EEPROM数据 IapIdle(); //关闭IAP功能 return dat; //返回}/******************************************************************************** 函数名 : IapProgramByte* 描述 : 写一字节数据到ISP/IAP/EEPROM指定地址* 输入 : addr:地址,dat:数据* 输出 : 无* 返回值 : 无* 说明 : STC15F2K60S2的EEPROM有1K,2个扇区,地址0x000~0x3ff*******************************************************************************/void IapProgramByte(unsigned int addr, unsigned char dat) IAP_CONTR = ENABLE_IAP; //使能IAP IAP_CMD = CMD_PROGRAM; //设置IAP命令 IAP_ADDRL = addr; //设置IAP低地址 IAP_ADDRH = addr >> 8; //设置IAP高地址 IAP_DATA = dat; //写ISP/IAP/EEPROM数据 IAP_TRIG = 0x5a; //写触发命令(0x5a) IAP_TRIG = 0xa5; //写触发命令(0xa5) _nop_(); //等待ISP/IAP/EEPROM操作完成 IapIdle();}/******************************************************************************** 函数名 : IapEraseSector* 描述 : 扇区擦除* 输入 : addr:擦除扇区起始地址* 输出 : 无* 返回值 : 无* 说明 : STC15F2K60S2的EEPROM有1K,2个扇区,地址0x000~0x3ff*******************************************************************************/void IapEraseSector(unsigned int addr) IAP_CONTR = ENABLE_IAP; //使能IAP IAP_CMD = CMD_ERASE; //设置IAP命令 IAP_ADDRL = addr; //设置IAP低地址 IAP_ADDRH = addr >> 8; //设置IAP高地址 IAP_TRIG = 0x5a; //写触发命令(0x5a) IAP_TRIG = 0xa5; //写触发命令(0xa5) _nop_(); //等待ISP/IAP/EEPROM操作完成 IapIdle();}

文章TAG:stc15eeprom  多少  多少次  
下一篇