DS1302驱动程序详解
DS1302驱动程序详解
DS1302驱动程序详解
DS1302引脚介绍
特性介绍
驱动程序详解
sbit IO=P1^0; //DS1302数据线
sbit SCLK=P1^1; //DS1302时钟线
sbit RST=P1^2; //DS1302复位线
uchar WEEK[][4]={"SUN","***","MON","TUS","WEN","THU","FRI","SAT"}; //亦可定义成指针数组*WEEK[]
uchar LCD_DSY_BUFFER1[]={"DATE 00-00-00 "};
uchar LCD_DSY_BUFFER2[]={"TIME 00:00:00 "};
uchar DateTime[7];
void Initialize_LCD();
void Display_LCD_String(uchar p,uchar *s);
void DelayMS(uint ms);
//------------------------------------------------------------------
//向DS1302写入一个字节
//------------------------------------------------------------------
void Write_A_Byte_TO_DS1302(uchar x)
{
uchar i;
SCLK=0; //拉低SCLK,为脉冲上升沿写入数据做好准备
for (i=0;i<8;i++)
{
IO=x & 0x01; //取出x的第0位数据写入1302
SCLK=1; //上升沿写入数据
SCLK=0; //重新拉低SCLK,形成脉冲
x >>=1; //将x的各数据位右移1位,准备写入下一个数据位
}
}
//------------------------------------------------------------------
//从DS1302读取一个字节,
//注意:DS1302中所存放的数据是BCD码,在读写时要注意转换
//
//------------------------------------------------------------------
uchar Get_A_Byte_FROM_DS1302()
{
uchar i,b=0x00;
for (i=0;i<8;i++)
{
b |= _crol_((uchar)IO,i);//将uchar类型的IO数据左移i位
SCLK=1; //将SCLK置于高电平,为下降沿读出


