智能车制作
标题:
求 9S12G128 eeprom 代码
[打印本页]
作者:
nickzmj
时间:
2013-9-27 09:36
标题:
求 9S12G128 eeprom 代码
大家好,关于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的是怎么样的呢?
作者:
以梦为马
时间:
2013-9-27 12:10
留下邮箱
作者:
nickzmj
时间:
2013-9-27 20:09
多谢这位兄台
nickzmj@163.com
作者:
nickzmj
时间:
2013-9-28 16:28
以梦为马 发表于 2013-9-27 12:10
留下邮箱
老大,快发我一下吧
nickzmj@163.com
9S12G128 eeprom 代码
作者:
零距离
时间:
2013-9-28 18:30
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2