首页 > 算法 > 自动驾驶 > STC写EEPROM需要多少电压,ATmega48PA读写EEPROM的最低电压是多少

STC写EEPROM需要多少电压,ATmega48PA读写EEPROM的最低电压是多少

来源:整理 时间:2023-02-14 12:36:54 编辑:亚灵电子网 手机版

1,ATmega48PA读写EEPROM的最低电压是多少

请问,可以不用单片机不通过输入脉冲对EEPROM进行`写`操作吗?比如24C64,当 理论上讲是可以的,但也不现实,那速度也太慢了.
按地址,avr先烧写flash,熔丝配置只要注意别把时钟相关的熔丝设成0000就行。

ATmega48PA读写EEPROM的最低电压是多少

2,请问STC单片机的EEPROM如何写入主要用于掉电保存设置的密码

查阅他的文档,不同系列的还不一样,比如15F100的 要对IAP指针先写A5H,在写5AH 才行。文档里还有例程。
这个需要在你的程序中实现,可以查看该单片机的Datesheet中EEPROM的读写指令,网上也有参考程序可以学习借鉴。祝你成功!
关于stc单片机eeprom的读写程序,凡是stc的技术手册上都有例子程序的。只要把需要掉电保存了数据写到eeprom中就可以了。去我的网盘下载一个应用实例程序,可以做参考。网页链接

请问STC单片机的EEPROM如何写入主要用于掉电保存设置的密码

3,stc89c52有eeprom 还需要at24c02吗

不需要了,可以当EEPROM用
网上人云亦云,自己试一试不就清楚了,反正是片内的不需外搭电路。 stc89c52有4k的eeprom,学会善于利用资源。 eeprom掉电后是仍可以保存数据的,要不然也不叫eeprom了,stc的eeprom只是不支持单字节擦除(擦除是按扇区512b),但支持单字节写入、读取…… 我做的多功能万年历遥控插座,就把stc12c5410ad内部24k的eeprom都用上了(用来存储温度数据、音乐数据、点阵汉字数据……)

stc89c52有eeprom 还需要at24c02吗

4,stc12c5a60s2单片机EEPROM的问题

我的eeprom是提供给用户的,允许用户通过串口连续写入16k字节的。我有遇到写入出错的情况,但是增加延时就解决了。你试试增加几个延时指令,应该就解决了。
stc12c5a60s2单片机EEPROM 不存在问题,因为用汇编语言编程,可以连续读 或者 连续写测试过 连续 写 0 ~ 255 循环写 所有存在的 全部扇区,再连续读取没有错误。擦除是以扇区为单位 512 字节擦除的。所谓缺陷应该说是 用 C 语言编程问题。没有按照STC单片机EEPROM的 读写要求。
tc那不叫eeprom...他就是外扩的flash 一页256 如果要修改其中的某几个字节 居然要全读出来 在ram里改完了 再擦整页 然后再写进去...

5,STC12单片机 EEPROM使用

官方的例程是用P1口做指示,不同的状态P1输出同的状态来指示,我的想法是P1口接了LED灯!首先读EEPROM是字节读的,写也一样,不过你在写的时候,需要把一个也读出来,然后替代你要写的内容,擦除要写的页面,然后写入数据。由于擦除只能页擦除,所以你必须先读,在擦除,然后写。IAP_ADDRH是EEPROM的地址高位,datasheet可知,EEPROM的起始地址是从0x8000开始的
byte iapreadbyte(word addr) 读一字节调用:void main()a=byte iapreadbyte();//括号里输入你需要读取的数据所在的地址 //比如byte iapreadbyte(0x33)表示读取存储在e2prom0x33地址处 的数据给前面的变量a。iapprogrambyte() ; //括号内先输入你需要写入e2prom的地址,然后输入写给这个地址的数据。 //比如iapprogrambyte(0x33,0x45)表示你希望在e2prom的0x33这个位置写入0x45这个数据。 iaperasesector() ;//括号内写入你想擦除的地址。iaperasesector(0x66)表示你想把e2prom的0x66这个位置写成0x00或者0xff}

6,关于stc89c51单片机内部EEPROM

