帮忙看看代码错在哪儿呢
#define uchar unsigned char
#define uint unsigned int
sbit wela=P2^7;
sbit dula=P2^6;
sbit lcdrs=P2^1;
sbit lcdrw=P1^5;
sbit lcden=P1^6;
sbit ds1302scl=P3^4;
sbit ds1302rst=P3^5;
sbit ds1302dat=P3^6;
uchar num,shi,fen,miao;
uchar code table1[]="2013-05-02 Tue";
uchar code table2[]=" 00:00:00";
void delay(uchar z)
{
uchar x,y;
for(x=110;x>0;x--)
for(y=z;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar dat)
{
lcdrs=1;
lcden=0;
P0=dat;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void reset1302()
{
ds1302rst=0;
ds1302scl=0;
ds1302rst=1;
}
void write1302_byte(uchar dat)
{
uchar i;
reset1302();
for(i=0;i<8;i++)
{
ds1302dat=dat&0x01;
ds1302scl=1;
delay(1);
ds1302scl=0;
dat=dat>>1;
}
}
void write1302_real(uchar com, uchar dat)
{
reset1302();
write1302_byte(com);
delay(1);
write1302_byte(dat);
}
uchar read1302_byte()
{
uchar i,j;
reset1302();
ds1302scl=1;
for(i=0;i<8;i++)
{
ds1302scl=0;
j=j>>1;
if(ds1302dat==1)
j=j|0x80;
else
j=j&0x7f;
delay(1);
ds1302scl=1;
}
return j;
}
uchar read1302_real(uchar add)
{
uchar dsdat;
reset1302();
write1302_byte(add);
dsdat=read1302_byte();
return dsdat;
}
void ds1302_init()
{
write1302_real(0x8e,0X00); //禁止写保护
write1302_real(0x80,0x22); //秒位初始化
write1302_real(0x82,0x00); //分钟初始化
write1302_real(0x84,0x00); //小时初始化
write1302_real(0x8e,0x80); //允许写保护
}
void write_sfm(uchar add,uchar dat)
{
uchar shi,ge;
shi=dat/10;
ge=dat%10;
write_com(0x80+0x40+add);
write_data(0x30+shi);
write_data(0x30+ge);
}
void init()
{
wela=0;
dula=0;
lcdrw=0;
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<14;num++)
{
write_data(table1[num]);
delay(2);
}
write_com(0x80+0x40);
for(num=0;num<11;num++)
{
write_data(table2[num]);
delay(2);
}
}
void main()
{
init();
ds1302_init();
while(1)
{
miao=read1302_real(0x81);
fen=read1302_real(0x83);
shi=read1302_real(0x85);
write_sfm(9,miao);
write_sfm(6,fen);
write_sfm(3,shi);
}
}
显示内容是<7:<7:<7
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit wela=P2^7;
- sbit dula=P2^6;
- sbit lcdrs=P2^1;
- sbit lcdrw=P1^5;
- sbit lcden=P1^6;
- sbit scl=P3^4;
- sbit rst=P3^5;
- sbit sdat=P3^6;
- uchar num,shi,fen,miao;
- uchar code table1[]="2013-05-02 Tue";
- uchar code table2[]=" 00:00:00";
- void delay(uchar z)
- {
- uchar x,y;
- for(x=110;x>0;x--)
- for(y=z;y>0;y--);
- }
- void delayus(uchar z)
- {
- while(z--);
- }
- void write_com(uchar com)
- {
- lcdrs=0;
- lcden=0;
- P0=com;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void write_data(uchar dat)
- {
- lcdrs=1;
- lcden=0;
- P0=dat;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void write_1302(uchar com, uchar dat)
- {
-
- uchar i;
- rst=0;
- scl=0;
- rst=1;
- for(i=0;i<8;i++)
- {
- sdat=com&0x01;
- scl=1;
- delayus(3);
- scl=0;
- com=com>>1;
- }
- delayus(2);
- for(i=0;i<8;i++)
- {
- sdat=dat&0x01;
- scl=1;
- delayus(3);
- scl=0;
- dat=dat>>1;
- }
-
- }
- uchar read_1302(uchar com)
- {
- uchar i,dsdat,temp;
- rst=0;
- scl=0;
- rst=1;
- for(i=0;i<8;i++)
- {
- sdat=com&0x01;
- scl=1;
- delayus(3);
- scl=0;
- com=com>>1;
- }
- scl=1;
- delayus(2);
- for(i=0;i<8;i++)
- {
- scl=0;
- dsdat=dsdat>>1;
- if(sdat==1)
- dsdat=dsdat|0x80;
- else
- dsdat=dsdat&0x7f;
- delayus(3);
- scl=1;
- }
- scl=0;
- temp=dsdat/10;
- dsdat=dsdat%10;
- dsdat=temp*16+dsdat;
- return dsdat;
- }
- void ds1302_init()
- {
- write_1302(0x8e,0X00); //禁止写保护
- write_1302(0x80,0x22); //秒位初始化
- write_1302(0x82,0x01); //分钟初始化
- write_1302(0x84,0x22); //小时初始化
- write_1302(0x8e,0x80); //允许写保护
- }
- void write_sfm(uchar add,uchar dat)
- {
- uchar shi,ge;
- shi=dat/10;
- ge=dat%10;
- write_com(0x80+0x40+add);
- write_data(0x30+shi);
- write_data(0x30+ge);
- }
- void init()
- {
- wela=0;
- dula=0;
- lcdrw=0;
- lcden=0;
- write_com(0x38);
- write_com(0x0c);
- write_com(0x06);
- write_com(0x01);
- write_com(0x80);
- for(num=0;num<14;num++)
- {
- write_data(table1[num]);
- delay(2);
- }
- write_com(0x80+0x40);
- for(num=0;num<11;num++)
- {
- write_data(table2[num]);
- delay(2);
- }
- }
- void main()
- {
- init();
- ds1302_init();
- while(1)
- {
- miao=read_1302(0x81);
- fen=read_1302(0x83);
- shi=read_1302(0x85);
- write_sfm(9,miao);
- write_sfm(6,fen);
- write_sfm(3,shi);
- }
- }
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit wela=P2^7;
sbit dula=P2^6;
sbit lcdrs=P2^1;
sbit lcdrw=P1^5;
sbit lcden=P1^6;
sbit scl=P3^4;
sbit rst=P3^5;
sbit sdat=P3^6;
uchar num,shi,fen,miao;
uchar code table1[]="2013-05-02 Tue";
uchar code table2[]=" 00:00:00";
void delay(uchar z)
{
uchar x,y;
for(x=110;x>0;x--)
for(y=z;y>0;y--);
}
void delayus(uchar z)
{
while(z--);
}
void write_com(uchar com)
{
lcdrs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar dat)
{
lcdrs=1;
lcden=0;
P0=dat;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_1302(uchar com, uchar dat)
{
uchar i;
rst=0;
scl=0;
rst=1;
for(i=0;i<8;i++)
{
sdat=com&0x01;
scl=1;
delayus(3);
scl=0;
com=com>>1;
}
delayus(2);
for(i=0;i<8;i++)
{
sdat=dat&0x01;
scl=1;
delayus(3);
scl=0;
dat=dat>>1;
}
}
uchar read_1302(uchar com)
{
uchar i,dsdat,temp;
rst=0;
scl=0;
rst=1;
for(i=0;i<8;i++)
{
sdat=com&0x01;
scl=1;
delayus(3);
scl=0;
com=com>>1;
}
scl=1;
delayus(2);
for(i=0;i<8;i++)
{
scl=0;
dsdat=dsdat>>1;
if(sdat==1)
dsdat=dsdat|0x80;
else
dsdat=dsdat&0x7f;
delayus(3);
scl=1;
}
scl=0;
temp=dsdat/10;
dsdat=dsdat%10;
dsdat=temp*16+dsdat;
return dsdat;
}
void ds1302_init()
{
write_1302(0x8e,0X00); //禁止写保护
write_1302(0x80,0x22); //秒位初始化
write_1302(0x82,0x01); //分钟初始化
write_1302(0x84,0x22); //小时初始化
write_1302(0x8e,0x80); //允许写保护
}
void write_sfm(uchar add,uchar dat)
{
uchar shi,ge;
shi=dat/10;
ge=dat%10;
write_com(0x80+0x40+add);
write_data(0x30+shi);
write_data(0x30+ge);
}
void init()
{
wela=0;
dula=0;
lcdrw=0;
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<14;num++)
{
write_data(table1[num]);
delay(2);
}
write_com(0x80+0x40);
for(num=0;num<11;num++)
{
write_data(table2[num]);
delay(2);
}
}
void main()
{
init();
ds1302_init();
while(1)
{
miao=read_1302(0x81);
fen=read_1302(0x83);
shi=read_1302(0x85);
write_sfm(9,miao);
write_sfm(6,fen);
write_sfm(3,shi);
}
}