全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

大家帮忙一起讨论一下

[复制链接]
1289 0

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
这是一个at24c04的程序,在编译完后,第二次上电却从初始化开始而不是从24c04的读出继续。
请大家帮忙指导一下,我的主要目的就是当我第二次关掉主电源后继续上一次的显示。谢谢!!!!
程序;//按键次数显示
/*按键:ad0809,da0832即s17和s21必须关闭
先把s12,s13,s14打到左边,为了断开与adc0809 */
#include<AT89X51.H>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar a,tt,temp,b,num;
uchar table[]={
0x3f,0x06,0x5b,
0x4f,0x66,
0x6d,0x7d,0x07,
0x7f,0x6f
};
sbit k13=P1^7; //按键
sbit lcd=P2^7; //标志灯
sbit wp=P1^0;
sbit scl=P1^1;
sbit sda=P1^2;
void delayus()
{
_nop_();
_nop_();
_nop_();
_nop_();
}
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init() //初始化
{
wp=0; //wp为写保护位
scl=1;
delayus(); //
sda=1;
delayus(); //
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //开总开关
ET0=1; //开分开关
TR0=1; //启动
}
void star()
{
sda=1;
scl=1;
delayus();
sda=0;
delayus();
}
void stop()
{
sda=0;
scl=1;
delayus();
sda=1;
delayus();
}
void yingda()
{
uchar t0;
scl=1;
delayus();
while((sda==1)&&(t0<250))t0++;
scl=0;
delayus();
}
void write_byte(uchar byte)
{
uchar temp,writenum;
temp=byte;
for(writenum=8;writenum>0;writenum--)
{
temp=temp<<1;
scl=0;
delayus();
sda=CY;
scl=1;
delayus();
scl=0;
delayus();
}
scl=0;
delayus();
sda=1;
}
uchar read_byte()
{
uchar readnum,rad;
scl=0;
sda=1;
delayus();
for(readnum=8;readnum>0;readnum--)
{
scl=1;
rad=(rad<<1)|sda ;
scl=0;
delayus();
}
return(rad);
}
void write(uchar add,uchar date)
{
star();
write_byte(0xa0);
yingda();
write_byte(add);
yingda();
write_byte(date);
yingda();
stop();
delayms(5);
}

uchar read(uchar add)
{
uchar shuju ;
star();
write_byte(0xa0);
yingda();
write_byte(add);
yingda();
star();
write_byte(0xa1);
yingda();
shuju=read_byte();
stop();
return(shuju);
}

void main()
{
init();
for(a=0;a<10;a++)
{
write(a,table[a]);
}
//write(a,0x00);
for(b=0;b<10;b++)
{
table=read(b);
}
while(1)
{
}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
P2=0x01;
P0=table[num];
if(tt==20)
{
tt=0;
num++;
write(num,table[num]);
if(num==10)
num=0;
}
}


电路原理图.rar (123.5 KB, 下载次数: 0)

举报

回复
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表