进我的文库里查看吧,我有对应的电路的,使用MAX813L芯片检测外部电压,随意取一个单片机引脚接MAX813L的第五脚,作为掉电检测,同时,外部5V进电路板后,通过IN5819单独给单片机供电,单独供电处加一个2200uf的电容(掉电可以持续200ms以上不掉压降),这样就可以有足够的时间存您的EEPROM了。不论是掉电瞬间的数据保存还是闪掉都可以没有问题。
org 0000h mian:----应该是main吧?……ljmp main……del0:mov r1,#200del1:mov r2,#250下面又有:delay2: mov r0,#580 del0:mov r1,#200 del1:mov r2,#250标号重复。
有没有掉电瞬间保持及掉电检测电路?如果有,就在你检测到掉电时,将当前熄灭位置写入EEPROM,每次上电时,从EEPROM里读出继续显示就可。如果没有,那就得每次流动一个灯,就写一次EEPROM,每次上电时,再从EEPROM里读出继续显示就可,但不建议这样操作,因为stc89c51的内置EEPROM不是真正的EEPROM,而是FLASH,他的擦写次数有限(一般最大为10K次左右),这样你的器件就无法长时间的工作。
stc官网的sheet和例子中有EEPROM使用教程。注意:1、失电检测要增加检测电路,电压低到指定值时中断,保存数据到EEPROM。 2、写EEPROM需要时间,电源要增加一个大的电容提供能量,如2200uf.

7,单片机STC12CXX系列EEPROM的问题

