找回密码
 立即注册
查看: 179|回复: 4

请问各位大佬8H1K08eeprom 容量大小和地址的问题

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-03-20 11:16:04
已绑定手机

6

主题

15

回帖

110

积分

注册会员

积分
110
发表于 2025-2-18 11:09:19 | 显示全部楼层 |阅读模式
    先谢谢各位大佬百忙之中进来对新人伸出援助之手。

    目前有一个项目使用8H1K08单片机(因为这个最便宜。)
    EEPROM相关的代码是从ISP软件的例程里修改下来的。
    请问各位大佬 ISP 在 8H1K08 这个芯片的烧录界面 没有设置EEPROM的选项。 我如何设置EEPROM大小 以及初始位置?

/////////////////////////////////////////////////////////eeprom数据存储
#include "intrins.h"



void IapIdle()
{
    IAP_CONTR = 0;                              //关闭IAP功能
    IAP_CMD = 0;                                //清除命令寄存器
    IAP_TRIG = 0;                               //清除触发寄存器
    IAP_ADDRH = 0x80;                           //将地址设置到非IAP区域
    IAP_ADDRL = 0;
}

char IapRead(int addr)
{
    char dat;

    IAP_CONTR = 0x80;                           //使能IAP
    IAP_TPS = 12;                               //设置等待参数12MHz
    IAP_CMD = 1;                                //设置IAP读命令
    IAP_ADDRL = addr;                           //设置IAP低地址
    IAP_ADDRH = addr >> 8;                      //设置IAP高地址
    IAP_TRIG = 0x5a;                            //写触发命令(0x5a)
    IAP_TRIG = 0xa5;                            //写触发命令(0xa5)
    _nop_();
    dat = IAP_DATA;                             //读IAP数据
    IapIdle();                                  //关闭IAP功能

    return dat;
}

void IapProgram(int addr, char dat)
{
    IAP_CONTR = 0x80;                           //使能IAP
    IAP_TPS = 12;                               //设置等待参数12MHz
    IAP_CMD = 2;                                //设置IAP写命令
    IAP_ADDRL = addr;                           //设置IAP低地址
    IAP_ADDRH = addr >> 8;                      //设置IAP高地址
    IAP_DATA = dat;                             //写IAP数据
    IAP_TRIG = 0x5a;                            //写触发命令(0x5a)
    IAP_TRIG = 0xa5;                            //写触发命令(0xa5)
    _nop_();
    IapIdle();                                  //关闭IAP功能
}

void IapErase(int addr)
{
    IAP_CONTR = 0x80;                           //使能IAP
    IAP_TPS = 12;                               //设置等待参数12MHz
    IAP_CMD = 3;                                //设置IAP擦除命令
    IAP_ADDRL = addr;                           //设置IAP低地址
    IAP_ADDRH = addr >> 8;                      //设置IAP高地址
    IAP_TRIG = 0x5a;                            //写触发命令(0x5a)
    IAP_TRIG = 0xa5;                            //写触发命令(0xa5)
    _nop_();                                    //
    IapIdle();                                  //关闭IAP功能
}


void Read_sudu_FromFlash()// 函数1: 从0x0400地址读取数据赋予sudu变量
{
    // 读取0x0400处的数据并赋值给TIME1变量
    sudu = IapRead(0x0400);
}

void Write_sudu_ToFlash(unsigned char kkk)// 函数2: 把sudu变量的数据写入0x0400
{
    // 先擦除再编程以确保数据正确写入
    IapErase(0x0400); // 擦除0x0400处的数据
    IapProgram(0x0400, kkk); // 将TIME变量的数据写入0x0400
}

515f012c3b6f4c9d66d8f5aebcd79961.png 谢谢各位大佬。

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2025-2-18 11:20:51 | 显示全部楼层
多看手册,All you need in here~!
2025-02-18_111854.png

STC8H手册 章节19.3 980页
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-2-18 13:37:39 | 显示全部楼层
非IAP型号,不支持自定义容量,也不支持code区IAP和EEPROM区存储指令
code区和EEPROM区为固定容量8K+4K

截图202502181337318161.jpg

DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-03-20 11:16:04
已绑定手机

6

主题

15

回帖

110

积分

注册会员

积分
110
发表于 2025-2-18 14:55:20 | 显示全部楼层
Lkck*** 发表于 2025-2-18 11:20
多看手册,All you need in here~!

谢谢大佬指导 明白了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-03-20 11:16:04
已绑定手机

6

主题

15

回帖

110

积分

注册会员

积分
110
发表于 2025-2-18 14:56:02 | 显示全部楼层
Debu*** 发表于 2025-2-18 13:37
非IAP型号,不支持自定义容量,也不支持code区IAP和EEPROM区存储指令
code区和EEPROM区为固定容量8K+4K

谢谢大佬 明白了 就是 0000-0FFF 固定的这4K容量
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:19 , Processed in 0.143636 second(s), 74 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表