用51单片机和EEPROM如何写掉电存储汇编程序

作者&投稿:祗使 (若有异议请与网页底部的电邮联系)
51单片机如何往EEPROM 如何写掉电存储汇编程序。~

51单片机如何往EEPROM ,不同品牌的有点不一样,如 STC 系列的 读写方法 汇编

; / *** *** *** *** *** / 读写 STC12C5204 EEPROM
; / *** *** *** *** *** / 2K 字节 写 100,000 次
; 0000-01FFH 0200-03FFH
ISPRH EQU 7AH
ISPRL EQU 7BH
ISPWH EQU 7CH
ISPWL EQU 7DH
; / *** *** *** *** *** / 1 字节读
ISP000: MOV ISP_CONTR, #83H ; 打开 IAP 功能 设置等待时间
MOV ISP_CMD, #01H ; 送字节读命令
MOV ISP_ADDRH, ISPRH ; 送地址高字节
MOV ISP_ADDRL, ISPRL ; 送地址低字节
CLR EA ; 关中断
MOV ISP_TRIG, #46H ; 起动 ISP/IAP 触发寄存器
MOV ISP_TRIG, #0B9H
NOP
MOV A, ISP_DATA ; 将读出的数据送往Acc
; JB LVDBZ, $+5
SETB EA
ACALL ISP30 ; 关闭 IAP 功能
RET
; / *** *** *** *** *** / 1 字节编程
ISP010: MOV ISP_CONTR, #83H ; 打开 IAP 功能 设置等待时间
MOV ISP_CMD, #02H ; 送字节编程命令
MOV ISP_ADDRH, ISPWH ; 送地址高字节
MOV ISP_ADDRL, ISPWL ; 送地址低字节
MOV ISP_DATA, A ; 数据进ISP_DATA
CLR EA ; 关中断
MOV ISP_TRIG, #46H ; 起动 ISP/IAP 触发寄存器
MOV ISP_TRIG, #0B9H
NOP
; JB LVDBZ, $+5
SETB EA
ACALL ISP30 ; 关闭 IAP 功能
RET
; / *** *** *** *** *** / 擦除扇区
ISP020: MOV ISP_CONTR, #83H ; 打开 IAP 功能 设置等待时间
MOV ISP_CMD, #03H ; 送擦除扇区命令
MOV ISP_ADDRH, ISPWH ; 送地址高字节
MOV ISP_ADDRL, ISPWL ; 送地址低字节
CLR EA ; 关中断
MOV ISP_TRIG, #46H ; 起动 ISP/IAP 触发寄存器
MOV ISP_TRIG, #0B9H
NOP
; JB LVDBZ, $+5
SETB EA
ACALL ISP30 ; 关闭 IAP 功能
RET
; / *** *** *** *** *** / 关闭 IAP 功能
ISP30: MOV ISP_CONTR, #00H
MOV ISP_CMD, #00H
MOV ISP_TRIG, #00H
MOV ISP_ADDRH, #0FFH ; 地址H=FF,指向非EEPROM 区
MOV ISP_ADDRL, #0FFH ; 地址L=FF,防止误操作
RET

简单的方式:变化一次写一次,无论是否掉电,再次上电先读eeprom
复杂的方式
按照如图连接,要求是单片机必须有掉电检测功能

(1)51单片机只能往外部的eeprom写,要用movc指令;
(2)51单片机访问外部存储器的地址线为16位,最多64kB的地址空间。假如你选了一个2kB的EEPROM,那么只需要11跟地址线,你把51的低11位地址与EEPROM相连,将第12位地址线连到EEPROM的选通线。在这个例子里,2048~4096的地址空间即对应你的EEPROM,随便你往哪里写。

呵呵,你是用的存储器不同写的方法也不一样,目前有spi和i2c甚至有更高级的,不过基本类似,仙都后写,多看看存储器方面的资料,祝你好运

不可以.


单片机选型
内带AD转换,多路PWN输出,自带看门狗、EEP、全双工IO无需上拉电阻,而且输出电流较大,20mA的输出和40mA的灌入电流最重要的是,工作再12M时钟时可达到12MIPS,也就是说内部没有进行分频,支持在线下载和编程,下载无需编程器,只需要一个USB-ISP下载线就行。但这款单片机价格较51的贵些,但是性能还...

ROM 是只读存储器,不能修改。。。那么单片机每次下载进去的程序,上哪了...
现在ROM的定义就不是“不能修改”了,而是“不会被轻易修改”或者“要通过一定的过程去修改”,这样避免误打误撞的操作改变内容造成程序崩溃。每次下载新的程序之前,都将rom原来的程序擦除掉,然后写入新的。就好比用铅笔在白纸上写字,要写新的内容时,就用橡皮擦把原来的抹掉。

STC系列单片机 存储结构 数据类型(stc15L104W)
STC单片机是以51为内核的加强版单片机,所以它属于51系的单片机,各个重要属性当然也和51单片机一样。1、冯诺依曼结构 2、程序在flash里,数据一般在ram里,只有定义为code或者const的变量在flash里 3、你烧写程序时,编译器自动分配各个存储地方,你不用操心 4、看文档,学习51的基础知识,基本的知识要...

