导航:首页 > 操作系统 > 51单片机eeprom如何写入

51单片机eeprom如何写入

发布时间:2025-02-24 23:45:53

A. 51单片机怎么使用内部EEPROM,上电次数、断电记忆,怎么实现计到最大值6千次。

STC 很多都有内部EEPROM,如11或12系列的STC单片机,读写内部EEPROM有一定限制,比如写,必须先擦除再写,而且一次必须擦除一个扇区,所以还是很麻烦的,只能覆盖。

要实兆袜现你的功能,一点问题没有,上电后先读取上次的计数值,再加1重新写进去就可以了。
以下是EEPROM读写子程序供参考:
;------------------------------------------------
;读一字节,调用前需打开 IAP 功能,入口:DPTR = 字节地址,返回:A = 读出字节
IAP_READ:
MOV IAP_CONTR,#ENABLE_IAP ;打开 IAP 功能, 设置 Flash 操作等待时间
MOV IAP_CMD,#ISP_IAP_BYTE_READ ;设置为IAP/ISP/EEPROM字节读模式命令
MOV IAP_ADDRH,DPH ;设置目标单元地址的高8位地址
MOV IAP_ADDRL,DPL ;设置目标单元地址的低8位地址
;CLR EA
MOV IAP_TRIG,#5AH ;先送5Ah,再送A5h到ISP/IAP触发寄存器,每次都需如此
MOV IAP_TRIG,#0A5H ;送完A5h后,ISP/IAP命令立即被触发起动
NOP
MOV A,IAP_DATA ;读出的数据在IAP_DATA单元中,送入累加器A
;SETB EA
LCALL IAP_Disable ;关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU处于安全状态,
;一次连续的IAP操作完成之后建议关闭IAP功能,不需要每次都关
RET
;------------------------------------------------
;字节编程,散闹调用前需打开 IAP 功能,入口:DPTR = 字节地址, A=须编程字节的数据
IAP_WRITE:
MOV IAP_CONTR,#ENABLE_IAP ;打开 IAP 功能, 设置 Flash 操作等待时间
MOV IAP_CMD,#ISP_IAP_BYTE_PROGRAM ;设置为IAP/ISP/EEPROM字节编程模式命令
MOV IAP_ADDRH,DPH ;设置目标单元地址的高8位地址
MOV IAP_ADDRL,DPL ;设置目标单元地址的低8位地址
MOV IAP_DATA,A ;要编程的数据先送进ISP_DATA寄存器
;CLR EA
MOV IAP_TRIG,#5AH ;先送5Ah,再送A5h到ISP/IAP触发寄存器,每次都需如此
MOV IAP_TRIG,#0A5H ;送完A5h后,ISP/IAP命令立即被触发起动
NOP
;SETB EA
LCALL IAP_Disable ;关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU处于安全状态,
;一次连续的IAP操作完成之后建议关闭IAP功能,不需要每次都关
RET
;------------------------------------------------
;擦除扇区, 入口:DPTR = 扇区地址
IAP_Erase:
MOV IAP_CONTR,#ENABLE_IAP ;打开 IAP 功能, 设置 Flash 操作等待时间
MOV IAP_CMD,#03H ;设置为IAP/ISP/EEPROM扇区擦除模式命令
MOV IAP_ADDRH,DPH ;设置目标单元地址的高8位地址
MOV IAP_ADDRL,DPL ;设置目标单元地址的低8位地址
;CLR EA
MOV IAP_TRIG,#5AH ;先送5Ah,再送A5h到ISP/IAP触发寄存器,每次都需如此
MOV IAP_TRIG,#0A5H ;送完A5h后,ISP/IAP命令立即被触发起动
NOP
;SETB EA
LCALL IAP_Disable ;关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU处于安全状态,
;一族掘激次连续的IAP操作完成之后建议关闭IAP功能,不需要每次都关
RET
;------------------------------------------------
IAP_Disable:
;关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU处于安全状态,
;一次连续的IAP操作完成之后建议关闭IAP功能,不需要每次都关
MOV IAP_CONTR,#0 ;关闭 IAP 功能
MOV IAP_CMD,#0 ;清命令寄存器,使命令寄存器无命令,此句可不用
MOV IAP_TRIG,#0 ;清命令触发寄存器,使命令触发寄存器无触发,此句可不用
MOV IAP_ADDRH,#0FFH ;送地址高字节单元为00,指向非EEPROM区
MOV IAP_ADDRL,#0FFH ;送地址低字节单元为00,防止误操作
RET

阅读全文

与51单片机eeprom如何写入相关的资料

热点内容
雅思807词汇pdf 浏览:603
取名用安卓是什么意思 浏览:546
安卓手机怎么样恢复初期设置 浏览:670
python中如何将输入的数据初始化 浏览:780
苹果扫安卓怎么使用浏览器扫一扫 浏览:136
工资查询功能编程 浏览:244
15万贷款怎么算法 浏览:376
起点中文网app在哪里可以下载 浏览:33
解压需要改后缀名mp3 浏览:635
民宿在哪个app订 浏览:6
php删除指定数组 浏览:55
没人玩了服务器还有什么手游 浏览:536
pdf文档能打印吗 浏览:166
什么是单片机发生器 浏览:262
单片机不同进制除法运算 浏览:776
资料如何上传服务器 浏览:563
苹果iosoa源码 浏览:341
ansible命令详解 浏览:918
安卓怎么确认设备管理 浏览:915
梁加密筋示意图 浏览:332