找回密码
 立即注册
查看: 60|回复: 1

8H8K64U EEPROM读写参考V6.95E 范例程序 哪个芯片

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-04-14 07:09:01

15

主题

51

回帖

577

积分

高级会员

积分
577
发表于 2025-4-10 14:14:30 | 显示全部楼层 |阅读模式
这个读写函数似乎不行

/*----关闭IAP----------------------------*/
              void IapIdle()
              {
              IAP_CONTR = 0;                              //关闭IAP功能
              IAP_CMD = 0;                                //清除命令寄存器
              IAP_TRIG = 0;                               //清除触发寄存器
              IAP_ADDRH = 0x80;                           //将地址设置到非IAP区域
              IAP_ADDRL = 0;
              }
/*-从ISP/IAP/EEPROM区域读取一字节-*/
              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;
               }
/*-写一字节数据到ISP/IAP/EEPROM区域-*/
              void IapProgram(int addr, char dat)
              {
                           IAP_CONTR = 0x80;                           //使能IAP
               IAP_TPS = 12;                               //设置等待参数12MHz
//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功能
              }
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:123
  • 最近打卡:2025-04-29 10:30:51

13

主题

429

回帖

2366

积分

超级版主

积分
2366
发表于 2025-4-10 14:17:59 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 23:27 , Processed in 0.107418 second(s), 57 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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