关于单片机的种类问题
在众多的51系列单片机中,要算 ATMEL 公司的AT89C51、AT89S52更实用,因他不但和8051指令、管脚完全兼容,而且其片内的4K程序存储器是FLASH工艺的,这种工艺的存储器用户可以用电的方式瞬间擦除、改写,一般专为 ATMEL AT89xx 做的编程器均带有这些功能。显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。

AT24C08这个元件与单片机连接 作用是什么啊 AT24C08主要是干什么用的...
I2c串行flash 芯片。八个脚,两位地址选择,两条通讯线与单片机相连SDA SCK,8k bit空间。通讯速度不是太快。用于少量数据断电保存

STC12c5A60s2单片机 想通过片外EEPROM保存掉电信息!
EEPstore.c \/ STC12C5A60S2扇区分布:第一扇区(512个字节) 第二扇区(512个字节)起始地址 结束地址 起始地址 结束地址 0000H 01FFH 0200H 03FFH \/ include"main.h"include"EEPstore.h"\/\/UINT8 num1;\/\/UINT16 num2;\/ 函数名称:command_and_close 输入:无 输出:无 函数功能...

avr单片机编程错误
你的程序没问题,是makefile 有错。这行:avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex OUTPUT.elf OUTPUT.eep || exit 0 --set-section-flags后,把等号改成空格:--set-section-flags .eeprom="alloc...

台前县17595669389: 用51单片机和EEPROM如何写掉电存储汇编程序 -
唐恒茶碱: (1)51单片机只能往外部的eeprom写,要用movc指令;(2)51单片机访问外部存储器的地址线为16位,最多64kB的地址空间.假如你选了一个2kB的EEPROM,那么只需要11跟地址线,你把51的低11位地址与EEPROM相连,将第12位地址线连到EEPROM的选通线.在这个例子里,2048~4096的地址空间即对应你的EEPROM,随便你往哪里写.

台前县17595669389: 用51单片机和EEPROM如何写掉电存储c程序 -
唐恒茶碱: 直接存储是不行的,单片机本身的RAM是掉电就没有的.一般使用EEPROM,常用的有24c01等,采用I2C协议进行读写数据,怎么使用这类芯片的程序网上搜一下能搜出几吨来.可以自己搜索一下,由于你使用的51单片机,可以直接用IO口来...

台前县17595669389: 51单片机如何往EEPROM 如何写掉电存储汇编程序. -
唐恒茶碱: 51单片机如何往EEPROM ,不同品牌的有点不一样,如 STC 系列的 读写方法 汇编 ; / *** *** *** *** *** / 读写 STC12C5204 EEPROM; / *** *** *** *** *** / 2K 字节 写 100,000 次 ; 0000-01FFH 0200-03FFHISPRH EQU 7AHISPRL EQU 7BH ...

台前县17595669389: 怎样用51单片机读写片内EEPROM -
唐恒茶碱: 看你用那种51的单片机了,STC系列的单片机它的数据手册上就有读写EEPROM的样例程序,去宏晶公司的主页找去.其他公司的51单片机,因厂商设置的结构不一样,所以程序也不一样.

台前县17595669389: 怎样对51单片机内的FLASH和EEPROM编程? -
唐恒茶碱: 程序代码是存放在flash里,中间变量放在RAM里的吧...如果你想把变量数据放到EEPROM中,可以在程序中指定操作放入Flash或者EEPROM中.单纯编译是将程序放到FLASH中的.

台前县17595669389: 51单片机如何读写片内EEPROM -
唐恒茶碱: 片内的?STC的吧,那玩意是FLASH其实,不是按字节读写的,用的是ISP的代码.网上很多,一查就有.如果真是如你说的片内的真正意义上的EEPROM,那么你直接按地址读写字节也就行了呗,呵呵呵.

台前县17595669389: 单片机程序里如何初设EEPROM? -
唐恒茶碱: 可以在EEPROM中设两组数据,一组是你需要的数据,并且再增加一个校验,例如异或AA,而另一组是改写标志,也要带校验,在改写时,要同时改写这两组.上电后,先看数据那一组,如果校验正确,则采用其中的数据. 如果数据组检验错,则看改写标志组,如果其校验正确,则认为是写数据时出错,你根据自己的需求另行处理;如果改写标志组也校验错,则认为是首次上电,你可以将初值写入,并将改写标志组写好.关键是写完一组要回读,保证至少一组是正确的.大体思路是这样,请参考

台前县17595669389: 单片机c语言编程 EEPROM -
唐恒茶碱: 用IO,当某个端口为底或高时变量初始值为0,否则从EEPROM读入.

台前县17595669389: pic单片机EEPROM怎么编写程序啊?? -
唐恒茶碱: 在你的C文件里引用EEPROM函数的头文件,eeprom_routines.h 然后在程序中使用 void eeprom_write(unsigned char addr, unsigned char value); unsigned char eeprom_read(unsigned char addr); 这两个函数了.这两个函数一个读一个写.比...

台前县17595669389: 51单片机使用EEPROM做掉电保护模块.请问掉电检测硬件软件怎么设计,要有电路图 -
唐恒茶碱: 对于51来说 做掉电保护 用软件做 不如 通过两个电阻 分压后 用外部中断做5V电压 通过两个电阻串连后 取样在1.33V左右 然后 通过一个TL431 接入51的中断 做掉电保护 这样 掉电前 你有1秒钟的时间 把数据保存起来

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网