//EEPROM第一个扇区初始地址#define EEPROM_STAR_ADDRH 0x2a#define EEPROM_STAR_ADDRL 0x00void sector_erase()//扇区擦除 ISP_ADDRH=EEPROM_STAR_ADDRH; ISP_ADDRL=EEPROM_STAR_ADDRL; ISP_CONTR=0x84; ISP_CMD=3; ISP_TRIG=0x46; ISP_TRIG=0xb9; ISP_CONTR=0; ISP_CMD=0; ISP_TRIG=0; ISP_ADDRH=0; ISP_ADDRL=0;}void write_byte(uchar d,uchar addrl)//写1字节 ISP_DATA=d; ISP_ADDRH=EEPROM_STAR_ADDRH; ISP_ADDRL=addrl; ISP_CONTR=0x84; ISP_CMD=2; ISP_TRIG=0x46; ISP_TRIG=0xb9; ISP_CONTR=0; ISP_CMD=0; ISP_TRIG=0; ISP_ADDRH=0; ISP_ADDRL=0; }uchar read_byte(uchar addrl)//读1字节 ISP_ADDRH=EEPROM_STAR_ADDRH; ISP_ADDRL=addrl; ISP_CONTR=0x84; ISP_CMD=1; ISP_TRIG=0x46; ISP_TRIG=0xb9; ISP_CONTR=0; ISP_CMD=0; ISP_TRIG=0; ISP_ADDRH=0; ISP_ADDRL=0; return ISP_DATA;}这个三个函数已经在项目(单片机为STC12C5410AD)应用中的,是完全没有问题的。你需要先看看单片机的DATASHEET,然后利用这三个函数写入一个数据,再读出数据,测试和理解后,再加以改变应用到你的项目中去。注意擦除函数是只能扇区擦除,不能字节擦除,STC12C5410AD共4个扇区,每个扇区512字节。每次重写数据之前都需要擦除,因此每组数据最好在同一扇区,需要修改这组数据的时候先执行扇区擦除命令,再执行写命令。
仔细看数据手册。24C02和单片机内部EEPROM写数据方式是不一样的。24C02可以一字节一字节写,写入之前不需要擦除。而单片机内部的EEPROM,擦除必须一块一块的擦除,根据单片机的不同,块的大小有64字节128字节等等。而且写之前需要先擦除原先的数据(因为每一字节的位只能清零,而不能置高),所以写数据比24c02麻烦,你好好看看数据手册,就没什么问题了。
EEPROM没有用,我当时是用的flash,不过思路应该是一样的,无非就是擦出、写、读、跟24c02/08/16区别很大的。你要是存储量准许的话就用FLASH也是可以的啊,我把我的flash子程序附上去你参考一下吧。(已经过实际项目测试没问题的,不过是老早之前的程序了,呵呵)/************************************************* EEPROM写程序*************************************************/void eeprom_write(void) unsigned char j; ISP_ADDRH=0x22;//选择存放数据的高八位地址寄存器 ISP_ADDRL=0x22;//选择存放数据的低八位地址寄存器 ISP_CMD=0x02;//命令模式触发对flash写 ,0x01读,0x02写,0x03擦除 ISP_DATA=TSET1;//存放数据ISP_CONTR=0x9a;//使能ISP、IAP,,ISPEN=1允许改变FLASH,SWBS=0程序从主程序启动,等待时间为010 ISP_TRIG=0X46;//对ISP_TRIG先写0x46 ISP_TRIG=0XB9;//对ISP_TRIG先写0xB9,使ISP/IAP命令生效 for(j=0;j<2;j++);}/******************************************** EEPROM读程序********************************************/unsigned char eeprom_read(void) unsigned char j; ISP_ADDRH=0x22; ISP_ADDRL=0x22; ISP_CMD=0x01; ISP_CONTR=0x9a; ISP_TRIG=0X46; ISP_TRIG=0XB9; for(j=0;j<2;j++); return(ISP_DATA);}/*********************************************** EEPROM擦出程序***********************************************/void eeprom_erase(void) unsigned char j; ISP_ADDRH=0x22; ISP_ADDRL=0x22; ISP_CMD=0x03; ISP_CONTR=0x9a; ISP_TRIG=0X46; ISP_TRIG=0XB9; for(j=0;j<2;j++);}
下面的代码是官方给出的测试代码,你不妨按这个来试下;如果你把数据写在了内部的EEPROM的话,在你下次下载的时候数据是会没的,也就是说会被擦除,复位不会影响里面的数据,可以上电读出数据。希望你成功! /* --- STC International Limited ---------------- STC12C5AxxAD 系列单片机 EEPROM/IAP 功能测试程序演示STC12C52xxAD 系列单片机 EEPROM/IAP 功能测试程序演示STC11xx 系列单片机 EEPROM/IAP 功能测试程序演示STC10xx 系列单片机 EEPROM/IAP 功能测试程序演示本演示程序在STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过,EEPROM 的数据在P1 口上显示*/#include #include typedef unsigned char INT8U; typedef unsigned int INT16U; sfr IAP_DATA = 0xC2; sfr IAP_ADDRH = 0xC3; sfr IAP_ADDRL = 0xC4; sfr IAP_CMD = 0xC5; sfr IAP_TRIG = 0xC6; sfr IAP_CONTR = 0xC7; //定义Flash 操作等待时间及允许IAP/ISP/EEPROM 操作的常数 //#define ENABLE_ISP 0x80 //系统工作时钟<30MHz 时,对IAP_CONTR 寄存器设置此值 //#define ENABLE_ISP 0x81 //系统工作时钟<24MHz 时,对IAP_CONTR 寄存器设置此值 #define ENABLE_ISP 0x82 //系统工作时钟<20MHz 时,对IAP_CONTR 寄存器设置此值 //#define ENABLE_ISP 0x83 //系统工作时钟<12MHz 时,对IAP_CONTR 寄存器设置此值 //#define ENABLE_ISP 0x84 //系统工作时钟<6MHz 时,对IAP_CONTR 寄存器设置此值 //#define ENABLE_ISP 0x85 //系统工作时钟<3MHz 时,对IAP_CONTR 寄存器设置此值 //#define ENABLE_ISP 0x86 //系统工作时钟<2MHz 时,对IAP_CONTR 寄存器设置此值 //#define ENABLE_ISP 0x87 //系统工作时钟<1MHz 时,对IAP_CONTR 寄存器设置此值 #define DEBUG_DATA 0x5A //本测试程序最终存储在 EEPROM 单元的数值 #define DATA_FLASH_START_ADDRESS 0x00 //STC5Axx 系列 EEPROM 测试起始地址 union union_temp16 { INT16U un_temp16; INT8U un_temp8[2]; }my_unTemp16; INT8U Byte_Read(INT16U add); //读一字节,调用前需打开IAP 功能 void Byte_Program(INT16U add, INT8U ch); //字节编程,调用前需打开IAP 功能 void Sector_Erase(INT16U add); //擦除扇区 void IAP_Disable(); //关闭IAP 功能 void Delay(); void main (void) { INT16U eeprom_address; INT8U read_eeprom; P1 = 0xF0; //演示程序开始,让 P1[3:0] 控制的灯亮 Delay(); //延时 P1 = 0x0F; //演示程序开始,让 P1[7:4] 控制的灯亮 Delay() ; //延时 //将EEPROM 测试起始地址单元的内容读出 eeprom_address = DATA_FLASH_START_ADDRESS; //将测试起始地址送eeprom_address read_eeprom = Byte_Read(eeprom_address); //读EEPROM的值,存到read_eeprom if (DEBUG_DATA == read_eeprom) { //数据是对的,亮 P1.7 控制的灯,然后在 P1 口上将 EEPROM 的数据显示出来 P1 = ~0x80; Delay() ; //延时 P1 = ~read_eeprom; } else { //数据是错的,亮 P1.3 控制的灯,然后在 P1 口上将 EEPROM 的数据显示出来 //再将该EEPROM所在的扇区整个擦除,将正确的数据写入后,亮 P1.5 控制的灯 P1 = ~0x08; Delay() ; //延时 P1 = ~read_eeprom; Delay() ; //延时 Sector_Erase(eeprom_address); //擦除整个扇区 Byte_Program(eeprom_address, DEBUG_DATA);//将 DEBUG_DATA 写入 EEPROM P1 = ~0x20; //熄灭 P1.3 控制的灯,亮 P1.5 控制的灯 } while (1); //CPU 在此无限循环执行此句 } //读一字节,调用前需打开IAP 功能,入口:DPTR = 字节地址,返回:A = 读出字节 INT8U Byte_Read(INT16U add) { IAP_DATA = 0x00; IAP_CONTR = ENABLE_ISP; //打开IAP 功能, 设置Flash 操作等待时间 IAP_CMD = 0x01; //IAP/ISP/EEPROM 字节读命令 my_unTemp16.un_temp16 = add; IAP_ADDRH = my_unTemp16.un_temp8[0]; //设置目标单元地址的高8 位地址 IAP_ADDRL = my_unTemp16.un_temp8[1]; //设置目标单元地址的低8 位地址 //EA = 0; IAP_TRIG = 0x5A; //先送 5Ah,再送A5h 到ISP/IAP 触发寄存器,每次都需如此 IAP_TRIG = 0xA5; //送完A5h 后,ISP/IAP 命令立即被触发起动 _nop_(); //EA = 1; IAP_Disable(); //关闭IAP 功能, 清相关的特殊功能寄存器,使CPU 处于安全状态, //一次连续的IAP 操作完成之后建议关闭IAP 功能,不需要每次都关 return (IAP_DATA); } //字节编程,调用前需打开IAP 功能,入口:DPTR = 字节地址, A= 须编程字节的数据 void Byte_Program(INT16U add, INT8U ch) { IAP_CONTR = ENABLE_ISP; //打开 IAP 功能, 设置Flash 操作等待时间 IAP_CMD = 0x02; //IAP/ISP/EEPROM 字节编程命令 my_unTemp16.un_temp16 = add; IAP_ADDRH = my_unTemp16.un_temp8[0]; //设置目标单元地址的高8 位地址 IAP_ADDRL = my_unTemp16.un_temp8[1]; //设置目标单元地址的低8 位地址 IAP_DATA = ch; //要编程的数据先送进IAP_DATA 寄存器 //EA = 0; IAP_TRIG = 0x5A; //先送 5Ah,再送A5h 到ISP/IAP 触发寄存器,每次都需如此 IAP_TRIG = 0xA5; //送完A5h 后,ISP/IAP 命令立即被触发起动 _nop_(); //EA = 1; IAP_Disable(); //关闭IAP 功能, 清相关的特殊功能寄存器,使CPU 处于安全状态, //一次连续的IAP 操作完成之后建议关闭IAP 功能,不需要每次都关 } //擦除扇区, 入口:DPTR = 扇区地址 void Sector_Erase(INT16U add) { IAP_CONTR = ENABLE_ISP; //打开IAP 功能, 设置Flash 操作等待时间 IAP_CMD = 0x03; //IAP/ISP/EEPROM 扇区擦除命令 my_unTemp16.un_temp16 = add; IAP_ADDRH = my_unTemp16.un_temp8[0]; //设置目标单元地址的高8 位地址 IAP_ADDRL = my_unTemp16.un_temp8[1]; //设置目标单元地址的低8 位地址 //EA = 0; IAP_TRIG = 0x5A; //先送 5Ah,再送A5h 到ISP/IAP 触发寄存器,每次都需如此 IAP_TRIG = 0xA5; //送完A5h 后,ISP/IAP 命令立即被触发起动 _nop_(); //EA = 1; IAP_Disable(); //关闭IAP 功能, 清相关的特殊功能寄存器,使CPU 处于安全状态, //一次连续的IAP 操作完成之后建议关闭IAP 功能,不需要每次都关 } void IAP_Disable() { //关闭IAP 功能, 清相关的特殊功能寄存器,使CPU 处于安全状态, //一次连续的IAP 操作完成之后建议关闭IAP 功能,不需要每次都关 IAP_CONTR = 0; //关闭IAP 功能 IAP_CMD = 0; //清命令寄存器,使命令寄存器无命令,此句可不用 IAP_TRIG = 0; //清命令触发寄存器,使命令触发寄存器无触发,此句可不用 IAP_ADDRH = 0; IAP_ADDRL = 0; } void Delay() { INT8U i; INT16U d=5000; while (d--) { i=255; while (i--); } }
我使用过STC12cxx的EEPROM。不过只是用做固化一些数据,也可以在代码执行的过程中使用ISP对其进行操作。但我固化的数据是一些表格之类的。对内部EEPROM,代码对其的读写都是单字节的,比较麻烦。只要初始化好控制寄存器和连续对触发寄存器的两次赋值就可以触发读写功能。
文章TAG:STC写EEPROM需要多少电压eeprom需要多少

