单片机 DS1302

来源:百度知道 编辑:UC知道 时间:2024/05/24 05:08:41
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit ACC0=ACC^0;
sbit ACC7=ACC^7;

sbit T_RES=P3^7; // DS1302时钟信号 7脚
sbit T_CLK=P1^6; // DS1302数据信号 6脚
sbit T_IO=P3^2; // DS1302片选 5脚
void write_ds(uchar waddr,uchar wdata);
uchar read_ds(uchar raddr);
void Init1302(void);
void delay(uchar z);
void set_time(uchar *sj);
uchar code shijian[]={0x55,0x55,0x08,0x14,0x06,0x02,0x29};
uchar code shuzi[]={0XFC,0X60,0XDA,0XF2,0X66,0XB6,0XBE,0Xe0,0XFE,0XF6};//数字编码
uchar x,y;
uchar miao;
void main()
{
uchar j;
Init1302();//初始化
set_time(&shijian[0]);//设定时间
miao=read_ds(0X81);//读取秒数
y=miao%10;
P0=shuzi[y];//在数码管显示出秒的个位,数码管直接与P1相连
}

void write_ds(uchar waddr,uchar wdata) //写入数据到1302
{
uchar i;
T

/********************************************************************
*
* 名称: DS1302_InputByte()
* 功能: 往DS1302写入1Byte数据
* 输入: ucDa 写入的数据
***********************************************************************/
void DS1302_InputByte(unsigned char ucDa)
{
unsigned char i;
unsigned char temp;
temp = ucDa;
for(i=8; i>0; i--)
{
T_IO = temp&0x01;
T_CLK = 1;
T_CLK = 0;
temp = temp >> 1;
}
}
/********************************************************************
*
* 名称: DS1302_OutputByte()
* 功能: 从DS1302读取1Byte数据
***********************************************************************/
unsigned char DS1302_OutputByte(void)
{
unsigned char i;
unsigned char temp;
temp=0;
for(i=0; i<8;i++)
{
T_CLK = 0;
if(T_IO!=0) temp|=(1<<i);
T_CLK = 1;
}
re