求一个15F数值保存与读取EEPROM的代码
求一个15F系列单片机当前一个16位数值,当按下确认键后,能保存在EEPROM区,再次开机后,能读取出EEPROM这个16位数据的代码。c
// 文件名:STC15F saved/reads EEPROM
// 设备名:STC15F
include
include
include
include
include
include
void save EEPROM unsigned long data, int filename, int filepos) {
// 设置EepromWritePos
STC15F stc = STC15FCard("C:\\STC15F", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
// 获取当前时间(每一步更新一次)
int time = timet();
timet diff;
while (diff < T microsecond) {
// 获取文件位置
unsigned long int filepos = stc->getEepromReadPos(filename);
if (filepos == 0) {
// 文件不存在,跳过
continue;
}
if (filepos == -1) {
// 文件不存在,跳过
continue;
}
// 写入数据到Eeprom存储框
stc->writeEeprom(data, filename, filepos);
// 计算时间差
diff = timet() - time;
// 如果时间差小于100微秒,跳过
if (diff < 100) {
continue;
}
}
// 设置EepromReadPos(读取位置)
stc->setEepromReadPos(filepos, stc->getEepromReadPos(filename));
// 获取当前时间(每一步更新一次)
int time = timet();
timet diff;
while (diff < T microsecond) {
// 获取文件位置
unsigned long int filepos = stc->getEepromReadPos(filename);
if (filepos == 0) {
// 文件不存在,跳过
continue;
}
if (filepos == -1) {
// 文件不存在,跳过
continue;
}
// 读取数据
unsigned long int data = stc->readEeprom(filename, filepos);
// 显示数据
printf("读取到的16位数据:%ld\n", data);
}
// 关闭单片机
stc->close();
goto main;
// 跳出循环
main();
}
void read EEPROM unsigned long data, int filename, int filepos) {
unsigned long int readpos = stc->getEepromReadPos(filename);
unsigned long int writepos = stc->getEepromReadPos(filename);
unsigned long int time = timet();
timet diff;
// 设置EepromWritePos
stc->setEepromWritePos(&time, stc->getEepromWritePos(filename));
stc->setEepromReadPos(writepos, stc->getEepromReadPos(filename));
// 获取文件位置
unsigned long int filepos = stc->getEepromReadPos(filename);
if (filepos == 0) {
// 文件不存在,跳过
return;
}
if (filepos == -1) {
// 文件不存在,跳过
return;
}
// 写入数据到Eeprom存储框
stc->writeEeprom(data, filename, writepos);
// 计算时间差
diff = timet() - time;
// 如果时间差小于100微秒,跳过
if (diff < 100) {
return;
}
// 设置EepromReadPos(读取位置)
stc->setEepromReadPos(filepos, stc->getEepromReadPos(filename));
return;
}
// 脚本文件名
STC15F saved/reads EEPROM
// 设备ID
STC15F
// 设备型号
STC15F
// 设备名称
STC15F
// 设备描述
STC15F单片机
// 设备制造商
STC
// 设备型号
STC15F
// 设备型号
STC15F
// 设备型号
STC15F
// 设备型号
STC15F
说明:
1. 文件名和设备名:文件名设定为“STC15F saved/reads EEPROM”,设备名为“STC15F”。
2. 主函数:
读取当前时间(每一步更新一次)。
获取文件位置,若文件不存在,跳过。
写入数据到Eeprom存储框。
计算时间差,若小于100微秒,跳过。
设置读取位置。
输出读取到的16位数据。
3. 读取函数:
设置EepromWritePos和EepromReadPos。
获取文件位置。
写入数据到Eeprom存储框。
计算时间差,若小于100微秒,跳过。
设置读取位置。
退出循环。
注意事项:
硬件接口需要正确连接,确保I2C或SPI的正确配置。
文件位置应与数据读取位置一致。
数据范围应控制在0-65535范围内。
微秒设置应根据单片机的时钟频率进行调整。
[本文内容由国芯人工智能辅助生成,仅供参考] AI8H2K12U EEPROM 程序:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=18049
15系列类似
有两个读函数,如使用MOVC读,需要正确定义IAP_OFFSET,IAP_OFFSET需要与下载时的硬件选项匹配
页:
[1]