找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2897|回复: 6
打印 上一主题 下一主题
收起左侧

求助,STC单片机eeprom问题

[复制链接]
跳转到指定楼层
楼主
ID:95898 发表于 2015-11-15 19:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用STC10F08XE编写eeprom时钟程序,用0000h存储的数据,一上电就显示2,换成其它存储空间的话就从0开始,不知道为什么,求大神解释
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:95898 发表于 2015-11-15 19:13 | 只看该作者
void main()
{
           init();
        //   d1=1;
                  sec=Iapreadbyte(0x0001);
                 if(sec>=60)
                        sec=0;
                min=Iapreadbyte(0x0002);
                   if(min>=60)
                        min=0;
              while(1)
   {  
                   min_h=min/10;
                min_l=min%10;
                sec_h=sec/10;
                sec_l=sec%10;                                  
                alarm_min_h=alarm_min/10;
                alarm_min_l=alarm_min%10;
                alarm_sec_h=alarm_sec/10;
                alarm_sec_l=alarm_sec%10;

            ring();
                         
            keyscan();

            if(k4num==0)
                     display(min_h,min_l,sec_h,sec_l);
            else
                 display(alarm_min_h,alarm_min_l,alarm_sec_h,alarm_sec_l);
   }
}

void t0() interrupt 1        //50ms定时
{
        TH0=(65536-45872)/256; //50ms需计数N=45872=50ms/(12/11.0592)us
        TL0=(65536-45872)%256;
        num_50ms++;

                if(num_50ms==20) //计时1s
        {

            num_50ms=0;
                   sec++;
                Iaperasesector(0x0001);// 数据存储器的擦出是按扇区擦除的
                Iapprogrambyte(0x0001,sec);
                  if(sec==60)
            {
                  sec=0;
          min++;
              if(min==60)
                         min=0;
            }
                Iaperasesector(0x0002);//数据存储器的擦出是按扇区擦除的
                Iapprogrambyte(0x002,min);  
                 }
}
回复

使用道具 举报

板凳
ID:95898 发表于 2015-11-15 19:19 | 只看该作者
  1. void main()
  2. {
  3.            init();
  4.         //   d1=1;
  5.                   sec=Iapreadbyte(0x0001);
  6.                  if(sec>=60)
  7.                         sec=0;
  8.                 min=Iapreadbyte(0x0002);
  9.                    if(min>=60)
  10.                         min=0;
  11.               while(1)
  12.    {  
  13.                    min_h=min/10;
  14.                 min_l=min%10;
  15.                 sec_h=sec/10;
  16.                 sec_l=sec%10;                                  
  17.                 alarm_min_h=alarm_min/10;
  18.                 alarm_min_l=alarm_min%10;
  19.                 alarm_sec_h=alarm_sec/10;
  20.                 alarm_sec_l=alarm_sec%10;

  21.             ring();
  22.                          
  23.             keyscan();

  24.             if(k4num==0)
  25.                      display(min_h,min_l,sec_h,sec_l);
  26.             else
  27.                  display(alarm_min_h,alarm_min_l,alarm_sec_h,alarm_sec_l);
  28.    }
  29. }

  30. void t0() interrupt 1        //50ms定时
  31. {
  32.         TH0=(65536-45872)/256; //50ms需计数N=45872=50ms/(12/11.0592)us
  33.         TL0=(65536-45872)%256;
  34.         num_50ms++;

  35.                 if(num_50ms==20) //计时1s
  36.         {

  37.             num_50ms=0;
  38.                    sec++;
  39.                 Iaperasesector(0x0001);// 数据存储器的擦出是按扇区擦除的
  40.                 Iapprogrambyte(0x0001,sec);
  41.                   if(sec==60)
  42.             {
  43.                   sec=0;
  44.           min++;
  45.               if(min==60)
  46.                          min=0;
  47.             }
  48.                 Iaperasesector(0x0002);
  49.                 Iapprogrambyte(0x002,min);  
  50.                  }
  51. }
复制代码
回复

使用道具 举报

地板
ID:60379 发表于 2015-11-15 19:57 | 只看该作者
使用软件仿真或硬件仿真查找下错误具体位置
回复

使用道具 举报

5#
ID:79544 发表于 2015-11-16 14:54 | 只看该作者
换块芯片试试。
回复

使用道具 举报

6#
ID:237221 发表于 2017-10-4 12:49 | 只看该作者
proteus 能仿真eeprom
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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