打印
[PIC®/AVR®/dsPIC®产品]

请教PIC12F683的E2PROM问题

[复制链接]
1390|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huanle1030|  楼主 | 2013-7-30 20:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位,我用pic12f683控制在规定时间内GP2输出高电平,超出时间一直输出低电平,假设时间是30s,不知道怎么回事,小弟写的总是断电后再次上电就变成低电平了(在30s内),帮忙看下我写的主函数,有什么不对的吗?
void main()
{
  init();      //配置时钟和GPIO
  Timer1_Init();
  ISR_Timer1();
  if(read_e2prom(20)!=0)  //避免第一次上电读出的sec出错
  {
     write_e2prom(20,0);
     h.hour=0;              //初始值为0
  }
  else
  {
sec=read_e2prom(10);     //读取EEPROM中的数据
//min=read_e2prom(11);
   // h.t[0]=read_e2prom(12);   
    //h.t[1]=read_e2prom(13);
  }
  while(1)
  {
    if(sec>30)
    {  
      TMR1ON=0;
      GP2=0;     
    }
    else
    {
    GP2=1;
      write_e2prom(10,sec);
      //write_e2prom(11,min);
      //write_e2prom(12,h.t[0]);
     // write_e2prom(13,h.t[1]);
    }
  }
}

void write_e2prom(u8 add,u8 dat)
{
  u8 gie;
  gie=GIE;
  EEADR=add;  //写入地址
  EEDAT=dat;  //写入数据
  WREN=1;   //使能写周期
  GIE=0;      //关闭所有中断
  EECON2=0X55;
  EECON2=0XAA;
  WR=1;
  while(WR==1);//等待写完
  GIE=gie;    //恢复中断
  WREN=0;
}
u8 read_e2prom(u8 add)
{
  u8 d;
  EEADR=add;     //写入要读的地址
  RD=1;          //开始读取数据
  while(RD==1);  //等待读完
  d=EEDAT;
  return d;  
}
沙发
yewuyi| | 2013-7-31 09:48 | 只看该作者
1、输出高低电平关EEPROM啥?
2、向EEPROM发送写命令必须保证有足够的写入时间。

使用特权

评论回复
板凳
Rain_King| | 2013-11-22 09:06 | 只看该作者
不知道你问题搞定了没....其实我也没有看懂你神马问题..............

使用特权

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

本版积分规则

6

主题

21

帖子

1

粉丝