找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

大家帮忙一起讨论一下

[复制链接]
admin 发表于 2012-9-3 02:15:18 | 显示全部楼层 |阅读模式

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

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

×
这是一个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)
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-23 22:55 , Processed in 0.062275 second(s), 12 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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