📄 ds1302.c
字号:
#include<reg51.h>
#define uchar unsigned char
uchar dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar disbuf[]={0,0,0};
sbit t_clk=P1^1;
sbit t_io=P1^0;
sbit t_rst=P1^2;
sbit ACC7=ACC^7;
uchar second=0;minute=0;hour=0;
void input1byte(uchar udata) //写入一个字节;
{uchar i;
ACC=udata;
for(i=8;i>0;i--)
{t_io=ACC^0;
t_clk=1;
t_clk=0;
ACC>>=1;
}
}
uchar output1byte()
{uchar i;
for(i=8;i>0;i--)
{ACC>>=1;
ACC7=t_io;
t_clk=1;
t_clk=0;
}
return ACC;
}
uchar read_1302(uchar addr)
{uchar udata;
t_rst=0;
t_clk=0;
t_rst=1;
input1byte(addr);
udata=output1byte();
t_clk=1;
t_rst=0;
return udata;
}
void v_1302()
{uchar i;
uchar addr=0x81;
for(i=0;i<3;i++)
{disbuf[i]=read_1302(addr);
addr+=2;
}
second=disbuf[0];
minute=disbuf[1];
hour=disbuf[2];
}
void delay(uchar i)
{uchar j;
for(;i>0;i--)
for(j=248;j>0;j--);
}
void main(void)
{uchar m=5;
while(1)
{v_1302();
P0=dispcode[second%10];
P2=0x1f;
delay(m);
P0=dispcode[second/10];
P2=0x2f;
delay(m);
P0=dispcode[minute%10];
P2=0x37;
delay(m);
P0=dispcode[minute/10];
P2=0x3b;
delay(m);
P0=dispcode[hour%10];
P2=0x3d;
delay(m);
P0=dispcode[hour/10];
P2=0x3e;
delay(m);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -