打印
[AVR单片机]

请求高手帮助看看,程序错在哪里?

[复制链接]
666|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hbxfluo|  楼主 | 2016-6-30 15:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

发表于 1 秒前 | 只看该作者 |倒序浏览 |阅读模式



void Write_EEP_Byte(unsigned int uiEEP_Add ,unsigned char ucEEP_Byte)
{
   while(EECR & (1<<EEWE))     //等待写完成
  EEAR=uiEEP_Add;             //地址送入
  EEDR=ucEEP_Byte;            //数据送入
  EECR |= (1<<EEMWE);         //主写使能
  EECR |= (1<<EEWE);          //写使能
}
/*********片内EEProm_Word写函数**************/
void Write_EEP_Word(unsigned int uiEEP_Add ,unsigned int uiEEP_Word)
{
unsigned char temp_byte;  
temp_byte=(uiEEP_Word>>8);                  //数据右移8位产生高字节
Write_EEP_Byte(uiEEP_Add ,temp_byte);       //先写入高字节  
delay_ms(10);
temp_byte=uiEEP_Word;                       // 产生低字节
Write_EEP_Byte((uiEEP_Add+1) ,temp_byte);   //再写入低字节
}

大家帮忙看看,程序错在什么地方了?程序是写MEGA16单片机内部处事的eeprom,字节能写入,但word数据写入不成功。错在在在何处?本人搞几天也不明白。特求助高手?

相关帖子

沙发
huangxz| | 2016-6-30 22:03 | 只看该作者
看样子是你写入低字节的时候,delay的不够

使用特权

评论回复
板凳
anycrying| | 2016-7-1 17:24 | 只看该作者
数据,地址送入后要延时一下再写使能。具体至少延时多长时间,请看它的读写时序图。

使用特权

评论回复
地板
lnulibin| | 2016-7-2 08:16 | 只看该作者
本帖最后由 lnulibin 于 2016-7-2 08:19 编辑

void Write_EEP_Byte(unsigned int uiEEP_Add ,unsigned char ucEEP_Byte)
{
   while(EECR & (1<<EEWE))     //等待写完成,此条语句后面应该加一个分号。
  EEAR=uiEEP_Add;             //地址送入
  EEDR=ucEEP_Byte;            //数据送入
  EECR |= (1<<EEMWE);         //主写使能
  EECR |= (1<<EEWE);          //写使能
}为严谨起见,不要在等待时,频繁向地址寄存器中写入地址。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

20

帖子

0

粉丝