电子产业一站式赋能平台

PCB联盟网

搜索
查看: 1734|回复: 0
收起左侧

单片机新手–ds1302-数字时钟 求找错

[复制链接]

571

主题

910

帖子

4781

积分

四级会员

Rank: 4

积分
4781
发表于 2023-4-29 14:03:31 | 显示全部楼层 |阅读模式
#include <REGX52.H>
#include "LCD1602.h"
void Delaylms(unsigned int count)
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
#ifndef _REAL_TIMER_DS1302_2003_7_21_
#define _REAL_TIMER_DS1302_2003_7_21_
sbit DS1302_CLK = P1^6;
sbit DS1302_IO  = P1^7;
sbit DS1302_RST = P1^5;
sbit ACC0 = ACC^0; sbit ACC7 = ACC^7;
typedef struct _SYSTEMTIME_
{
unsigned char Second; unsigned char Minute;
unsigned char Hour;   unsigned char  Week;
unsigned char Day;    unsigned char Month;
unsigned char Year;   unsigned char DateString[9];
unsigned char Timestring[9];
}SYSTEMTIME;
#define AM[X] X
#define PM[X] (X+12)
#define DS1302_SECOND 0x80
#define DS1302_MINUTE 0x82
#define DS1302_HOUR   0x84
#define DS1302_WEEK   0x8A
#define DS1302_DAY    0x86
#define DS1302_MONTH  0x88
#define DS1302_YEAR   0x8C
#define DS1302_RAM[X]  (0xC0+(X)*2)
void DS1302InputByte(unsigned char d)
{
unsigned char i;
ACC = d;
for(i=8; i>0; i--)
{
DS1302_IO =ACC0; DS1302_CLK = 1;
DS1302_CLK = 0;  ACC =ACC >> 1;
}
}
unsigned char DS1302OutputByte(void)
{
unsigned char i;
for(i=8; i>0; i--)
{
ACC = ACC >>1; ACC7 = DS1302_IO;
DS1302_CLK = 1; DS1302_CLK = 0;
}
return(ACC);
}
void Write1302(unsigned char ucAddr,unsigned char ucDa)
{
DS1302_RST = 0;  DS1302_CLK = 0;
DS1302_RST = 1; DS1302InputByte(ucAddr);
DS1302InputByte(ucDa);
DS1302_CLK = 1; DS1302_RST = 0;
}
unsigned char Read1302(unsigned char ucAddr)
{
unsigned char ucData;
DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1;
DS1302InputByte(ucAddr|0x01);
ucData = DS1302OutputByte();
DS1302_CLK = 1; DS1302_RST = 0;
return(ucData);
}
void DS1302_SetProtect(bit flag)
{
if(flag) Write1302(0x8E,0x10);
else     Write1302(0x8E,0x00);
}
void DS1302_SerTime(unsigned char Address, unsigned char Value)
{
DS1302_SetProtect(0);
Write1302(Address,((Value)/10<<4 | (Value%10)));
}
void DS1302_GetTime(SYSTEMTIME *Time)
{
unsigned char ReadValue;
ReadValue = Read1302(DS1302_SECOND);
Time->Second
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表