怎样把设定的时间存入eeprom中,重新上电后直接调取

2019-03-24 17:41发布

#include<reg51.h>
sbit kh=P3^7;//时
sbit km=P3^6;//分
sbit ks=P3^5;//秒
sbit st=P3^4;//开始
sbit b=P2^0;//指示
unsigned char  table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char i=0,hour=0,minute=0,second=0;
void delayms(unsigned int x)
{
        unsigned char a=160;
        while(x--)
        {
                while(a--);
                a=160;
        }
}

main()
{
                TH0=(65536-50000)/256;
                TL0=(65536-50000)%256;
                TMOD=1;
                TR0=0;
                ET0=1;
                EA=1;
                while(1)
                {
                                P0=table[hour/10];
                                P1=~32;
                                delayms(1);
                                P1=0xff;
                       
                                P0=table[hour%10];
                                P1=~16;
                                delayms(1);
                                P1=0xff;
                       
                                P0=table[minute/10];
                                P1=~1;
                                delayms(1);
                                P1=0xff;
                       
                                P0=table[minute%10];
                                P1=~2;
                                delayms(1);
                                P1=0xff;
                       
                                P0=table[second/10];
                                P1=~4;
                                delayms(1);
                                P1=0xff;
                               
                                P0=table[second%10];
                                P1=~8;
                                delayms(1);
                                P1=0xff;
                               
                                if(!kh)
                                {
                                                delayms(200);
                                                hour++;
                                                if(hour>23)
                                                        hour=23;
                                }
                                else if(!km)
                                {
                                                delayms(200);
                                                minute++;
                                                if(minute>59)
                                                        minute=59;
                                               
                                }
                                else if(!ks)
                                {
                                                delayms(200);
                                                second++;
                                                if(second>59)
                                                        second=59;
                                               
                                }
                                if(!st)
                                {
                                                delayms(200);
                                                TR0=1;
                                }
                                if(TR0==1&&hour==0&&minute==0&&second<3)
                                                b=!b;
                                delayms(1);
                }
}

void   t0() interrupt 1  
{
                        TH0=(65536-50000)/256;
                        TL0=(65536-50000)%256;
                        i++;
                        if(i>=20)
                        {
                                        i=0;
                                        second--;
                                        if(second>59)
                                        {
                                                        second=59;
                                                        minute--;
                                                        if(minute>59)
                                                        {
                                                                        minute=59;
                                                                        hour--;
                                                                        if(hour>23)
                                                                        {
                                                                                        hour=0;
                                                                                        minute=0;
                                                                                        second=0;
                                                                                        TR0=0;
                                                                        }
                                                        }
                                        }
                        }
                       
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
ywlzh
1楼-- · 2019-03-24 18:02
 精彩回答 2  元偷偷看……
ywlzh
2楼-- · 2019-03-24 19:59
找到了 我这两份是stc单片机的EEPROM的程序
先给一份官方的程序,从资料里直接复制的
IAPeraseOrWrite.c (3.52 KB, 下载次数: 27) 2016-4-29 16:40 上传 点击文件名下载附件
然后是我自己调试用在了自己的东西上的程序,好怀念大学的日子
51内核单片机闪存的用法.c (4.29 KB, 下载次数: 38) 2016-4-29 16:41 上传 点击文件名下载附件

zhengqiang69
3楼-- · 2019-03-25 00:21
ywlzh 发表于 2016-4-29 16:41
找到了 我这两份是stc单片机的EEPROM的程序
先给一份官方的程序,从资料里直接复制的

然后是我自己调试 ...

我才开始学,谢谢了
zhengqiang69
4楼-- · 2019-03-25 05:15
 精彩回答 2  元偷偷看……
吴下阿蒙
5楼-- · 2019-03-25 08:21
去STC官网找示例,里面的资料很全的。

一周热门 更多>