英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4100|回复: 1
打印 上一主题 下一主题

关于C语言下EEPROM的读写问题

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-25 15:43:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是PIC16F877A单片机,仿真器是高奇的picmate2002,现在欲验证下写进去的数据和读出来的数据是不一样,特意编写如下程序,可是程序编译成功了,但不论写入何数据,读出来的数据都是00,这是什么原因啊?难道没写进去?程序如下,望大虾们帮忙看看,多谢,急啊!
#include   <pic.h>
unsigned char eeprom_read(unsigned char addr);
void eeprom_write(unsigned char addr,unsigned char value);
void eeprom_write(unsigned char addr,unsigned char value)
{
EEADR=addr;
EEDATA=value;
EEPGD=0;
WREN=1;
EECON2=0x55;
EECON2=0xaa;
WR=1;
do {;}
while(WR==1);
  WREN=0;//写保护
}
unsigned char eeprom_read(unsigned char addr)//片内EEPROM的读取
{
unsigned char rd_data;
EEADR=addr;
EEPGD=0;
RD=1;
rd_data=EEDATA;//读取EEDATA的内容
return(rd_data);
}
main()
{
   unsigned  char  data1,data2;
   unsigned  char  address;
   address=0x80;
   data1=0x50;
   eeprom_write(address,data1);
   data2=eeprom_read(address);
NOP();
}
2#
 楼主| 发表于 2009-4-25 15:43:24 | 只看该作者
内存调用是这样的!
#include   <pic.h>


void eeprom_write(unsigned char address,unsigned char datavalue)
{
asm("CLRWDT");
eeprom_write(address,datavalue);
while(WR == 1)
{
  asm("CLRWDT");
}
}

unsigned char eeprom_read(unsigned char address)
{
return EEPROM_READ(address);
}

main()
{
   unsigned  char  data1,data2;
   unsigned  char  address;
   address=0x80;
   data1=0x50;
   eeprom_write(address,data1);
   data2=eeprom_read(address);
}
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-4-30 16:39 , Processed in 0.053836 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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