智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1396|回复: 4
打印 上一主题 下一主题

[讨论] 求 9S12G128 eeprom 代码

[复制链接]

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
473
威望
273
贡献
174
兑换币
52
注册时间
2010-7-15
在线时间
13 小时
跳转到指定楼层
1#
发表于 2013-9-27 09:36:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,关于MC9S12G128 的参考资料太少了,现在最近在研究MC9S12G128  但关于eeprom的操作一点资料也没找到,求哪位大侠发个例子学习学习,多谢了
//对 EEPROM 初始化
void EEPROM_init(void){
   ECLKDIV=0x4A;                   // 晶振:16M/8=2M,2M/(1+10)=181.8k: 150k--200k                                    
   ECNFG=0x00;                     // disable eeprom operate interrupt 中断关闭
   while(ECLKDIV_EDIVLD == 0);     // wait stedy  ECLKDIV_EDIVLD为1 表示时钟设置好了
   EPROT_EPOPEN=1;                 //全部EEPROM不保护,0:全部保护
   EPROT_EPDIS=1;                  // 1:EEPROM开放 。 0:保护(但有EPROT[2-0]设定保护范围)
   //EPROT[2-0]保护范围111-000 :512-64B 。从0X7FF顶往下 。
}
//----------------------------------------------------------------------------------------------
void Erase_all_eeprom(void){
   DisableInterrupts;
   while(ESTAT_CBEIF==0);    // ESTAT_CBEIF为1 表示正准备接受命令 。 0:代表缓冲区满 。
//以下4步是固定的
   *(EEPROM_ADDR_BASE)=0xFFFF; // 先向地址中写入一个字(要编程的数),擦除一般写入0XFF
   ECMD=EEP_Sect_Erase;       //写入命令序列模式字(要擦除还是写入)
   ESTAT_CBEIF=1;             //ESTAT_CBEIF=1 开始命令
   asm nop;
   while(ESTAT_CCIF==0);     // ESTAT_CCIF变1 ,表示命令执行完毕
   
   while(ESTAT_PVIOL);       // ESTAT_PVIOL为1 表示对保护的EEPROM有误操作
   while(ESTAT_ACCERR);      // ESTAT_ACCERR为1 表示非法使用EEPROM
   
   //ESTAT_BLANK 为1是表示命令校验是EEPROM已擦除了
   EnableInterrupts;
}
//----------------------------------------------------------------------------------------------
void Erase_eeprom(unsigned int addr){
   DisableInterrupts;
   while(ESTAT_CBEIF==0);    // ESTAT_CBEIF为1 表示正准备接受命令 。 0:代表缓冲区满 。
//以下4步是固定的
   *(EEPROM_ADDR_BASE+addr)=0xFFFF; // 先向地址中写入一个字(要编程的数),擦除一般写入0XFF
   ECMD=EEP_Word_Erase;       //写入命令序列模式字(要擦除还是写入)
   ESTAT_CBEIF=1;             //ESTAT_CBEIF=1 开始命令
   asm nop;
   while(ESTAT_CCIF==0);     // ESTAT_CCIF变1 ,表示命令执行完毕
   
   while(ESTAT_PVIOL);       // ESTAT_PVIOL为1 表示对保护的EEPROM有误操作
   while(ESTAT_ACCERR);      // ESTAT_ACCERR为1 表示非法使用EEPROM
   
   //ESTAT_BLANK 为1是表示命令校验是EEPROM已擦除了
   EnableInterrupts;
}
//----------------------------------------------------------------------------------------------
void Write_eeprom(unsigned int addr,int data){
   DisableInterrupts;
   while(ESTAT_CBEIF==0);    // ESTAT_CBEIF为1 表示正准备接受命令 。 0:代表缓冲区满 。
//以下4步是固定的
   *(EEPROM_ADDR_BASE+addr)=data; // 先向地址中写入一个字(要编程的数),擦除一般写入0XFF
   ECMD=EEP_Word_Prog;       //写入命令序列模式字(要擦除还是写入)
   ESTAT_CBEIF=1;             //ESTAT_CBEIF=1 开始命令
   while(ESTAT_CCIF==0);     // ESTAT_CCIF变1 ,表示命令执行完毕
   
   while(ESTAT_PVIOL);       // ESTAT_PVIOL为1 表示对保护的EEPROM有误操作
   while(ESTAT_ACCERR);      // ESTAT_ACCERR为1 表示非法使用EEPROM
   
   //ESTAT_BLANK 为1是表示命令校验是EEPROM已擦除了
   EnableInterrupts;
}
//-----------------------------------------------------------------------------------------------
int Read_eeprom(unsigned int addr){
   int TempData;
   DisableInterrupts;
   TempData=*(EEPROM_ADDR_BASE+addr);    // 读EEPROM的偏移地址的数据      
   EnableInterrupts;
   return(TempData);
}

这是DG128的代码,那g128的是怎么样的呢?

17

主题

778

帖子

0

精华

跨届大侠

教育部高等学校自动化专业教学指导委员会特派员

Rank: 10Rank: 10Rank: 10

积分
9114

活跃会员奖章优秀会员奖章论坛元老奖章在线王奖章资源大师奖章

威望
6932
贡献
266
兑换币
1202
注册时间
2012-3-14
在线时间
958 小时
2#
发表于 2013-9-27 12:10:44 | 只看该作者
留下邮箱
回复 支持 反对

使用道具 举报

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
473
威望
273
贡献
174
兑换币
52
注册时间
2010-7-15
在线时间
13 小时
3#
 楼主| 发表于 2013-9-27 20:09:10 | 只看该作者
多谢这位兄台  nickzmj@163.com  
回复 支持 反对

使用道具 举报

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
473
威望
273
贡献
174
兑换币
52
注册时间
2010-7-15
在线时间
13 小时
4#
 楼主| 发表于 2013-9-28 16:28:02 | 只看该作者
以梦为马 发表于 2013-9-27 12:10
留下邮箱

老大,快发我一下吧  nickzmj@163.com   9S12G128 eeprom 代码
回复 支持 反对

使用道具 举报

13

主题

171

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
威望
716
贡献
447
兑换币
398
注册时间
2013-8-23
在线时间
132 小时
5#
发表于 2013-9-28 18:30:46 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 12:37 , Processed in 0.041199 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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