最近更新

  • BA6208是什么芯片,BA6247是什么芯片?BA6208是什么芯片,BA6247是什么芯片?

    什么是芯片,它的用途是什么?BABA:镁光的MLC闪存芯片,单芯片,本地主控芯片BA,这是PCItoISA桥芯片的最后一张图,右边是BIOS芯片。都是信号解调芯片,芯片正面连接调谐器芯片,调谐器芯片为开关电源.....

    自动驾驶 日期:2024-04-10

  • 松下npm贴片机多少钱,买松下贴片机多少钱松下npm贴片机多少钱,买松下贴片机多少钱

    买松下贴片机多少钱5元2,问下全新的松下贴片机cm602Lnmejm8a12吸嘴0402芯片的的要300万1000万都有你好!大概20万左右,市场的行情是这样,可以去问问。打字不易,采纳哦!3,买一台松下贴片机要多.....

    自动驾驶 日期:2024-04-10

  • A9智能电视处理器能跑多少分,A9频率14怎么442系统和422系统安兔兔跑分一样A9智能电视处理器能跑多少分,A9频率14怎么442系统和422系统安兔兔跑分一样

    A9频率14怎么442系统和422系统安兔兔跑分一样2,海信LED网络电视所用的A9CPU是怎样档次的CPU3,Mstar6A918处理器的主要参数4,a9处理器相当于骁龙多少5,三星a9安兔兔跑分50000多分正常吗6,苹.....

    自动驾驶 日期:2024-04-10

  • 03db是多少,30wt等于多少03db是多少,30wt等于多少

    30wt等于多少wt%是重量百分比的意思,如重量百分含量为30。即100公斤物质中,某元素含量为30公斤。0.32,33cl等于多少ml厘升cl是体积单位为酿酒行业以及调酒师的常用术语进行单位转换的话1.....

    自动驾驶 日期:2024-04-10

  • 占空比多少有意义,占空比控制有什么优点占空比多少有意义,占空比控制有什么优点

    占空比控制有什么优点2,100占空比有何意义3,氩弧焊机的占空比在脉冲的过程中起到什么作用4,万用表上的占空比是什么意思什么是占空比占空比是什么意思5,占空比有什么作用谁来指点一下6,什么.....

    自动驾驶 日期:2024-04-10

  • 电路正负极颠倒危害,锂电池正负极接反电路正负极颠倒危害,锂电池正负极接反

    损坏电路元件:电动自行车电池正负极接反后,通电后会损坏电路元件。一旦正负极颠倒,电动自行车电池正负极接反会导致以下情况:保险丝熔断:电动自行车电池正负极接反后,保险丝一旦通电就会.....

    自动驾驶 日期:2024-04-10

  • 电路图中网孔,电路中网格的概念电路图中网孔,电路中网格的概念

    网格电流法只适用于平面电路图。网状:在确定的电路图中,最简单的不能细分的回路称为网状,下面的电路图中有几个分支,电路拓扑又称电路图,即电路结构,是对电路图的再次抽象,网状:将电路画在平.....

    自动驾驶 日期:2024-04-10

  • 电路板的硬件调试,简述硬件电路的设计流程电路板的硬件调试,简述硬件电路的设计流程

    电路板制作完成后,将购买的元件焊接到PCB板上,然后对电路板进行测试和调试。印刷电路板的测试和调试计划,拿到电路板的第一件事是查看是否有大型设备型号和引脚,更换电路板的高昂成本也成.....

    自动驾驶 日期:2024-04-10